function enviar(formu, elemento, elemento2){
   var formulario = document.forms[formu]; //formulario
   var prefijo = formulario[elemento];
   var  serial = formulario[elemento2];  
  
   // Si es la guia estafeta convierte a mayusculas
   if(prefijo.value.length<3){
     alert("El prefijo (primer cuadro de texto) debe ser de 3 dígitos.");
     return false;
   }
   if(serial.value.length<8){
     alert("El serial (segundo cuadro de texto) debe ser de 8 dígitos.");
     return false;
   }
   return true;
}
/*******************************************************************************
* Function    : valida()
* Language    : JavaScript
* Description : Realiza las siguientes valuidaciones:
*			- Guia no sea vacia
*			- Lista de Guias <= 20
*			- Lista de guias no tenga guias repetidas
* parametro entrada  : thisForm la forma actual	y valor de guia 
*******************************************************************************/
function valida(formu, elemento, tp) {
   var formulario = document.forms[formu]; //formulario
   var campo= formulario[elemento]; //para acceder a los valores del text area campo.value
   var tipo = formulario[tp]; //para acceder a los valored del radio button tipo[x].value, para saber si esta seleccionado tipo[x].checked o tipo[x].selected
   var listaGuias = new Array();
   var i;
   
   // Si es la guia estafeta convierte a mayusculas
   if (tipo[1].selected){
       campo.value = campo.value.toUpperCase(); 
   }
   
   // Verifica q se capture al menos 1 guia
   if (campo.value.length == 0) {
   	if (tipo[1].selected) {
   		alert("Por favor, ingrese número de guía.");
		campo.focus();
	 } else if(tipo[0].selected){
		alert("Por favor, ingrese código de rastreo.");
		campo.focus();
	 } 
	 return false;
   }
   
   //realiza el parceo de las guias y las guarda en la matriz  
   listaGuias = campo.value.split(/\s+/);
  
   // Controla q se capturen hasta 20 guias
   if (listaGuias.length >= 21) {
   		// Si la guia 21 no esta vacia entonces despliega msg de error Nota: Si la lista tiene un enter al final, al hacer split se agrega
		// un elemento vacio en el arreglo, el cual se ignora
		if (listaGuias[20].length > 0) {
			alert("El número máximo de guías a consultar es 20. Por favor, verifique.");
			campo.focus();
			return false;
		}
		
		// Si la lista tiene mas de 20 guias despliega msg de error
		if (listaGuias.length > 20) {
			alert("El número máximo de guías a consultar es 20. Por favor, verifique.");
			campo.focus();
			return false;
			return false;
		}
   }
   
   // Verfica q no hayan guias repetidas en la lista
   if (guiaRepetida(tipo, listaGuias, campo) == false){
   	 return false;
   }
      
return true;
}

/*******************************************************************************
* Function    : guiaRepetida()
* Language    : JavaScript
* Description : Barre el arreglo de guias para que no hya guias repetidas n la consulta
* parametro entrada  : thisForm la forma actual	y valor de guia 
*******************************************************************************/
function guiaRepetida(tipo, idsGuias, campo){
   var iContador = 0;
   	//Convierte la cadena a un arreglo con el separador " "
   	cadena = "";
	// Si es guia estafeta la convierte a mayusculas
	//if (thisForm.tipoGuiaConsultada[0].checked)
	//thisForm.idGuia.value  = cadena.toUpperCase();
	//var idsGuias = cadena.split(/\s+/);
		
   for (iContador = 0 ; iContador<idsGuias.length; iContador ++){
      //Toma el primer valor de la lista
      cadena = idsGuias[iContador];
	 // Si es guia estafeta hace esta validacion:
	 //Verifica si la guías es de 12 caracteres
	 //siempre y cuando el elemnto de la lista no este vacia
	 // (al hacer split genera un ulimo elemnto del arrglo vacio)
	 // si este caso lo ignora
	 if (tipo[1].selected){
  	   if ((cadena.length > 0) && (cadena.length != 22)) {
          alert("El número de guía " + cadena + " debe tener 22 dígitos. Por favor, verifique.");
          campo.focus();
          return false;
       }
     }
     
     if (tipo[0].selected){
  	   if ((cadena.length > 0) && (cadena.length != 10)) {
          alert("El código de rastreo " + cadena + " debe tener 10 dígitos. Por favor, verifique.");
          campo.focus();
          return false;
       }
     }
      
	  //Ciclo que verifica si existen guias repetidas
      iElemento = 0;
      var repetida = 0;
      for (iElemento = 0 ; iElemento<idsGuias.length; iElemento ++){
           if ( cadena == idsGuias[iElemento]){
               repetida++;
               if ( repetida >=2){
                if (tipo[0].selected){
                   alert("El código de rastreo " + cadena + " está repetido en la lista. Por favor, verifique.");
                 }else{
                   alert("El número de guía " + cadena + " está repetido en la lista. Por favor, verifique.");
                 }
		 // Si la guia consultada es guia estafeta
    	    	 campo.focus();
                return false;
               }
            }
      }
   } 
   return true;
}

/*******************************************************************************
* Function    : valida2()
* Language    : JavaScript
* Description : Realiza las siguientes valuidaciones:
*			- Guia no sea vacia
*			- Lista de Guias <= 20
*			- Lista de guias no tenga guias repetidas
* parametro entrada  : thisForm la forma actual	y valor de guia 
*******************************************************************************/
function valida2(formu, elemento) {
   var formulario = document.forms[formu]; //formulario
   var campo= formulario[elemento]; //para acceder a los valores del text area campo.value
   var listaGuias = new Array();
   var i;
   
   // Verifica q se capture al menos 1 guia
   if (campo.value.length == 0) {
   		alert("Por favor ingrese un número de guía.");
		campo.focus();
	    return false;
   }
   
   //realiza el parceo de las guias y las guarda en la matriz  
   listaGuias = campo.value.split(/\s+/);
  
   // Controla q se capturen hasta 20 guias
   if (listaGuias.length >= 21) {
   		// Si la guia 21 no esta vacia entonces despliega msg de error Nota: Si la lista tiene un enter al final, al hacer split se agrega
		// un elemento vacio en el arreglo, el cual se ignora
		if (listaGuias[20].length > 0) {
			alert("El número máximo de guías a consultar es 20. Por favor, verifique.");
			campo.focus();
			return false;
		}
		
		// Si la lista tiene mas de 20 guias despliega msg de error
		if (listaGuias.length > 20) {
			alert("El número máximo de guías a consultar es 20. Por favor, verifique.");
			campo.focus();
			return false;
			return false;
		}
   }
   
   // Verfica q no hayan guias repetidas en la lista
   if (guiaRepetida2(listaGuias, campo) == false){
   	 return false;
   }
      
return true;
}

/*******************************************************************************
* Function    : guiaRepetida2()
* Language    : JavaScript
* Description : Barre el arreglo de guias para que no hya guias repetidas n la consulta
* parametro entrada  : thisForm la forma actual	y valor de guia 
*******************************************************************************/
function guiaRepetida2(idsGuias, campo){
   var iContador = 0;
   	//Convierte la cadena a un arreglo con el separador " "
   	cadena = "";
	// Si es guia estafeta la convierte a mayusculas
	//if (thisForm.tipoGuiaConsultada[0].checked)
	//thisForm.idGuia.value  = cadena.toUpperCase();
	//var idsGuias = cadena.split(/\s+/);
		
   for (iContador = 0 ; iContador<idsGuias.length; iContador ++){
      //Toma el primer valor de la lista
      cadena = idsGuias[iContador];
	 // Si es guia estafeta hace esta validacion:
	 //Verifica si la guías es de 12 caracteres
	 //siempre y cuando el elemnto de la lista no este vacia
	 // (al hacer split genera un ulimo elemnto del arrglo vacio)
	 // si este caso lo ignora
	 
  	 if (cadena.length > 25) {
          alert("La guía " + cadena + " debe tener como máximo 25 dígitos. Por favor, verifique.");
          campo.focus();
          return false;
     }
         
	  //Ciclo que verifica si existen guias repetidas
      iElemento = 0;
      var repetida = 0;
      for (iElemento = 0 ; iElemento<idsGuias.length; iElemento ++){
           if ( cadena == idsGuias[iElemento]){
               repetida++;
               if ( repetida >=2){
                alert("El número de guía " + cadena + " está repetido. Por favor, verifique.");
			    // Si la guia consultada es guia estafeta
				campo.focus();
                return false;
               }
            }
      }
   } 
   return true;
}


function limpia(formu,elemento){
   var formulario = document.forms[formu]; //formulario
   var campo= formulario[elemento]; //para acceder a los valores del text area campo.value
   campo.value="";  
}

var anio= new(Date);
anio= anio.getFullYear();

function openWin(value,wval,hval) 
{
	window.open(value,'popup','resizable=no,width=' + wval + ',height=' + hval + ',status=no,location=no,toolbar=no,menubar=no,scrollbars=yes');
}	

function hint(s) {
  window.status = (s ? s : '')
  return true
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v3.0
  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); return x;
}

function MM_nbGroup(event, grpName) { //v3.0
  var i,img,nbArr,args=MM_nbGroup.arguments;
  if (event == "init" && args.length > 2) {
    if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
      img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
      if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
      nbArr[nbArr.length] = img;
      for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
        if (!img.MM_up) img.MM_up = img.src;
        img.src = img.MM_dn = args[i+1];
        nbArr[nbArr.length] = img;
    } }
  } else if (event == "over") {
    document.MM_nbOver = nbArr = new Array();
    for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = (img.MM_dn && args[i+2]) ? args[i+2] : args[i+1];
      nbArr[nbArr.length] = img;
    }
  } else if (event == "out" ) {
    for (i=0; i < document.MM_nbOver.length; i++) {
      img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
  } else if (event == "down") {
    if ((nbArr = document[grpName]) != null)
      for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
    document[grpName] = nbArr = new Array();
    for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
      if (!img.MM_up) img.MM_up = img.src;
      img.src = img.MM_dn = args[i+1];
      nbArr[nbArr.length] = img;
  } }
}