// JavaScript Document

/*

function rellena_dia(){

	for(i=1;i<=31;i++){

		document.write("<option value='"+i+"'>"+i+"</option>");

	}

}

function rellena_mes(){

	for(i=1;i<=12;i++){

		document.write("<option value='"+i+"'>"+i+"</option>");

	}

}

function rellena_anio(){

	for(i=2004;i>=1995;i--){

		document.write("<option value='"+i+"'>"+i+"</option>");

	}



}

*/

/*

-------------------------------FUNCIONES VARIAS------------------------------------------------------

*/

function MM_goToURL() { //v3.0

  var i, args=MM_goToURL.arguments; document.MM_returnValue = false;

  for (i=0; i<(args.length-1); i+=2) eval(args[i]+".location='"+args[i+1]+"'");

}



function MM_openBrWindow(theURL,winName,features) { //v2.0

  window.open(theURL,winName,features);

}



function MM_jumpMenu(targ,selObj,restore){ //v3.0

  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");

  if (restore) selObj.selectedIndex=0;

}



function regenera_menu(objeto_select,lista,destino){

	x=(objeto_select.options[objeto_select.selectedIndex]).value;

	for(m=destino.options.length-1;m>0;m--)

		destino.options[m]=null;

	for (i=0;i<lista[x].length;i++){

		destino.options[i]=new Option(lista[x][i].text,lista[x][i].value);

	}

}





/*

-------------------------------FUNCIONES DE VALIDACION-----------------------------------------------

*/

function MM_findObj(n, d) { //v4.01

  var p,i,x;  

  if(!d) 

  d=document; 

  if((p=n.indexOf("?"))>0&&parent.frames.length) {

    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);

	}

  if(!(x=d[n])&&d.all) 

  	x=d.all[n]; 

  for (i=0;!x&&i<d.forms.length;i++) 

  	x=d.forms[i][n];

  for(i=0;!x&&d.layers&&i<d.layers.length;i++) 

  	x=MM_findObj(n,d.layers[i].document);

  if(!x && d.getElementById) 

  	x=d.getElementById(n); 

return x;

}

//						0	  1	  2		3	   4	5			6  	

//"MM_validateForm('paterno','','R','materno','','RisEmail','nombres','','RinRange1:10','resultado','','NisNum','rfc_escrito','','RinRange10:20','validacion','','NisEmail');return document.MM_returnValue"

function MM_validateForm() { //v4.0

  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;

  var argumentos;

  for (i=0; i<(args.length-2); i+=3) { 

  		test=args[i+2]; 

		val=MM_findObj(args[i]);//trae el objeto

    	 if (val) { //si el objeto existe

		 	nm=val.name; //nobre del objeto

		 	if ((val=val.value)!="") {//obtiene el valor del objeto

		//----------------------si es Email-------------------------

				if (test.indexOf('isEmail')!=-1){//entra si encuentra la condicion isEmail 

					p=val.indexOf('@');

			        if (p<1 || p==(val.length-1)) 

						errors+='- '+nm+' debe contener una direccion de e-mail.\n';

	      		} //if (test.indexOf('isEmail')!=-1)

		//-----------------------validar RFC--------------------

				else if(test.indexOf('isRFC')!=-1){//los argumentos deben ser los valores de los campos:paterno,materno,nombre,anio,mes,dia,rfc_escrito	

					var parametros;

					parametros=args[i+1];

					var params=parametros.split(",");

					var paterno=(MM_findObj(params[0])).value;

					var materno=(MM_findObj(params[1])).value;

					var nombre=(MM_findObj(params[2])).value;

					var anio=(MM_findObj(params[3])).value;

					var mes=(MM_findObj(params[4])).value;

					var dia=(MM_findObj(params[5])).value;

					var rfc_escrito=(MM_findObj(params[6])).value;

					var resultado=valida_RFC(paterno,materno,nombre,anio,mes,dia,rfc_escrito);

					if(!resultado){

						errors+='- El RFC no coincide con el resto de sus datos.\n';

					}

				}//if

		//-----------------------Validar dos campos iguales----------

				else if(test.indexOf('camposIguales')!=-1){//el argumento extra contiene el id del objeto contra el q se compara

					var argumentos=MM_findObj(args[i+1]);

					if(val!=(argumentos.value))

						errors+='- Los campos '+nm+' y '+argumentos.name+' deben ser iguales.\n';

				}

	 	//------------------------Validar dos campos distintos--------

				else if(test.indexOf('camposDistintos')!=-1){//el argumento extra contiene el id del objeto contra el q se compara

					var argumentos=MM_findObj(args[i+1]);

					if(val==argumentos.value)

						errors+='- Los campos '+nm+' y '+argumentos.name+' deben ser distintos.\n';

				}

		//-----------------------Validar Password--------------------

				else if(test.indexOf('isPasword')!=-1){

					if(!valida_password(val))

						errors+='- '+nm+' El password debe conterner solo letras y numeros y debe contener al menos 4 digitos.\n';

				}		

		//-----------------------prueba si es numero-----------------

				else if (test!='R') { //entra si el argumento es distinto de 'R'

					num = parseFloat(val);

					if (isNaN(val)) errors+='- '+nm+' debe contener un numero.\n';

					if (test.indexOf('inRange') != -1) { 

						p=test.indexOf(':');

						min=test.substring(8,p); max=test.substring(p+1);

						if (num<min || max<num) errors+='- '+nm+' debe contener un numero entre '+min+' y '+max+'.\n';

					}//if

			 	}//else if 

		//---------------------prueba si es requerido---------------

			}//if((val=val.value)!="")

			else if (test.charAt(0) == 'R') 

				errors += '- '+nm+' es un campo requerido.\n'; 

  		}//if(val)

  }//for

  if (errors) alert('Ocurrieron los siguientes errores:\n'+errors);

  document.MM_returnValue = (errors == '');

}//fucntion



function valida_password(password){

	var regexp_password =/[A-Za-z0-9]{4,}/;

	if(regexp_password.exec(password))

		return true;

	else

		return false;

}



function obtiene_RFC(paterno,materno,nombre,anio,mes,dia){

	 var regexp_primera_letra = /\b\D/i;

	 var regexp_primera_vocal = /[aeiou]/i;

	 var regexp_juan_maria = /\bma\b|\bdel\b|\bde\b|\bla\b|\blos\b|\bel\b/gi;

	 var regexp_anio = /\d\d$/;

	 var regexp_mes =/\d\d/;

	 var regexp_dia =/\d\d/;

	 var rfc="";

	 rfc=regexp_primera_letra.exec(paterno);

	 rfc+=regexp_primera_vocal.exec(paterno.replace(/./,""));

	 rfc+=regexp_primera_letra.exec(materno);

	 rfc+=regexp_primera_letra.exec(nombre.replace(regexp_juan_maria,""));

	 rfc+=regexp_anio.exec(anio);

	 rfc+=regexp_mes.exec(mes);

	 rfc+=regexp_dia.exec(dia);

	 return(rfc.toUpperCase());

}



function valida_RFC(paterno,materno,nombre,anio,mes,dia,rfc_escrito){

	var regexp_rfc= /\D{4}\d{6}/;

	var rfc_calculo=obtiene_RFC(paterno,materno,nombre,anio,mes,dia);

	rfc_escrito.replace(/\-|\//,"");

	rfc_escrito=rfc_escrito.toUpperCase();

	if(rfc_calculo==regexp_rfc.exec(rfc_escrito))

		return true;

	else	

		return false;

}

/*

-----------------------------------FUNCIONES DE FECHA Y HORA------------------------------------------------

*/



function adjust( objSelectD , objSelectM , objSelectY ) {



	var Mes = objSelectM.options[objSelectM.selectedIndex].value ;

	var Year = objSelectY.options[objSelectY.selectedIndex].value ;

	var DiaS = objSelectD.options[objSelectD.selectedIndex].value ;
	
	var dias_del_mes ;

	var i = 0 ;



	while ( objSelectD.options[i] ) {

		objSelectD.options[i++] = null ;

	}



	switch ( Mes ) {

		case '01'  :

		case '03'  :

		case '05'  :

		case '07'  :

		case '08'  :

		case '10' :

		case '12' :

					dias_del_mes = 31 ;

					break ;

		case '04'  :

		case '06'  :

		case '09'  :

		case '11' :

					dias_del_mes = 30 ;

					break ;

		case '02'  :

					if ( Year % 4 ) {

						dias_del_mes = 28 ;

					} else {

						if ( Year % 400 ) {

							if ( Year % 2000 ) {

								dias_del_mes = 29 ;

							} else {

								dias_del_mes = 28 ;

							}

						} else {

							dias_del_mes = 29 ;

						}

					}

					break ;

		default :

					//window.alert("Unknown!!");

	} // Termina Switch MES



	var dia ;

	objSelectD.options[0] = new Option("--",false);

	for ( dia = 1 ; dia <= dias_del_mes ; dia++ ) {

	   if(dia<10)

	   		opcion="0"+dia;

		else

			opcion=dia;

		objSelectD.options[dia] = new Option(opcion);

		objSelectD.options[dia].value=opcion;

	} // Agrega las opciones


		objSelectD.selectedIndex=DiaS;


} // Termina Ajusta Dias

function escribe_horas ( objSelect ) {

	var i;

	for(i=0;i<16;i++){

		objSelect.options[i]= new Option(i+7,i+7);

	}

} // Termina Ajusta Horas



function escribe_minutos ( objSelect ) {

	var i;

	for(i=0;i<12;i++){

		objSelect.options[i]= new Option(i*5,i*5);

	}



} // Termina Escribe Minutos



function checkbox(objeto){

	if (objeto.value==""){

			objeto.value="1";

		} 

		else{ 

			objeto.value="";

		}

}







/*

function validate( obj0 , obj1 , obj2 , obj3 , obj4 , obj5 , obj6 , obj7 , obj8 , obj9 ) {

	return ojb0.value && ojb1.value && ojb2.value && ojb3.value && ojb4.value && ojb5.value && ojb6.value && ojb7.value && ojb8.value && ojb9.value ;

}

*/

