// Variables globales
var winID = null;
var winMapa = null;



// Metodo que invoca pop-up donde se maximiza una foto previamente seleccionada.
function popupBig(picname, caption, ancho, alto) {
	// Convertimos las barras en invertidas (para Opera).
	if ( !( iBPmix==2 || iBPmix==4)) 
		winID = window.open('popup/showpic.html?pic='+escape(picname) + '&cap='+escape(caption) + '&width='+ancho + '&height='+alto, 'bigpic', 'width=100,height=100,top=10,left=20,scrollbars=no,resizable=yes');
	else {
		var winXmod = 60;
		var winYmod = 100;      
		winID = window.open('popup/showpic.html?pic='+escape(picname) + '&cap='+escape(caption) + '&width='+ancho + '&height='+alto, 'bigpic', 'width='+(ancho+winXmod)+',height='+(alto+winYmod)+',top=10,left=20,scrollbars=no,resizable=no');	
	}
	winID.focus();
}

function popupMapa() {
	winMapa = window.open('popup/mapaacceso.html', 'mapa', 'width=100,height=100,top=10,left=10,scrollbars=yes,resizable=yes');
	winMapa.focus();
}


// Cierra la ventana de Big
function closeBig() {
  if ( iBPmix==2 || iBPmix==4) {
    //Netscape, en plataforma Win o Mac respectivamente				
		if ( winID != null )	{			
			if (  winID.name != undefined) winID.close();
		}
		winID = null;				
	}
	else	{
		// IExplorer  
		if ( winID != null)	winID.close();
		winID = null;
	}	  
}


// Cierra la ventana de mapa
function closeMapa() {
  if ( iBPmix==2 || iBPmix==4) {
    //Netscape, en plataforma Win o Mac respectivamente				
		if ( winMapa != null )	{			
			if (  winMapa.name != undefined) winMapa.close();
		}
		winMapa = null;				
	}
	else	{
		// IExplorer  
		if ( winMapa != null)	winMapa.close();
		winMapa = null;
	}	  
}


// Funcion de eliminacion de blancos
function Trim(Texto) {
	return(LTrim(RTrim(Texto)))
}

// Eliminacion de blancos por la izquierda.
function LTrim(Texto) {
	var EspaciosInicio; // Expresion regular que elimina los espacios en blanco al principio de una cadena de texto.

	EspaciosInicio = /^ */

	// Quitamos los espacios
	return(Texto.replace(EspaciosInicio, ""))
}


// Eliminacion de blancos por la derecha.
function RTrim(Texto) {
	var EspaciosFin; // Expresion regular que elimina los espacios en blanco al final de una cadena de texto.

	EspaciosFin = / +$/

	// Quitamos los espacios
	return(Texto.replace(EspaciosFin, ""))
}

// Función de precarga de imágenes.
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];
	    	}
  }
}

// Función que restaura al estado inicial de las imágenes.
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_findObj(n, d) { //v4.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);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

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];
  	}
}

//*********************** FUNCIONES DE VALIDACIONES DE DATOS **************************************//

// Funcion que chequea un dato email
function isEmail (email) {
   invalidChars = " /:,;"

   if ( Trim(email) == "") return false;

   for (i=0; i<invalidChars.length; i++) {
      badChar = invalidChars.charAt(i)
      if (email.indexOf(badChar,0) > -1) return false
   }
   
   atPos = email.indexOf("@",1)
   if (atPos == -1) { return false }

   if (email.indexOf("@",atPos+1) > -1) { return false }

   periodPos = email.indexOf(".",atPos)
   if (periodPos == -1) { return false }

   if (periodPos+3 > email.length) { return false }

   atPos = email.indexOf("@.",1)
   if (atPos > -1) { return false }

   atPos = email.indexOf(".@",1)
   if (atPos > -1) { return false }

   atPos = email.indexOf("..",1)
   if (atPos > -1) { return false }

   //punto al principio
   badChar = email.charAt(0)
   if (badChar.indexOf('.',0) > -1) return false;

   //punto al final
   badChar = email.charAt(email.length-1)
   if (badChar.indexOf('.',0) > -1) return false;

   //repetimos algunas validaciones
   if (email.indexOf('@',0)==-1 || email.indexOf(';',0)!=-1
		|| email.indexOf(' ',0)!=-1 || email.indexOf('/',0)!=-1
		|| email.indexOf(';',0)!=-1 || email.indexOf('<',0)!=-1
		|| email.indexOf('>',0)!=-1 || email.indexOf('*',0)!=-1
		|| email.indexOf('|',0)!=-1 || email.indexOf('`',0)!=-1
		|| email.indexOf('&',0)!=-1 || email.indexOf('$',0)!=-1
		|| email.indexOf('!',0)!=-1 || email.indexOf('"',0)!=-1
		|| email.indexOf(':',0)!=-1) {
			return false;
	}
   return true;
}

// Comprueba si un campo es numérico.
function isNumeric(nombreCampo) {         
  var num=0;
  var numeros=new Array("1","2","3","4","5","6","7","8","9","0")


   for(k=0;k<=nombreCampo.length;k++) {
      for(m=0;m<=numeros.length-1;m++) {
         if(nombreCampo.charAt(k) == numeros[m])
              num++;   
       }
   }
   if(num!=0 && num==nombreCampo.length) return true
   else return false;
}       

// Función que valida un objeto (tipo INPUT TYPE="text") que almacena una fecha. Los principales formatos son:
//  dd/mm/aaaa (formato general)        d/mm/aaaa     dd/m/aaaa     d/m/aaaa      dd-mm-aaaa
function isValidDate ( objeto) {
	if ( Trim( objeto.value) == "") return false;
	if ( !cambiarformato(objeto.value,objeto)) return false;
	if (objeto.value.length!=10 || !isValidFormat (objeto.value)) return false;
  
	var cadena = objeto.value;
	var fechaintr = new Date();
	
	var diaintr=cadena.substr(0,2);
	var mesintr=cadena.substr(3,2);
	var anointr=cadena.substr(6,4);
	
	fechaintr.setDate( diaintr);
	fechaintr.setMonth(mesintr - 1);
	fechaintr.setFullYear(anointr);

	if (diaintr>31 || mesintr>12)	return false;
	else 	{
		if (diaintr=="29" && mesintr=="02") {
			if (anointr%400==0 || (anointr%4==0 && anointr%100!=0))	return true;
			else return false;
		}
		else {
			if ((mesintr=="04" || mesintr=="06" || mesintr=="09" || mesintr=="11") && (diaintr>30)) return false;
			else if (mesintr=="02" && diaintr>"29") return false;
		}
	}
	return true;
}

// Esta función cambia el formato d-m-aaaa a dd/mm/aaaa	
function cambiarformato(cadena,objeto) {
	var long1=cadena.indexOf("/");
	if (long1<0) long1=cadena.indexOf("-");
	if (long1<0) return false;
	
	var diaCadena=cadena.substr(0,long1);
	cadena = cadena.substr(long1 + 1,cadena.length-long1);
	var long2=cadena.indexOf("/");
	if (long2<0) long2=cadena.indexOf("-")
	if (long2<0) return false;
		
	var mesCadena=cadena.substr(0,long2);
	var anoCadena = cadena.substr(long2 + 1,cadena.length-long2);
	objeto.value = ( (parseInt(diaCadena,10)< 10) ? "0": "") + String(parseInt(diaCadena,10)) + "/" + ( (parseInt(mesCadena,10)< 10) ? "0" : "") + String(parseInt(mesCadena,10)) + "/" + anoCadena;
	return true;
}


//	La función validar formato, comprueba el formato dd/mm/aaaa
function isValidFormat (cadena) {  
	var diaintr=cadena.substr(0,2);
	var mesintr=cadena.substr(3,2);
	var anointr=cadena.substr(6,4);
	var linea1=cadena.substr(2,1);
	var linea2=cadena.substr(5,1);
	
	if ( isNaN( parseInt( diaintr,10)) || isNaN(parseInt( mesintr,10)) || isNaN(parseInt(anointr,10)) || linea1!=linea2 || linea1!="/") {
		return false;
  }
	
	return true;
}

// Método de comparación de fechas. Formato de entrada de fechas dd/mm/aaaa: 
// Retorna FALSE si fec2 < fec1 y TRUE en caso contrario.
function compararFechas(fec1,fec2){

  // Fecha 1
	var diaintr1=fec1.substring(0,fec1.indexOf("/"));
	var mesintr1=fec1.substring(fec1.indexOf("/")+1,fec1.indexOf("/",3));
	var anointr1=fec1.substring(fec1.indexOf("/",3)+1,fec1.length);

  // Fecha 2
	var diaintr2=fec2.substring(0,fec2.indexOf("/"));
	var mesintr2=fec2.substring(fec2.indexOf("/")+1,fec2.indexOf("/",3));
	var anointr2=fec2.substring(fec2.indexOf("/",3)+1,fec2.length);

  // Conversion a tipo Date de Fecha 1
	var fechaintr1=new Date(anointr1,mesintr1,diaintr1);
	fechaintr1.setDate(diaintr1);
	fechaintr1.setMonth(mesintr1 - 1);
	fechaintr1.setFullYear(anointr1);
	fechaintr1.setHours(0);

  // Conversion a tipo Date de Fecha 2
	var fechaintr2=new Date(anointr2,mesintr2,diaintr2);
	fechaintr2.setDate(diaintr2);
	fechaintr2.setMonth(mesintr2 - 1);
	fechaintr2.setFullYear(anointr2);
	fechaintr2.setHours(0);

	var milis1=fechaintr1.getTime();	
	var milis2=fechaintr2.getTime();
	if (milis2 < milis1) return false;
	else return true;
}


