/**************************************************************************/
/* boolean isDate(String)                                                 */
/**************************************************************************/
/* Permite comprobar si la fecha introducida por el usuario 			  */
/* tiene una estructura correcta.                                         */
/**************************************************************************/
function isDate(sFecha) 
{

	var bError = 0;
	var sDia = "";
	var sMes = "";
	var sAnyo = "";
	var i = 0;
	sMensaje = "Se han encontrado los siguientes errores:\n"
	aMensajeError = new Array();
	aMensajeError[0] = '';
	aMensajeError[1] = 'Error en el formato de fecha. Falta algun dato.';
	aMensajeError[2] = 'El dia "dd" es incorrecto';
	aMensajeError[3] = 'El mes "mm" es incorrecto';
	aMensajeError[4] = 'El año "aa" o "aaaa" es incorrecto';
	aMensajeError[5] = 'El numero de dias en Febrero no corresponde'; 
	aMensajeError[6] = 'El numero de dias en ese mes no corresponde';
	aMensajeError[7] = 'Error en el formato de fecha. Separador incorrecto.';

	var daysInMonth = new Array(31,29,31,30,31,30,31,31,30,31,30,31);
	
	aFecha = sFecha.split("/")
	
	if (aFecha.length == 3) {
		sDia = aFecha[0]
		sMes = aFecha[1]
		sAnyo = aFecha[2]
	}
	else {
		aFecha = sFecha.split("-")
		if (aFecha.length == 3) {
			
			sFecha= sFecha.replace(/-/g, "/")
			sDia = aFecha[0]
			sMes = aFecha[1]
			sAnyo = aFecha[2]

		}
		else
		{
			sMensaje += aMensajeError[7] + "\n";
			bError = 1;
		}
	}
	
	
	if (aFecha.length == 3) {	
		if (sDia != "" && sMes != "" && sAnyo != "") {
		
		
			if (isNum(sDia)) {
				if (( parseInt(sDia) > 31 ) || ( parseInt(sDia) < 1 ) || sDia < "0" || sDia > "9") {
					sMensaje += aMensajeError[2] + "\n"
					bError = 1;
				}
			} else {
				sMensaje += aMensajeError[2] + "\n"
				bError = 1;
			}
			
			
			if (isNum(sMes)) {
				if (( parseInt(sMes) > 12 ) || ( parseInt(sMes) < 1 ) || sMes < "0" || sMes > "9") {
					sMensaje += aMensajeError[3] + "\n"
					bError = 1;
				}
			} else {
				sMensaje += aMensajeError[3] + "\n"
				bError = 1;
			}
			
			
			if (( parseInt(sMes) == 2) && ( parseInt(sDia) > daysInFebruary(parseInt(sAnyo)) )) {
				sMensaje += aMensajeError[5] + "\n";
				bError = 1;
			}
			else {
				//Control "Dia del Mes" correcto, menos febrero
				if (daysInMonth[parseInt(sMes)-1] < parseInt(sDia)) {
					sMensaje += aMensajeError[6] + "\n";
					bError = 1;
				}
			}
		
			
			if (isNum(sAnyo)) {
				if ( (sAnyo.length != 2) && (sAnyo.length != 4) ) {
					sMensaje += aMensajeError[4] + "\n"; 
					bError = 1;
				}
			} else {
				sMensaje += aMensajeError[4] + "\n"
				bError = 1;
			}
		
		
		}
		else {
			sMensaje += aMensajeError[1] + "\n"; 
			bError = 1;
		}
	}
		
		if ( bError != 0 ) {
			// Este alert mostraria el mensaje concretando el error en caso de ser necesario
			return false;
		}
		else return true;

}

/**************************************************************************/
/* boolean daysInFebruary (year)                                          */
/**************************************************************************/
/* Permite comprobar si el año introducido por el usuario 			  	  */
/* es bisiesto.                                         				  */
/**************************************************************************/

function daysInFebruary (year)
{   
	// Febrero tiene 29 dias en cualquier año divisible por 400 excepto los siglos
    return (  ((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0) ) ) ? 29 : 28 );
}	



/**************************************************************************/
/* boolean isMail(String)                                                 */
/**************************************************************************/
/* Permite comprobar si la dirección de correo introducida por el usuario */
/* tiene una estructura correcta.                                         */
/**************************************************************************/

function isMail (sCadena) {

	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(sCadena)) 
		return (true)
	return (false)

}



/******************************************************************************/
/* boolean isNum(String)                                                      */
/******************************************************************************/
/* Devuelve true si el parametro que se le pasa esta formado solo por numeros */
/* en otro caso devuelve false.                                               */
/******************************************************************************/
function isNum(valor) {
	valor = valor.toString();
	ret = true
	
	if (valor.length == 0) ret = false;
	
	for (var i = 0; i < valor.length; i++)
		if ((valor.substring(i, i+1) < "0") || (valor.substring(i, i+1) > "9"))
			ret = false;

	return ret
}



/******************************************************************************/
/* boolean isAlphaNum(String)                                                 */
/******************************************************************************/
/* Devuelve true si el parametro que se le pasa esta formado por caracteres   */
/* alfanumericos, en otro caso devuelve false.                                */
/******************************************************************************/
function isAlphaNum(valor) {
	valor = valor.toString();
	ret = true;
	
/*
	aNoValid = new Array ("<", ">", "\\", "{", "}", "[", "]", "†", "ˆ", "", "¶")
 	se ha quitado "<" y ">" para poder poner html dentro de los text y memos
*/
	aNoValid = new Array ("\\", "{", "}", "[", "]", "†", "ˆ", "", "¶") 
	
	for (var i = 0; i < valor.length; i++) {
	  if (isInChar(valor.substring(i, i+1) , aNoValid)) {
  		ret = false
		}
	}
	
	return ret
}



/**************************************************************************/
/* String javaTrim(String)                                                */
/**************************************************************************/
/* Simula el comportamiento del TRIM. Recibe como parametro una cadena y  */
/* devuelve la cadena sin espacios en blanco.                             */
/**************************************************************************/

function javaTrim(cadena) {
	sResultado=""

	for (i=0;i<cadena.length;i++) {
		if (cadena.charAt(i)!=" ") {
			sResultado = sResultado + cadena.charAt(i)
		}
	}

	return sResultado
}



/**************************************************************************/
/* int posicionForm(Form, String)                                         */
/**************************************************************************/
/* Devuelve la posicion de un campo dentro del array de elementos de un   */
/* formulario. En caso de que no pertenezca devuelve -1.                  */
/**************************************************************************/
function posicionForm(frm, sCampo) {
  for (n = 0; n < frm.elements.length; n++) {
     if (frm.elements[n].name == sCampo) return n;
  }
  return -1;
}



/**************************************************************************/
/* boolean isIn(char, *char)                                              */
/**************************************************************************/
/* Devuelve true en caso de que el caracter sea uno de los que forman el  */
/* array. En caso de que no sea ninguno, devuelve false.                  */
/**************************************************************************/
function isInChar(sChar, aCharNoValid) {

  for (mm = 0; mm < aCharNoValid.length; mm++) {
    if (sChar == aCharNoValid[mm]) {
      return true;
    }
  }
  
  return false;

}

function volver_atras()
{
	 window.history.go(-1);	
//window.history.back();
}

function volver_atras2()
{
	 window.history.go(-2);	
//window.history.back();
}


function trim (cad)
{
    // Remueve los espacios a los lados, similar a JavaTrim
    return cad.replace(/(^\s*)|(\s*$)/g, "");
}
 

function abrirCalendario(dia,mes,anio,op,campo)

{
	var urlCalendario = "/includes/php/calendario.php?day=" + dia + "&month=" + mes + "&year=" + anio + "&op=" + op + "&campo=" + campo;
	calendario=window.open(urlCalendario,"win3", "height=200,width=200,menubar=no,resizable=no,status=yes,scrollbars=no,toolbar=no");
	//calendario.focus();	
	//alert('df');
	
}


function validata(tarjeta) {

	text=tarjeta;
	if (text.length <16 || text.length>16) {
	
	//	alert("Longitud incorrecta!!");
		return false;
	
	}
	if (isNaN (text)){
		
	//	alert("Numero incorrecto!!");
		return false;
		
	}
	
	var ch;
	var pila1=0;
	var pila2=0;

	for(i=0 ; i<=15; i++) {
	ch = text.substring(i,i+1);
		switch (i){
		case 0:
		case 2:
		case 4:
		case 6:
		case 8:
		case 10:
		case 12:
		case 14:
				num1=ch*2
				if (num1 > 9) {
								num1=num1-9
							}
				pila1+=parseInt(num1)
				break
	    default:
				num2=ch
				pila2+=parseInt(num2)
				break
		}
	}
	var totsum;
	totsum = (pila1+pila2) % 10

	if (totsum==0 && pila1<=150) {
		//alert('LA TARJETA NRO: ' + tarjeta+" ES OK");
		return true;
	} else { 
	//	alert('LA TARJETA NRO: ' + tarjeta+" NO ES VALIDA");
	return false;
	 }
		
}