/*
Miguel Angel Celin Teran  - Ingeniero de Sistemas     -
                          - 18/NOV/2005  5:22 pm      -
                          - mac10co@yahoo.com         -
                          - rendicion de cuentas      -
*/

/*
NOMBRE DE LA FUNCION  : cargarMunicipio
DESCRIPCION           : Esta funcion carga dinamicamente los municipios de un departamento.
PARAMETROS DE ENTRADA : - [codigoDepartamento] código del departamento.
                        - [comboMunicipios]    objeto del formulario de tipo SELECT donde se desean cargar los municipios.
PARAMETROS DE SALIDA  : Esta función no retorna parametros.
*/


function numeros(texto,evento,punto){
var key = (window.Event)? evento.which : evento.keyCode;
//alert(key);
if((key>=48 && key<=57) || 
   (key==8) || 
   (key==46 && punto && texto.value.length>0 && texto.value.indexOf('.')==-1))
return true;
else
return false;
}

function validarEmail(correo){
    if(correo!=''){
		// validar la cuenta de correo usando una expresión regular (RegExp)
		if(correo.search(/^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/ig))
			return "El correo electrónico no es válido, debes escribirla de forma: nombre@servidor.dominio";
		else
			return "";
	}
}

function seleccionarMunicipio(comboMunicipios,seleccion){
    for(i=0;i<comboMunicipios.length;i++){
		if(comboMunicipios[i].value==seleccion)
			comboMunicipios[i].selected = true;
		else
			comboMunicipios[i].selected = false;
	}
}

function cargarMunicipio(codigoDepartamento,comboMunicipios,seleccion){
    var datos = departamentos[codigoDepartamento];
    comboMunicipios.length = datos.length;
    sw = false;
    for(i=0;i<datos.length;i++){
        if(!sw && seleccion==datos[i].split(',')[0]){
            comboMunicipios[i].selected = true;
            sw = true;
        }
        comboMunicipios[i].value = datos[i].split(',')[0];
        comboMunicipios[i].text  = datos[i].split(',')[1];
    }
    if(!sw)
    comboMunicipios[0].selected = true;
}


/*
NOMBRE DE LA FUNCION  : validarForm
DESCRIPCION           : Esta funcion valida los campos de un formulario, omitiendo los campos que se encuantren en el primer parametro [campos], y
                        verifica que los valores de los campos del tercer parametro [comparacion] sean iguales.
PARAMETROS DE ENTRADA : - [campos]      nombre de los campos que no se deben validar, es una cadena con los campos separados por el caracter coma (,).
                        - [formulario]  objeto formulario.
                        - [comparacion] nombre de los campos que deben tener el mismo valor, es una cadena con los campos separados por el caracter coma (,).
                        - [mensaje]     objeto de tipo texto que retorna una funcion alterna, con el fin de utilizar una funcion más de validacion, si el mensaje
                                        es igual a '' es porque la funcion alterna no ha encontrado error, si el mensaje es diferente a '' es porque la función
                                        alterna ha encontrado un error y su descripcion esta en la variable mensaje.  En otras paralabras en este campo se llama a otra
                                        función JavaScript que evalua y retorna un objeto de tipo texto, en el que el contenido del texto es la definicion del error si lo hay.
PARAMETROS DE SALIDA  : Retorna true o false, según el caso, esto le indica al formulario si se debe o no cargar la pagina.
NOTA                  : La cadena con los campos separados por el caracter coma (,) no puede contener espacio.
*/
function validarForm(campos,formulario,comparacion,mensaje){
    var datos = new Array();
    var error = false;
    //campos que no se verifican
    if( !mensaje ){
        mensaje = '';
    }
    try{
        if(campos!=''){
            for(i=0;i<campos.split(',').length;i++){
                datos[campos.split(',')[i]]='Ok';
                aux = formulario.elements[campos.split(',')[i]].value;
            }
        }
    }catch(e){
        mensaje='ERROR DE DESARROLLO: '+e+' unos de los campos de no verificación no es valido, \npor favor verifique el primer paramatro de la funcion validarForm()';
        error = true;
    }


    //verificación de campos
    if(!error){
        for(i=0;i<formulario.length;i++){
            if(datos[formulario.elements[i].name]==null){
                if(formulario.elements[i].type=='text' && formulario.elements[i].value == '')
                      mensaje += 'El campo ['+formulario.elements[i].name+'] no puede quedar vacio \n';
                if(formulario.elements[i].type=='password' && formulario.elements[i].value == '')
                      mensaje += 'El campo ['+formulario.elements[i].name+'] no puede quedar vacio \n';
                if(formulario.elements[i].type=='select-one' && formulario.elements[i].value == '')
                      mensaje += 'Debe seleccionar un item del campo ['+formulario.elements[i].name+'] \n';
            }
        }
    }

    //comparacion de campos
    if(!error && comparacion!=''){
         try{
             for(i=0;i<comparacion.split(',').length;i++){
                 for(j=0;j<comparacion.split(',').length;j++){
                     if(formulario.elements[comparacion.split(',')[i]].value != formulario.elements[comparacion.split(',')[j]].value){
                         mensaje='El contenido de los campos';
                         for(i=0;i<comparacion.split(',').length;i++)
                             mensaje += ' ['+comparacion.split(',')[i]+'] ';
                         mensaje +='deben ser iguales';
                         break;
                     }
                }
            }
         }catch(e){
            mensaje='ERROR DE DESARROLLO: '+e+' unos de los campos a comparar no es valido, \npor favor verifique el tercer paramatro de la funcion validarForm()';
         }
    }

    if(mensaje=='')
        return true;
    else{
      alert(mensaje);
      return false;
    }
}

function compareTwoDates(fistDate, secondDate) {
    var yearFirst;
    var monthFirst;
    var dayFirst;
    yearFirst  = fistDate.substring(6,10);
    monthFirst = fistDate.substring(3,5);
    dayFirst   = fistDate.substring(0,2);
    hourFirst  = (fistDate.substring(17,19)=='PM' && fistDate.substring(11,13)!='12')?  parseFloat(fistDate.substring(11,13))+12  :  (fistDate.substring(11,13)=='12'?0:fistDate.substring(11,13));
    minFirst   = fistDate.substring(14,16);

//  10/10/2005 10:10 pm
//  0123456789012345678
    var yearSecond;
    var monthSecond;
    var daySecond;
    yearSecond  = secondDate.substring(6,10);
    monthSecond = secondDate.substring(3,5);
    daySecond   = secondDate.substring(0,2);
    hourSecond  = (secondDate.substring(17,19)=='PM' && secondDate.substring(11,13)!='12')?  parseFloat(secondDate.substring(11,13))+12  :  (secondDate.substring(11,13)=='12'?0:secondDate.substring(11,13));
    minSecond   = secondDate.substring(14,16);



    var ret;

    var dateFirst  = new Date( yearFirst  , monthFirst-1  , dayFirst , hourFirst , minFirst  );
    var dateSecond = new Date( yearSecond , monthSecond -1, daySecond, hourSecond, minSecond );

    //alert (dateFirst+' - '+dateSecond);
    //alert (dateFirst.getTime()+' - '+dateSecond.getTime());

    if (secondDate != ""){
    	if( dateFirst.getTime() <= dateSecond.getTime() ) {
				ret = true;
			} else {
				ret = false;
			}
		} else ret = true;
    return ret;
}

function compararFecha(fechaInicial,fechaFinal){
    var mensaje = compareTwoDates(fechaInicial,fechaFinal)?'':'La Fecha Inicial debe ser menor o igual a la fecha Final \n';
    return mensaje;
}


function seleccionarPadre(formulario,checkboxPadre,lunarHijos,siChecked,noChecked)
{
   var cantidad = lunarHijos.length;
   if(checkboxPadre.checked==true && siChecked){
   	for(i=0;i<formulario.length;i++)
   	    if(formulario.elements[i].name!=null && formulario.elements[i].type=='checkbox' &&  formulario.elements[i].name.substr(formulario.elements[i].name.length-cantidad , formulario.elements[i].name.length ) == lunarHijos )
                formulario.elements[i].checked = true;
   }
   if(checkboxPadre.checked==false && noChecked){
        for(i=0;i<formulario.elements.length;i++)
   	    if(formulario.elements[i].name!=null && formulario.elements[i].type=='checkbox' && formulario.elements[i].name.substr(formulario.elements[i].name.length-cantidad , formulario.elements[i].name.length ) == lunarHijos )
                formulario.elements[i].checked=false;
   }
}

function seleccionarHijos(formulario,checkboxPadre,lunarHijos,checkboxHijo)
{
   var cantidad = lunarHijos.length;
   var sw = true;
   for(i=0;i<formulario.length;i++){
       if(formulario.elements[i].name!=null       &&
          formulario.elements[i].type=='checkbox' &&
          formulario.elements[i].name.substr(formulario.elements[i].name.length-cantidad , formulario.elements[i].name.length ) == lunarHijos &&
          formulario.elements[i].checked != checkboxHijo.checked){
             sw = false;
             break;
       }
   }
   if(sw)
       checkboxPadre.checked = checkboxHijo.checked;
   else
       checkboxPadre.checked = false;
}


function habilitarDesahabilitar(formulario,checkboxPadre,lunarHijos)
{
   var cantidad = lunarHijos.length;
   if(checkboxPadre.checked==true){
   	for(i=0;i<formulario.length;i++)
   	    if(formulario.elements[i].name!=null && formulario.elements[i].type=='checkbox' &&  formulario.elements[i].name.substr(formulario.elements[i].name.length-cantidad , formulario.elements[i].name.length ) == lunarHijos )
                formulario.elements[i].disabled = true;
   }
   if(checkboxPadre.checked==false){
        for(i=0;i<formulario.elements.length;i++)
   	    if(formulario.elements[i].name!=null && formulario.elements[i].type=='checkbox' && formulario.elements[i].name.substr(formulario.elements[i].name.length-cantidad , formulario.elements[i].name.length ) == lunarHijos )
                formulario.elements[i].disabled=false;
   }
}

function oneChecked(formulario){
    var sw = false;
    for(i=0;i<formulario.length;i++)
        if(formulario.elements[i].name!=null && formulario.elements[i].type=='checkbox' && formulario.elements[i].checked){
            sw = true;
            break;
        }
    return sw;
}

/*
   Funciones adicionales - Colnodo
   2006/03/15
*/


function tiene_valor_texto(elemento){
   if( elemento.value == ""){
      return false;
   }
   return true;
}

function is_select_0 (elemento){
   if (elemento.selectedIndex == 0){
      return true;
   }
   return false;
}

function tiene_valor_text(elemento,message){
   if (!tiene_valor_texto(elemento) ){
       alert(message);
       elemento.focus();
       return false;
   }
   return true;
}

function tiene_valor_select(elemento,message){
   if( is_select_0 (elemento) ){
       alert(message);
       elemento.focus();
       return false;
   }
   return true;
}


function email_ok(elemento){

   if( (elemento.value.indexOf("@") == -1) || (elemento.value.indexOf(".") == -1) || (elemento.value.indexOf(" ") != -1) ){
     return false;
   }
   return true;
}

function check_seleccionado(forma,nombre){

   var existe = false;
   for(i=0;i<forma.length;i++){
       if( (forma.elements[i].name!=null) && (forma.elements[i].type=='checkbox') && (forma.elements[i].name == nombre) && (forma.elements[i].checked) ){
             existe = true;
             break;
       }
   }
   return existe;
}
