// JavaScript Document
/*******************************************************************/
/*Ultima revision: 04 de Nov del 2010               			   */
/*                                                                 */
/*******************************************************************/


//Auto ajusta la altura de un iframe
//Ejecuccion:Dentro de la etiqueta del ifranme colocar lo siguiente:
//onLoad="javascript:calcHeight('3','contenido','contenido',this.id);"
//onLoad="javascript:calcHeight('nivel','nombre_iframe_a','nombre_iframe_b',nombre_iframe_actual);"
function calcHeight()
{

  var args=calcHeight.arguments;

  if(args[0] && args[0]==1){
	  calcHeight_n1(args[1]);
  }
  
  if(args[0] && args[0]==2){
	  calcHeight_n1(args[2]);
	  calcHeight_n2(args[1]);
  }
  
 if(args[0] && args[0]==3){
	  
	  calcHeight_n1(args[3]);
	  calcHeight_n2(args[2]);
	  calcHeight_n3(args[1]);
  }	
} 


function calcHeight_n1(iframe){
	var the_height;
	document.getElementById(iframe).height=0; //Seteamos la altura del iframe
	the_height=document.getElementById(iframe).contentWindow.document.body.scrollHeight;
	document.getElementById(iframe).height=the_height;
	
}

function calcHeight_n2(iframe){
	var the_height;
	the_height=parent.document.getElementById(iframe).contentWindow.document.body.scrollHeight;
    parent.document.getElementById(iframe).height=the_height;
}

function calcHeight_n3(iframe){
	var the_height;
	the_height=parent.parent.document.getElementById(iframe).contentWindow.document.body.scrollHeight;
    parent.parent.document.getElementById(iframe).height=the_height;
}


//Copia la altura de un objeto referencia y se auto ajusta 
function calcHeight_y(){
	var the_height;
	var args=calcHeight_y.arguments;
	alert("altura: "+document.getElementById(args[0]).height+" obj: "+document.getElementById(args[1]));
	the_height=document.getElementById(args[0]).height;//scrollHeight;
	document.getElementById(args[1]).height=the_height;
}



function redireccionar(obj,pagina){

	if(obj=="" || obj=='undefined'){
		window.location=pagina;
	}else{
	    window.contenido.location=pagina;
	    pagina="";
	}
}

function init(){
	    var url = String(window.location.href);
	    var params = String(window.location.search);
	    var aux1 = new Array();
	    var aux2 = new Array();
	    var cont = 0;
	    var tot = 0;
	 
	    //si hay parametros
	    if (params.length > 0){
	        //eliminamos el primer caracter '?'
	        params = params.substr(1);
	 
	        //insertamos en un array las parejas nombre=valor
	        aux1 = params.split("&");
	        tot = aux1.length;
	        for (cont = 0; cont < tot; cont++){
	            //separo el nombre del valor
	            aux2 = aux1[cont].split("=");
	 			//alert('nombre: '+aux2[0]+' valor: '+aux2[1]);
	            //trabajo con cada parámetro
	            if (aux2[0].toLowerCase() == "route"){
	                redireccionar('contenido',aux2[1]);
	            }
	        }
	    }
	    else{
	        redireccionar('contenido','inicio.htm');
	    }

}

function aindex(){
	var url = String(window.location.href);
	var aux1 = new Array();
	var aux2 = new String();
	var cont = 0;
	var tot = 0;
	
	x= parent.window.document.getElementById('contenido');//Verificamos si se encuentra dentro del iframe del index, si no redireccionamos a index 
	
	if(!x){
		aux1 = url.split("/");
		tot = aux1.length;
		for (cont = 0; cont < tot; cont++){
			if(aux1[cont].indexOf('htm')!=-1)aux2=aux1[cont];
		}
		window.location='index.htm?route='+aux2;
	}
	
}

/*************************************************************************************
***********************Funcion para validacion de formularios*************************
**************************************************************************************
    Autor: Jorge A .Cano / Ironbit S.A. de C.V.
    Descripción: Función que permite validar los datos ingresados en los campos de un formulario
	
	MM_validateForm(nombre del objeto 1 ,nombre del label 1 ,validaciones a realizar 1,nombre del objeto 2 ,nombre del label 2 ,validaciones a realizar 2,...nombre del objeto n ,nombre del label n ,validaciones a realizar n);
	
	Donde:
	nombre del objeto 1,nombre del objeto 2, ... nombre del objeto n = Nombre con el que se identifica el campo a validar
	nombre del label 1,nombre del label 2, ... nombre del label n = Nombre con el que se hace referencia a campo al mostrar los mensajes de error
	validaciones a realizar 1,validaciones a realizar 2, ... validaciones a realizar n =Contiene las validaciones que re sequieren de dicho campo
	
	Tipo de Validaciones:
	Tipo                    Cadena de identificación
	obligatorio        ---> R
	mail               ---> isEmail
	numerico           ---> inNum
	numerico con rango ---> inRangeX:Y  -->(X=nimimo, Y=maximo)
	longitud min-max   ---> inLongX -->(X=lonjitud deseada)
	sin espacios       ---> ouSpace
	
	Ejemplo de ejecución:
	
	Si desearamos validar un campo con un id=name=intTelefono y que identificamos como 'Teléfono' 
	que sea obligatorio, del tipo numerico y que su lonjitud no sea mayor a 8 caracteres
	
	1.- Formamos la cadena que llama a todas estas validaciones:
		obligatorio        ---> R
	    numerico           ---> inNum
		longitud min-max   ---> inLongX
		
		cadena de validaciones --> 'RinNuminLong8'

	2.- Hacemos la llamada de la funcion con argumentos:
	    
		MM_validateForm('intTelefono','Teléfono','RinNuminLong8')
		MM_validateForm(id,nombre_label,validaciones)
		
	3.- Lo aplicamos al formulario
		
		<form action="" method="post" name="form1" id="form1" onsubmit="MM_validateForm('intTelefono','Teléfono','RinNuminLong8');return document.MM_returnValue">
	
*/
function MM_validateForm() { //v4.0
  //alert("-->"+document.getElementById);
  if (document.getElementById){
  
    var i,p,p2,q,nm,test,num,lng,lng_max,min,max,errors='',args=MM_validateForm.arguments;
	//alert("# Argumentos-->"+args.length);
	//Leemos los nombres de los campos
    for (i=0; i<(args.length-2); i+=3) { 
	  
	  test=args[i+2];
	  field_nm=args[i+1];
	  val=document.getElementById(args[i]);
	  
	  //alert("val-->"+val);
	  //alert("Tipo de objeto-->"+test);
      if (val) { 
	    nm=field_nm;
	    val_nm=val.name;
		
		//Si el valor del objeto es diferente de nada "", pasa
		if ((val=val.value)!="") {
		 
		 //alert("Validamos")
		
		//************* Valida campos email ************
          if (test.indexOf('isEmail')!=-1) { 
		    p=val.indexOf('@');
            if (p<1 || p==(val.length-1)) errors+='- Ingrese una direccion de correo valida en el campo '+nm+'.\n';
			//Si en diferente de R entonces se trata de un campo Numerico no solo es requerido
          }
		  
		  
		  //*********** Valida la longitud del valor del campo ***********
		  if (test.indexOf('inLong')!=-1) { 
		      //alert("Validamos longitud");
		      lng=parseFloat(val.length);
			  p=test.indexOf('inLong');
			  lng_max=parseFloat(test.substring(p+6,p+7));//longitud maxima permitida = 9 = XXXXXXXXX
			  //alert("Long max-->"+lng_max+" longitud -->"+lng);
			 if(lng > lng_max)  errors+='- La longitud del campo "'+nm+'" no puede ser mayor a '+lng_max+' caracteres.\n';
			 if(lng < lng_max)  errors+='- La longitud del campo "'+nm+'" no puede ser menor a '+lng_max+' caracteres.\n';
		  }
		  
		  
		  //*********** Valida espacios en blanco ************
		  if(test.indexOf('ouSpace')!=-1){ 
		      p=val.indexOf(' ');
			  //alert("Espacios ?-->"+p);
			  //si contiene por lo menos un espacio en blanco...
			  if(p!=-1) errors+='- El valor del campo "'+nm+'" no debe contener espacio en blanco.\n';
		  }
		  
		  //*********** Valida que no solo se escriban espacios en blanco ************
		  if(test.indexOf('onlySpace')!=-1){ 
		      i=0;
			  j=0;
			  lng=parseFloat(val.length);
			  alert("longitud:"+lng);
			  /*for(i;val.length;i++){
				  p=val.charAt(i);
				  if(p!=' ')j=1;
			  }*/
			  //alert("Espacios ?-->"+p);
			  //si contiene por lo menos un espacio en blanco...
			  //if(j==0) errors+='- El valor del campo "'+nm+'" no debe soló contener espacios en blanco.\n';
		  }
		  
		  //*********** Validad si es numerico y se encuentra dentro de rango ***********
		  if (test.indexOf('isNum')!=-1 || test.indexOf('inRange')!=-1) { 
		  
		      num = parseFloat(val);//Devolvemos el numero en punto flotante 
			  //alert("parseFloat-->"+num);
              if (isNaN(val)) errors+='- El campo "'+nm+'" debe contener un valor numerico.\n';
			
			  if (test.indexOf('inRange') != -1) { 
			    p=test.indexOf(':');
				p2=test.indexOf('inRange');
				//alert("Posicion del caracter : -->"+p+" p2 -->"+p2);
				//alert("sub cadena -->"+test+" --- "+test.substring(p+2));
                min=parseFloat(test.substring(p2+7,p));
			    max=parseFloat(test.substring(p+1));
				//alert("min-->"+min+"max-->"+max+" p->"+p);
                if (num<min || max<num) errors+='- El campo "'+nm+'" debe contener digitos entre '+min+' y '+max+'.\n';
			  
              }
			
		  }
		  
		  if (test.indexOf('isPassMD5')!=-1) { 
		  		
	            desa=document.getElementById('str_desafio');
				field=document.getElementById(val_nm);
				//Encriptamos el valor del campo y formamos campo valor
				//Ej de cadena formada:  $str_Pass_Intranet="c81e728d9d4c2f636f067f89cc14862c"
				crypt='$'+val_nm+'='+'"'+hex_md5(val)+'"';
				//Enviamos el valor obtenido al campo hidden que se enviara cifrado por POST
				desa.value = crypt+","+desa.value;
				//Seteamos el valor del campo para que no se envie este por POST
				field.value='';	
				
		  }
		  
		  if (test.indexOf('isPass')!=-1) { 
		  		
	            desa=document.getElementById('str_desafio');
				field=document.getElementById(val_nm);
				//Dado que el dato no va cifrado
				
				//Ej de cadena formada:  $str_Pass_Intranet="c81e728d9d4c2f636f067f89cc14862c"
				crypt='$'+val_nm+'='+'"'+val+'"';
				//Enviamos el valor obtenido al campo hidden que se enviara cifrado por POST
				desa.value = crypt+","+desa.value;
				//Seteamos el valor del campo para que no se envie este por POST
				field.value='';	
				
		  }
		  
		  
		  
		//*********** Valida si el campo es requerido *********** 
	    } else if (test.charAt(0) == 'R') errors += '- Ingrese un valor para el campo "'+nm+'".\n'; 
		
	  }
	  
    } 
	
	if (errors){
		//*** Si se validaron passwords reseteamos el campo hidden str_desafio ***' 
		//*** para evitar una cadena duplicada                                 ***'
	    desa=document.getElementById('str_desafio');
	    if(desa) {
	       	desa.value='';
        }
			
		alert('Verifique los siguientes errores:\n'+errors);
	}
    document.MM_returnValue = (errors == '');
	
  }
  
}
