var ie = false;
var ns = false;
document.all ? ie = true : (document.getElementById ? ns = true : ns = false);

/* Utils functions */

function go(url)
{
	location.href = url;
}

function logout(nameApp)
{
	document.location.href = nameApp + "ControlLogin.cgi?id=-1"
}

function swapImg(eleImg, img)
{
	document.images[eleImg].src = img;
}

function putFocus(nameForm, nameEle)
{
	eval("document.forms['" + nameForm + "'].elements['" + nameEle + "'].focus();");
}

function putStatus(cad)
{
	window.status = cad;
}

function doValSubmit(nameForm)
{
	if(validateForm(nameForm))
		doSubmit(nameForm);
}

function doSubmit(nameForm)
{
	setTimeout("document.forms['" + nameForm + "'].submit()", 500);
	
}

function doConfirmSubmit(msg, nameForm)
{
	if(confirm(msg))
		setTimeout("document.forms['" + nameForm + "'].submit()", 500);
	else
		return false;
}

function updateSelInHidden(form, origenSel, destinoEle)
{
	var indexSel = document.forms[form].elements[origenSel].selectedIndex;
	document.forms[form].elements[destinoEle].value = document.forms[form].elements[origenSel].options[indexSel].value;
}

function getIndexSelValue(form, eleSel, valueOption)
{
	for(var i=0;i<document.forms[form].elements[eleSel].options.length;i++)
	{
		if(document.forms[form].elements[eleSel].options[i].value == valueOption)
			return i;
	}
	
	return 0;
}

function startsWith(cadSource, cadComp)
{
	return cadSource.substring(0, cadComp.length) == cadComp;
}

function getValueSelected(form, eleSel)
{
	var indexSel = document.forms[form].elements[eleSel].selectedIndex;
	return document.forms[form].elements[eleSel].options[indexSel].value;
}

function getValueChecked(form, eleRadio) {
	for(var i=0;i<document.forms[form].elements[eleRadio].length;i++) {
		if(document.forms[form].elements[eleRadio][i].checked)
			return document.forms[form].elements[eleRadio][i].value;
	}
	
	return null;
}

function setSelectValue(form, eleSel, valueToSel)
{
	var numOptions = document.forms[form].elements[eleSel].options.length;
	
	for(var i=0;i<numOptions;i++)
	{
		if(document.forms[form].elements[eleSel].options[i].value == valueToSel)
		{
			document.forms[form].elements[eleSel].options[i].selected = true;
			break;
		}
	}
}

function resetEle(nameForm, nameEle)
{
	eval("document.forms['" + nameForm + "'].elements['" + nameEle + "'].value = '';");
}

function getDateFormated(fecha, fechaPattern1, fechaPattern2)
{
	var stFecha = new String(fecha);
	var stPattern = new String(fechaPattern1);
	var charSeparator = stPattern.indexOf("/") != -1 ? "/" : (stPattern.indexOf("-") != -1 ? "-" : ".");
	var arrayFecha = stFecha.split(charSeparator);
	var arrayPattern = stPattern.split(charSeparator);
	
	var anio, mes, dia;
	for(var i=0;i<3;i++)
	{
		if(arrayPattern[i] == "YYYY")
			anio = arrayFecha[i];
		else if(arrayPattern[i] == "MM")
			mes = arrayFecha[i];
		else if(arrayPattern[i] == "DD")
			dia = arrayFecha[i];
	}
	
	stPattern = new String(fechaPattern2);
	charSeparator = stPattern.indexOf("/") != -1 ? "/" : (stPattern.indexOf("-") != -1 ? "-" : ".");
	arrayPattern = stPattern.split(charSeparator);
	
	stFecha = new String();
	for(var i=0;i<3;i++)
	{
		if(arrayPattern[i] == "YYYY")
			stFecha += anio;
		else if(arrayPattern[i] == "MM")
			stFecha += mes;
		else if(arrayPattern[i] == "DD")
			stFecha += dia;
		
		if(i < 2)
			stFecha += charSeparator;
	}

	return stFecha;
}

/*
*	Funcion que Trunca Decimales. Parametros Num=Numero con Decimales, ndec n?mero de decimales para truncar
*/
function cutDecimalNumber(num, numDec) {
	numDec++;
	
	var numero = String(num);
	var length = numero.length;
	
	indx = numero.indexOf(".");
	if(indx>0 && (length-indx) > numDec) {
		numero = numero.substr(0, indx) + numero.substr(indx, numDec);
	}
	
	return parseFloat(numero);
}

function setNumberFormat(form, ele)
{
	var regExp = new RegExp("\\$|\\,", "g");
	document.forms[form].elements[ele].value = document.forms[form].elements[ele].value.replace(regExp, "");
	// Validate for empty values
	if(isEmpty(document.forms[form].elements[ele].value))
		document.forms[form].elements[ele].value = "0.00";
	// Validate if is a number
	if(!isNumber(document.forms[form].elements[ele].value))
		document.forms[form].elements[ele].value = "0.00";
	// Validate for init zeros
	if(document.forms[form].elements[ele].value.indexOf("0") == 0)
		document.forms[form].elements[ele].value = replaceZerosInit(document.forms[form].elements[ele].value);
	// Da formato num?rico
	document.forms[form].elements[ele].value = CurrencyFormatted(document.forms[form].elements[ele].value);
}

function setValNumberFormat(ele)
{
	var regExp = new RegExp("\\$|\\,", "g");
	ele.value = ele.value.replace(regExp, "");
	// Validate for empty values
	if(isEmpty(ele.value))
		ele.value = "0.00";
	// Validate if is a number
	if(!isNumber(ele.value))
		ele.value = "0.00";
	// Validate for init zeros
	if(ele.value.indexOf("0") == 0)
		ele.value = replaceZerosInit(ele.value);
	// Da formato num?rico
	ele.value = CurrencyFormatted(ele.value);
	// Limpia en caso de ceros
	if(Number(ele.value) == 0)
		ele.value = "";
}

function setIntegerNumber(ele)
{
	var regExp = new RegExp("\\$|\\,", "g");
	ele.value = ele.value.replace(regExp, "");
	// Validate for empty values
	if(isEmpty(ele.value))
		ele.value = 0;
	// Validate if is a number
	if(!isNumber(ele.value))
		ele.value = 0;
	// Da el entero menor al n?mero
	ele.value = Math.ceil(Number(ele.value));
	// Limpia en caso de ceros
	if(Number(ele.value) == 0)
		ele.value = "";
}

function replaceZerosInEle(form, ele)
{
	document.forms[form].elements[ele].value = replaceZerosInit(document.forms[form].elements[ele].value);
}

function replaceZerosInit(cad)
{
	var i = 0;
		
	while(i < cad.length)
	{
		if(cad.charAt(i) != '0')
			break;
		i++;
	}
	
	if(parseFloat(cad) == 0)
		return "0.00";
	else if(i == cad.length || cad.length == 0)
		return "0.00";
	else
		return cad.substring(i, cad.length);
}

function CurrencyFormatted(amount)
{
	var regExp = new RegExp("\\$|\\,", "g");
	amount = amount.toString().replace(regExp, "");
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	return s;
}

function getNumberWithFormat(num, symbolMoney)
{
	var regExp = new RegExp("\\$|\\,", "g");
	num = num.toString().replace(regExp, "");
	if(isNaN(num))
		num = "0";
	var sign = (num == (num = Math.abs(num)));
	num = Math.floor(num * 100 + 0.50000000001);
	var cents = num % 100;
	num = Math.floor(num/100).toString();
	if(cents < 10)
		cents = "0" + cents;
	for(var i=0;i<Math.floor((num.length - (1 + i)) / 3);i++)
		num = num.substring(0, num.length - (4*i+3)) + ',' + num.substring(num.length - (4*i+3));
	
	if(parseFloat(num + '.' + cents) == parseFloat(0))
		sign = true;
	
	if(symbolMoney)
		return (((sign)?'':'-') + '$' + num + '.' + cents);
	else
		return (((sign)?'':'-') + num + '.' + cents);
}

function enabledElements(form)
{
	var numElem = document.forms[form].elements.length;
	
	for(var i=0;i<numElem;i++)
	{
		if(ie)
			document.forms[form].elements[i].disabled = false;
		else if(ns)
			document.forms[form].elements[i].onFocus = null;
	}
}

function disabledElements(form)
{
	var numElem = document.forms[form].elements.length;
	
	for(var i=0;i<numElem;i++)
	{
		if(document.forms[form].elements[i].type != "hidden")
		{
			if(ie)
				document.forms[form].elements[i].disabled = true;
			else if(ns)
				document.forms[form].elements[i].onFocus = document.forms[form].elements[i].onBlur();
		}
	}
}

function showDiv(show, idName)
{
	var visibility = show ? 'visible' : 'hidden';
	
	if(ie)
		eval("document.all." + idName + ".style.visibility = '" + visibility + "';");
	else if(ns)
		eval("document.layers['" + idName + "'].visibility = '" + visibility + "';");
}

function deleteOptions(form, element)
{
	var numOptions = document.forms[form].elements[element].options.length;
	
	for(var i=0;i<numOptions;i++)
		document.forms[form].elements[element].options[0] = null;
}

function addOptions(optionObj, form, element)
{
	for(var i=0;i<optionObj.length;i++)
		document.forms[form].elements[element].options[i] = new Option(optionObj[i].value, optionObj[i].text);
	
	if(optionObj.length > 0)
		document.forms[form].elements[element].options[0].selected = true;
}

function writeDiv(id, content)
{
	if(ie)
		eval("document.all." + id + ".innerHTML = content;");
	else if(ns)
		document.getElementById(id).innerHTML = content;
}

function rollsm(el)
{
	if(ie)
		el.className = "submenu"
	else if(ns)
		el.color = "#AEA49F";
}

function rollbacksm(el)
{
	if(ie)
		el.className = "menup"
	else
		el.color = "#006068";
}

/* Funci?n que calcula la edad */
function calcular_edad(fecha){
    //calculo la fecha de hoy 
    hoy=new Date();
    //alert(hoy) 

    //calculo la fecha que recibo
    //La descompongo en un array
    var array_fecha = fecha.split("-")
    //si el array no tiene tres partes, la fecha es incorrecta
    if (array_fecha.length!=3)
       return false;

    //compruebo que los ano, mes, dia son correctos
    var ano;
    ano = parseInt(array_fecha[0]);
    if (isNaN(ano))
       return false;

    var mes;
    mes = parseInt(array_fecha[1]);
    if (isNaN(mes))
       return false;

    var dia;
    dia = parseInt(array_fecha[2]);
    if (isNaN(dia))
       return false;

    //si el a?o de la fecha que recibo solo tiene 2 cifras hay que cambiarlo a 4
    if (ano<=99)
       ano +=1900

    //resto los a?os de las dos fechas
    edad=hoy.getYear()- ano - 1; //-1 porque no se si ha cumplido a?os ya este a?o

    //si resto los meses y me da menor que 0 entonces no ha cumplido a?os. Si da mayor si ha cumplido
    if (hoy.getMonth() + 1 - mes < 0) //+ 1 porque los meses empiezan en 0
       return edad
    if (hoy.getMonth() + 1 - mes > 0)
       return edad + 1;

    //entonces es que eran iguales. miro los dias
    //si resto los dias y me da menor que 0 entonces no ha cumplido a?os. Si da mayor o igual si ha cumplido
    if (hoy.getUTCDate() - dia >= 0)
       return edad + 1;

    return edad;
}

/**
* Funcion para Cambiar el color de un Input text cuando recibe el foco. 
* Se coloca onFocus="setStyle(this.id,1)"  onBlur="setStyle(this.id,2)" y cada Text debe de tener su Id para poder accesar al mismo.
*/
function setStyle(x,colorOption)
{
	document.getElementById(x).style.background=getColor(colorOption)
}

function getColor(colorOption){
	var color;
	// 1 focus /  2 blur
	switch (colorOption){
		case 1:
			color ='#FFFF99'
			break;
		case 2:
			color = '#E8E9EC'
			break;
	}
	return color;
}

/*Funcion que Valida todos los select-one que existen en un form para siempre
elegir una opcion.*/
function validateFormEleSelec(nameForm){
	var max= document.forms[nameForm].length
	for (i=0;i<max;i++){
		if (document.forms[0].elements[i].type=='select-one'){
			if (document.forms[0].elements[i].selectedIndex==0){
				alert("Favor de "+document.forms[0].elements[i].options[0].text);
				document.forms[0].elements[i].focus();
				return false;
				break;
			}
		}
	}
	
	return true;
}

function updateSelectHidden(obj){
	var origenSel=obj.name;

	var destinoEle=(origenSel.substring(0,origenSel.indexOf("Id")))+'Desc';
	//alert("comienza Eval: "+destinoEle)

	var form ='dataForm';
	updateSelTextInHidden(form,origenSel,destinoEle);
}

function updateSelTextInHidden(form,origenSel,destinoEle){
	var indexSel = document.forms[form].elements[origenSel].selectedIndex;
	setElementValue(form,destinoEle,document.forms[form].elements[origenSel].options[indexSel].text)	
}

//Funciones para Accesar Elementos del Form
function getElementValue(form, ele){
	return document.forms[form].elements[ele].value;
}

function setStyleObj(obj,status)
{
	var style;
	switch(obj.type){
		case 'text':
			if(status == 'focus')
				style = 'TextFocus';
			else
				style = 'TextBlur';
			break;
	}
	obj.className = style;
}

/*
* Deshabilita el submit en input tipo text cuando se presiona "enter"
* Para esto se debe de poner como propiedad en el input tipo text
* onKeyDown="cancelKeyEnter()"
*/
function cancelKeyEnter()
{
	if (window.event && window.event.keyCode == 13) {
 		window.event.cancelBubble = true;
 		window.event.returnValue = false;
 		return false;
	}
}



//New

/*
* Funcion que detecta que tipo de navegador.
*/
function detectBrowser() {
    var ie = document.all != undefined;
    var opera = window.opera != undefined;
   
    if (opera) return "opera";
    if (ie) return "ie";
    if ((window)&&(window.netscape)&&(window.netscape.security)) {
      if (window.XML) {
        return "firefox15";
      }
      else return "firefox10";
    }
    return "ie";      // Si no sabemos que navegador es, devolvemos ie.
  }

 function putFocusElement(nameElement){
 	var obj = document.getElementById(nameElement);
	if (obj)
		obj.focus();
 }

 function putFocusFirstElement(){
	 //fp1 problemas con readonly
 	var forma = document.forms[0];
	if (forma){
		maxElement= forma.length;
		for (var i=0;i<maxElement;i++){
			var element=forma.elements[i];
			if (element.type=='text' && !element.disabled){
				element.focus();
				break;
			}
		}
	}	
 }
 
 function AdviseMsg(msg){
	var divName='divMsg';
	var type='div';
	var className='msg';
	var div= document.getElementById(divName);
	if (!div)
		div=createElementForm(divName,type,className);
	div.innerHTML=msg;
	/**
	* Colocar en Pantalla
	*/
	var divWidth=200;
	var divHeight=20;
	var xTop=200;
	var xLeft=200;
	var zIndex=40;
	setLocationProperties(div,divWidth,divHeight,xTop,xLeft,zIndex);
	setTimeout(function () {
		        div.style.display = "none";
		    }, 9000);
}

function openWindow(theURL,winName,features) {
	features+=",Top="+((screen.height - 200) / 2)+",Left="+( (screen.height - 200) / 2);
  	var newWindow=window.open(theURL,winName,features);
}

function movePopupCenter(){
		x = (screen.width - 300) / 2;
		y = (screen.height - 200) / 2;
		moveTo(x, y);
	}
function closeWindow(){
	window.close();
}

function parentGoToUrlAndCloseMeAndMsg(url,msg){
	alert(msg);
	window.opener.document.location=url;
	closeWindow();
}

function parentGoToUrlAndCloseMe(url){
	window.opener.document.location=url;
	closeWindow();
}

function setObjValue(objName,newValue){
	var ele=document.getElementById(objName);
	if (ele){
		ele.value=newValue;
	}
	else
		alert("no existe "+objName);
}


function openDivWindow(theURL,ifName,features){
	var objName='divWin';
	var type='div';
	var className='msg';
	var obj= document.getElementById(objName);
	if (!obj)
		obj=createElementForm(objName,type,className);
	obj.innerHTML=theURL;
	/**
	* Colocar en Pantalla
	*/
	var objWidth=200;
	var objHeight=200;
	var xTop=200;
	var xLeft=200;
	var zIndex=1;
	setLocationProperties(obj,objWidth,objHeight,xTop,xLeft,zIndex);
}

function goBack(){
	history.back();
}