//Funciones javascript para comprobar los campos de un formulario
//Versión 1.0 Víctor J. Chamorro Ipdea.com 07/02/2007
//Versión 1.1 Víctor J. Chamorro Ipdea.com 23/02/2007 -- Incluida comprobación de correos electrónicos
//Versión 1.2 Víctor J. Chamorro Ipdea.com 22/04/2007 -- Incluida comprobación de campos sin caracteres especiales, solo letras y números y la comprobación de URLs http
//Versión 1.3 Víctor J. Chamorro Ipdea.com **/**/2007 -- Incluida función PosicionaSelect para posicionar un desplegable
//Versión 1.4 Víctor J. Chamorro Ipdea.com 19/11/2007 -- Incluida función replace para remplazar textos en javascript
//Versión 1.5 Víctor J. Chamorro - Germán Guirao Ipdea.com 22/11/2007 -- Añadidos:
//																		- prototype para str_replace de Strings 
//																		- prototype in_array para Arrays 
//																		- CompruebaRadios
//Versión 1.6 Víctor J. Chamorro Ipdea.com 23/11/2007 -- Incluida función window.url_get(campo) para extracción de datos pasados por URL
//Versión 2.0 Víctor J. Chamorro Ipdea.com 26/11/2007 -- 	- Añadida funcionalidad para comprovación mostrando los mensajes en una capa
//															- Refinado CompruebaFechas()
//															- Refinado CompruebaCamposNumericos()
//Versión 2.1 Víctor J. Chamorro Ipdea.com 14/12/2007 --  	- Añadida funcionalidad para comprovación de DNIS
//															- Arreglado bug en comprueba con modo 1
//															- Mejoradas las comprobaciones de mail
//Version 2.2 Víctor J. Chamorro Ipdea.com 06/02/2008 -- 	- Arreglado bug en CompruebaNumericos y longitud que no permite longitud
//																cero, debe permitila para poder ser un campo no obligatorio
//Version 2.3 Víctor J. Chamorro Ipdea.com 20/05/2008 --	- Nueva comprobación para NIES
//
//___________________________________________________________________________________________

var GLOBAL_formulario;
var GLOBAL_modo_mensajes = 0;
var GLOBAL_mensaje_ok = "";
var GLOBAL_mensaje_ko = "";
var GLOBAL_formulario_ok = false;
var PRIVATE_comprovados = new Array();
//___________________________________________________________________________________________

function CompruebaCamposNif(campos) {

	dnis=campos['dnis'];	
	var g_ok = true;
	
	if (typeof(dnis) != "object") return true;
	
	for(var i=0;i<dnis.length;i++){
		
		if (typeof(eval("GLOBAL_formulario."+dnis[i])) == "object"){
			
			if (PRIVATE_comprovados.in_array(dnis[i])) continue;
			
			var campo = eval("GLOBAL_formulario."+dnis[i]);
	
  			var numero = campo.value.substr(0,campo.value.length-1);
  
			var let = campo.value.substr(campo.value.length-1,1);
				  
			numero = numero % 23;
				  
			var letra='TRWAGMYFPDXBNJZSQVHLCKET';
				  
			letra=letra.substring(numero,numero+1);

			if (letra!=let.toUpperCase()){
				Mensaje(campo, "El campo "+dnis[i]+" no es un DNI correcto");
				if (GLOBAL_modo_mensajes == 0){
					return false;
				}else{
					PRIVATE_comprovados[PRIVATE_comprovados.length] = dnis[i];
					g_ok = false;	
				}
			}else{
				MensajeOk(campo);
			}
		}else{
			alert("ERROR. CompruebaCamposNif:\n "+dnis[i]+" no es un campo válido para su comprobación");	
		}
	}
	if (GLOBAL_modo_mensajes == 0){ 
		return true;
	}else{
		return g_ok;	
	}
}
//____________________________________________________________________________________________

function CompruebaCamposNumericos(campos){
	
	var numericos = campos['numericos'];
	var g_ok = true;
	
	if (typeof(numericos) != "object") return true;
	
	for(var i=0;i<numericos.length;i++){
		if (typeof(eval("GLOBAL_formulario."+numericos[i])) == "object"){
			var campo = eval("GLOBAL_formulario."+numericos[i]);
			if (PRIVATE_comprovados.in_array(numericos[i])) continue;
			//var regexp = /^([0-9]+)(((,+)([0-9]+))?)+$/i;
			var regexp= /^\d+(\,\d+)?$/i;			
			if (!regexp.test(campo.value) && campo.value.length > 0){
				var title = "";
				if (campo.title.length > 0) title = campo.title+" ";
				Mensaje(campo, "El campo "+title+"debe ser numérico");
				if (GLOBAL_modo_mensajes == 0){
					return false;
				}else{
					PRIVATE_comprovados[PRIVATE_comprovados.length] = numericos[i];
					g_ok = false;	
				}
			}else{
				MensajeOk(campo);
			}
		}else{
			alert("ERROR. CompruebaCamposNumericos:\n "+numericos[i]+" no es un campo válido para su comprobación");	
		}
		
	}
	if (GLOBAL_modo_mensajes == 0){ 
		return true;
	}else{
		return g_ok;	
	}
}
//___________________________________________________________________________________________

function CompruebaCamposFecha(campos){
	
	var fechas = campos['fechas'];
	var g_ok = true;
	
	if (typeof(fechas) != "object") return true;
	
	for(var i=0;i<fechas.length;i++){
		if (typeof(eval("GLOBAL_formulario."+fechas[i])) == "object"){
			var campo = eval("GLOBAL_formulario."+fechas[i]);
			
			if (PRIVATE_comprovados.in_array(fechas[i])) continue;
			
			if (campo.value.length > 0 && !valFecha(campo)){
				var title = "";
				if (campo.title.length > 0) title = campo.title+" ";
				Mensaje(campo, "El campo "+title+"contiene un formato de fecha incorrecto");
				
				//alert("El campo "+title+"contiene un formato de fecha incorrecto");
				//campo.focus();
				if (GLOBAL_modo_mensajes == 0){
					return false;
				}else{
					PRIVATE_comprovados[PRIVATE_comprovados.length] = fechas[i];
					g_ok = false;	
				}
			}else{
				MensajeOk(campo);
			}
		}else{
			alert("ERROR. CompruebaCamposFecha:\n "+fechas[i]+" no es un campo válido para su comprobación");	
		}
	}
	if (GLOBAL_modo_mensajes == 0){ 
		return true;
	}else{
		return g_ok;	
	}
}
//___________________________________________________________________________________________

function CompruebaCamposEMail(campos){
	
	var emails = campos['emails'];
	var g_ok = true;
	
	
	if (typeof(emails) != "object") return true;
	
	for(var i=0;i<emails.length;i++){
		if (typeof(eval("GLOBAL_formulario."+emails[i])) == "object"){
			var campo = eval("GLOBAL_formulario."+emails[i]);
			
			if (PRIVATE_comprovados.in_array(emails[i])) continue;

			var title = "";
			if (campo.title.length > 0) title = campo.title+" ";
			
			if (campo.value.trim().length > 0){
				if (!valMail(campo)){
					
					Mensaje(campo, "El campo "+title+"contiene un formato de correo incorrecto");
					//alert("El campo "+title+"contiene un formato de correo incorrecto");
					//campo.focus();
					if (GLOBAL_modo_mensajes == 0){
						return false;
					}else{
						PRIVATE_comprovados[PRIVATE_comprovados.length] = emails[i];
						g_ok = false;	
					}
				}else{
					MensajeOk(campo);
				}
			}else{
				Mensaje(campo, "El campo "+title+"contiene un formato de correo incorrecto");
				if (GLOBAL_modo_mensajes == 0){
					return false;
				}else{
					g_ok = false;	
				}
			}
		}else{
			alert("ERROR. CompruebaCamposEMail:\n "+emails[i]+" no es un campo válido para su comprobación");	
		}
	}
	if (GLOBAL_modo_mensajes == 0){ 
		return true;
	}else{
		return g_ok;	
	}
}
//___________________________________________________________________________________________

function CompruebaCamposObligatorios(campos){
	var obligatorios = campos['obligatorios'];
	var g_ok = true;
	
	
	if (typeof(obligatorios) != "object") return true;
	
	for(var i=0;i<obligatorios.length;i++){
		if (typeof(eval("GLOBAL_formulario."+obligatorios[i])) == "object"){
			var campo = eval("GLOBAL_formulario."+obligatorios[i]);
			
			if (PRIVATE_comprovados.in_array(obligatorios[i])) continue;
	
			if (campo.value.length < 1 || campo.value == '-1'){				
				var title = "";
				if (campo.title.length > 0) title = campo.title+" ";
				Mensaje(campo, "El campo "+title+"es obligatorio");
				
				//alert("El campo "+title+"es obligatorio");
				//campo.focus();
				if (GLOBAL_modo_mensajes == 0){
					return false;
				}else{
					PRIVATE_comprovados[PRIVATE_comprovados.length] = obligatorios[i];
					g_ok = false;	
				}
			}else{
				MensajeOk(campo);
			}
		}else{
			alert("ERROR. CompruebaCamposObligatorios:\n "+obligatorios[i]+" no es un campo válido para su comprobación");	
		}
	}
	if (GLOBAL_modo_mensajes == 0){ 
		return true;
	}else{
		return g_ok;	
	}
}
//___________________________________________________________________________________________

function CompruebaCamposCaracteresEspeciales(campos){
	var noespeciales = campos['especiales'];
	var g_ok = true;
	
	
	if (typeof(noespeciales) != "object") return true;
	
	for(var i=0;i<noespeciales.length;i++){
		if (typeof(eval("GLOBAL_formulario."+noespeciales[i])) == "object"){
			var campo = eval("GLOBAL_formulario."+noespeciales[i]);
			
			if (PRIVATE_comprovados.in_array(noespeciales[i])) continue;
			
			var regexp = /^([a-z]|[0-9]|_)+$/i;
			
			if (!regexp.test(campo.value)){			
				var title = "";
				if (campo.title.length > 0) title = campo.title+" ";
				Mensaje(campo, "El campo "+title+" contiene caracteres especiales");
				//alert("El campo "+title+" contiene caracteres especiales");
				//campo.focus();
				if (GLOBAL_modo_mensajes == 0){
					return false;
				}else{
					PRIVATE_comprovados[PRIVATE_comprovados.length] = noespeciales[i];
					g_ok = false;	
				}	
			}else{
				MensajeOk(campo);
			}
		}else{
			alert("ERROR. CompruebaCamposCaracteresEspeciales:\n "+obligatorios[i]+" no es un campo válido para su comprobación");	
		}
	}
	if (GLOBAL_modo_mensajes == 0){ 
		return true;
	}else{
		return g_ok;	
	}
}
//___________________________________________________________________________________________

function CompruebaCamposURL(campos){
	var urls = campos['urls'];
	var g_ok = true;
	
	
	if (typeof(urls) != "object") return true;
	
	for(var i=0;i<urls.length;i++){
		if (typeof(eval("GLOBAL_formulario."+urls[i])) == "object"){
			var campo = eval("GLOBAL_formulario."+urls[i]);

			if (PRIVATE_comprovados.in_array(urls[i])) continue;
			if (campo.value.length == 0) return true;
			
			var regexp = new RegExp("^http[s]?://([a-z]|[0-9]|_|.|-)+$", "i");
			
			if (!regexp.test(campo.value)){			
				var title = "";
				if (campo.title.length > 0) title = campo.title+" ";
				Mensaje(campo, "El campo "+title+" no es una url correcta");
				//alert("El campo "+title+" no es una url correcta");
				//campo.focus();
				if (GLOBAL_modo_mensajes == 0){
					return false;
				}else{
					PRIVATE_comprovados[PRIVATE_comprovados.length] = urls[i];
					g_ok = false;	
				}	
			}else{
				MensajeOk(campo);
			}
		}else{
			alert("ERROR. CompruebaCamposURL:\n "+obligatorios[i]+" no es un campo válido para su comprobación");	
		}
	}
	if (GLOBAL_modo_mensajes == 0){ 
		return true;
	}else{
		return g_ok;	
	}
}
//___________________________________________________________________________________________

function CompruebaCamposRadio(campos){
	
	//****************Caso especial, los radios los instanciamos con el ID*********************//
	
	var radios = campos['radios'];
	var g_ok = true;
	
	
	if (typeof(radios) != "object") return true;
	var x = 0;
	for(x=0;x<radios.length;x++){
		if (typeof(document.getElementById(radios[x])) == "object"){
			
			if (PRIVATE_comprovados.in_array(radios[i])) continue;
			
			var radiogroup = document.getElementById(radios[x]).name;
			var itemchecked = false;
			for (var j = 0 ; j < radiogroup.length ; ++j) {
				if (radiogroup[j].checked) {
				itemchecked = true;
				break;
				}
			} 
			if (!itemchecked){
				var title = "";
				if (document.getElementById(radios[x]).title.length > 0) title = document.getElementById(radios[x]).title+" ";
				Mensaje(document.getElementById(radios[x]), title+" no tiene respuesta");
				//alert(title+" no tiene respuesta");
				//document.getElementById(radios[x]).focus();
				if (GLOBAL_modo_mensajes == 0){
					return false;
				}else{
					PRIVATE_comprovados[PRIVATE_comprovados.length] = radios[i];
					g_ok = false;	
				}	
			}else{
				MensajeOk(campo);
			}
		}else{
			alert("ERROR. CompruebaCamposRadio:\n "+radios[i]+" no es un campo válido para su comprobación");	
		}
	}
	if (GLOBAL_modo_mensajes == 0){ 
		return true;
	}else{
		return g_ok;	
	}
}
//___________________________________________________________________________________________

function CompruebaLongitudCampo(campos){
	
	/**
	*
	*	var comprovacion = new Array();
	*	comprovacion[0] = 'nombre_del_campo';
	*	comprovacion[1] = 'tipo_de_comprovacion';
	*	comprovacion[2] = 'tamaño a comprovar';
	*	
	*	campos['longitudes'] = new Array(comprovacion);
	*
	**/
	
	var longitudes = campos['longitudes'];
	var g_ok = true;
	
	
	if (typeof(longitudes) != "object") return true;
	
	for(var i=0;i<longitudes.length;i++){
		if (typeof(eval("GLOBAL_formulario."+longitudes[i][0])) == "object"){
			var campo = eval("GLOBAL_formulario."+longitudes[i][0]);

			if (PRIVATE_comprovados.in_array(longitudes[i][0])) continue;
			
			var Ok;
			
			switch(longitudes[i][1]){
				case '=':
					Ok = (campo.value.length == longitudes[i][2]);
					break;
				case '<':
					Ok = (campo.value.length < longitudes[i][2]);
					break;
				case '>':
					Ok = (campo.value.length > longitudes[i][2]);
					break;
			}
			
			if (!Ok  && campo.value.length > 0){			
				var title = "";
				if (campo.title.length > 0) title = campo.title+" ";
				Mensaje(campo, "El campo "+title+" no tiene un tamaño correcto");
				//alert("El campo "+title+" no es una url correcta");
				//campo.focus();
				if (GLOBAL_modo_mensajes == 0){
					return false;
				}else{
					PRIVATE_comprovados[PRIVATE_comprovados.length] = longitudes[i][0];
					g_ok = false;	
				}	
			}else{
				MensajeOk(campo);
			}
		}else{
			alert("ERROR. CompruebaCamposURL:\n "+obligatorios[i]+" no es un campo válido para su comprobación");	
		}
	}
	if (GLOBAL_modo_mensajes == 0){ 
		return true;
	}else{
		return g_ok;	
	}
}
//___________________________________________________________________________________________

function CompruebaCamposNie(campos) {

	nies=campos['nies'];	
	var g_ok = true;
	
	if (typeof(nies) != "object") return true;
	
	for(var i=0;i<nies.length;i++){
		
		if (typeof(eval("GLOBAL_formulario."+nies[i])) == "object"){
			
			if (PRIVATE_comprovados.in_array(nies[i])) continue;
			
			var campo = eval("GLOBAL_formulario."+nies[i]);
			
			var primero = campo.value.substr(0,1).str_replace("X","0");
			
			var numero = primero+campo.value.substr(1,campo.value.length-1);			
  
			var let = campo.value.substr(campo.value.length-1,1);
				  
			numero = numero % 23;
				  
			var letra='TRWAGMYFPDXBNJZSQVHLCKET';
				  
			letra=letra.substring(numero,numero+1);

			var regexp = new RegExp("^[T]{1}[A-Z0-9]{8}$", "i");			
			
			if (letra!=let.toUpperCase() && !regexp.test(campo.value)){
				
				Mensaje(campo, "El campo "+nies[i]+" no es un NIE correcto");
				if (GLOBAL_modo_mensajes == 0){
					return false;
				}else{
					PRIVATE_comprovados[PRIVATE_comprovados.length] = nies[i];
					g_ok = false;	
				}
			}else{
				MensajeOk(campo);
			}
		}else{
			alert("ERROR. CompruebaCamposNie:\n "+nies[i]+" no es un campo válido para su comprobación");	
		}
	}
	if (GLOBAL_modo_mensajes == 0){ 
		return true;
	}else{
		return g_ok;	
	}
}
//____________________________________________________________________________________________

function CompruebaCamposNieNif(campos){
	
	var nienif = campos['nienif'];
	
	
}
//____________________________________________________________________________________________

function CompruebaCampos(campos, formulario){
	
	if (typeof(formulario) != "object" || typeof(campos) != "object"){
		alert("ERROR. CompruebaCampos:\n  no se han pasado los datos corretos");	
		return false;
	}
	PRIVATE_comprovados = new Array();
	GLOBAL_formulario = formulario;
	var ok = false;
	
	switch (GLOBAL_modo_mensajes){
		case 0:			
			if (CompruebaCamposNumericos(campos))
				if (CompruebaCamposFecha(campos))
					if (CompruebaCamposEMail(campos))
						if (CompruebaCamposObligatorios(campos))
							if (CompruebaCamposCaracteresEspeciales(campos))
								if (CompruebaCamposURL(campos))
									if (CompruebaCamposRadio(campos))
										if (CompruebaCamposNif(campos))
											if (CompruebaCamposNie(campos))
												if (CompruebaLongitudCampo(campos))
													ok = true;
			break;		
		case 1:
			ok = CompruebaCamposObligatorios(campos);
			ok = (CompruebaCamposFecha(campos) && ok);
			ok = (CompruebaCamposCaracteresEspeciales(campos) && ok);
			ok = (CompruebaCamposNumericos(campos) && ok);
			
			ok = (CompruebaCamposEMail(campos) && ok);			
			ok = (CompruebaCamposURL(campos) && ok);
			ok = (CompruebaCamposRadio(campos) && ok);
			ok = (CompruebaCamposNif(campos) && ok);
			ok = (CompruebaCamposNie(campos) && ok);
			ok = (CompruebaLongitudCampo(campos) && ok);
			break;	
	}
	return ok;
}
//___________________________________________________________________________________________

function Mensaje(campo, mensaje){
	if (typeof(campo) != "object" || typeof(mensaje) != "string"){
		alert("ERROR. CompruebaCampos::Mensaje:\n  no se han pasado los datos corretos");	
		return false;
	}
	
	switch(GLOBAL_modo_mensajes){
		case 0:
			alert(mensaje);			
			campo.focus();
			break;
		case 1:
			var capa = document.getElementById('divComprueba_'+campo.name);
			if (capa != null){
				
				capa.style.display = '';
				capa.innerHTML = GLOBAL_mensaje_ko;
				
			}else{
				alert("ERROR. CompruebaCampos::Mensaje:\n el campo "+campo.name+" no tiene un divComprueba_"+campo.name);
				return;
			}
			break;
	}
}
//___________________________________________________________________________________________

function MensajeOk(campo){
	if (typeof(campo) != "object"){
		alert("ERROR. CompruebaCampos::Mensaje:\n  no se han pasado los datos corretos");	
		return false;
	}
	switch(GLOBAL_modo_mensajes){
		case 1:
			var capa = document.getElementById('divComprueba_'+campo.name);
			if (capa != null){
				
				capa.style.display = '';
				capa.innerHTML = GLOBAL_mensaje_ok;
				
			}else{
				alert("ERROR. CompruebaCampos::Mensaje:\n el campo "+campo.name+" no tiene un divComprueba_"+campo.name);
				return;
			}
		break;
	}
	
}
//___________________________________________________________________________________________

function CargaEventoCampos(){
	if (typeof(GLOBAL_formulario) == "object"){
		for(var j=0; j<GLOBAL_formulario.elements.length; j++){
			campo = GLOBAL_formulario.elements[j];
			if (campo.type != "hidden"){
				if (campo.type == "select-one"){
					var onchangeold=campo.onchange;
					campo.onchange2 = onchangeold;
					campo.onchange=function(){
						
						if (CompruebaCampos(Campos, GLOBAL_formulario)){
							GLOBAL_formulario_ok = true;						
						}else{
							GLOBAL_formulario_ok = false;	
						}
						
						if (typeof(this.onchange2) == 'function'){
							this.onchange2();							
							this.onchange=this.onchange2;
							this.onchange2 = null;
						}
						
					}
					//campo.onfocus=AgregaCompruebaCampo(this);
				
				}
				if (campo.type == "text"){
					//var onkeyupold=campo.onkeyup;
					//campo.onkeyup2 = onkeyupold;
					campo.onkeyup = function(){
						
						if (CompruebaCampos(Campos, GLOBAL_formulario)){
							GLOBAL_formulario_ok = true;						
						}else{
							GLOBAL_formulario_ok = false;	
						}
						
						/*if (typeof(this.onkeyup2) == 'function' && (this.onkeyup2 != this.onkeyup) ){
							this.onkeyup2();
							this.onkeyup=this.onkeyup2;
							this.onkeyup2 = null;
						}*/
					}
					//campo.onfocus=AgregaCompruebaCampo(this);
				}
				if (campo.type == "textarea"){
					//var onkeyupold=campo.onkeyup;
					//campo.onkeyup2 = onkeyupold;
					campo.onkeyup = function(){
						
						if (CompruebaCampos(Campos, GLOBAL_formulario)){
							GLOBAL_formulario_ok = true;						
						}else{
							GLOBAL_formulario_ok = false;	
						}
						
						/*if (typeof(this.onkeyup2) == 'function' && (this.onkeyup2 != this.onkeyup) ){
							this.onkeyup2();
							this.onkeyup=this.onkeyup2;
							this.onkeyup2 = null;
						}*/
					}
					//campo.onfocus=AgregaCompruebaCampo(this);
				}
			}
		}
	}
}
//___________________________________________________________________________________________

function AgregaCompruebaCampo(obj, type){
	if(typeof(Campos) == "object" && typeof(obj) == "object" && typeof(type) == "object"){
		for(y=0;y<type.length;y++){
			
			// Si el type viene como un string, este es el indice del array de tipos, 
			//si viene como object significa que tiene parámetros
			
			if (typeof(type[y]) == "object"){
					/*
					type[y][0] = "tipo_de_campo"
					type[y][1] = "comparacion"
					type[y][2] = "longitud"
					*/
				Campos[type[y][0]] = new Array()
				Campos[type[y][0]][Campos[type[y][0]].length] = new Array(obj.name, type[y][1], type[y][2]);
			}else{			
				Campos[type[y]] = new Array()
				Campos[type[y]][Campos[type[y]].length] = obj.name;
			}
		}
	}
}
//___________________________________________________________________________________________

function PosicionaSelect(ddl, seleccion){

	if (typeof(ddl) != "object" || (typeof(seleccion) != "string" && typeof(seleccion) != "number")){
		alert("ERROR. PosicionaSelect:\n  no se han pasado los datos corretos");	
		return false;
	}
	
	
	for(i=0;i<ddl.options.length;i++){
		if (ddl.options[i].value == seleccion){
			ddl.options[i].selected = true;
			break;
		}
	}	

}
//___________________________________________________________________________________________

function replace(s1,s2, texto){
	return texto.split(s1).join(s2);
}
//___________________________________________________________________________________________

function addLoadEvent(func) {
   var oldonload = window.onload;
   if (typeof(window.onload != 'function')) {
      window.onload = func;
   }else{
      window.onload = function() {
						  oldonload();
						  func();
			    		}
   }
}

//___________________________________________________________________________________________
//
//Funciones auxiliares
//___________________________________________________________________________________________
	
	function valSep(oTxt){
		var bOk = false;
		var sep1 = oTxt.value.charAt(2);
		var sep2 = oTxt.value.charAt(5);
		bOk = bOk || ((sep1 == "-") && (sep2 == "-"));
		bOk = bOk || ((sep1 == "/") && (sep2 == "/"));
		return bOk;
	}
	//___________________________________________________________________________________________
	
	function finMes(oTxt){
		var nMes = parseInt(oTxt.value.substr(3, 2), 10);
		var nAno = parseInt(oTxt.value.substr(6), 10);
		var nRes = 0;
		switch (nMes){
			case 1: nRes = 31; break;
			case 2: nRes = 28; break;
			case 3: nRes = 31; break;
			case 4: nRes = 30; break;
			case 5: nRes = 31; break;
			case 6: nRes = 30; break;
			case 7: nRes = 31; break;
			case 8: nRes = 31; break;
			case 9: nRes = 30; break;
			case 10: nRes = 31; break;
			case 11: nRes = 30; break;
			case 12: nRes = 31; break;
		}
		return nRes + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
	}
	//___________________________________________________________________________________________
	
	function valDia(oTxt){
		var bOk = false;
		var nDia = parseInt(oTxt.value.substr(0, 2), 10);
		bOk = bOk || ((nDia >= 1) && (nDia <= finMes(oTxt)));
		return bOk;
	} 
	//___________________________________________________________________________________________
	
	function valMes(oTxt){
		var bOk = false;
		var nMes = parseInt(oTxt.value.substr(3, 2), 10);
		bOk = bOk || ((nMes >= 1) && (nMes <= 12));
		return bOk;
	}
	//___________________________________________________________________________________________
	
	function valAno(oTxt){
		var bOk = true;
		var nAno = oTxt.value.substr(6);
		bOk = bOk && (nAno.length == 4);
		if (bOk){
			for (var i = 0; i < nAno.length; i++){
				bOk = bOk && esDigito(nAno.charAt(i));
			}
		}
		return bOk;
	}
	//___________________________________________________________________________________________
	
	function esDigito(a){
		return (a == 1 || a == 2 || a == 3 || a == 4 || a == 5 || a == 6 || a == 7 || a == 8 || a == 9 || a == 0);
	}
	//___________________________________________________________________________________________
	
	function valFecha(oTxt){		
		var bOk = true;
		if (oTxt.value != ""){
			bOk = bOk && (valAno(oTxt));
			bOk = bOk && (valMes(oTxt));
			bOk = bOk && (valDia(oTxt));
			bOk = bOk && (valSep(oTxt));
		}
		return bOk;
	}
	//___________________________________________________________________________________________
	
	function valMail(mail){
		var cont,ind1,ind2,ind3,ind4;
		mail = mail.value;
		cont=mail.length;
		ind1=mail.indexOf('@');
		ind2=mail.indexOf('.');
		ind3=mail.lastIndexOf('@');
		ind4=mail.lastIndexOf('.');
		if ((ind1<=0)||(ind3>ind4)||(ind3!=ind1)||(ind4+2>cont)||(ind4+5<cont)||(ind3==ind4-1) || mail.length != mail.trim().length){
			return false;
		}else{
			return true;
		}
		
		//var regexp = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;			
		//return regexp.test(mail.value);
			
	}
//___________________________________________________________________________________________
	
//PROTOTYPES

Array.prototype.in_array = function (value){
   for (xi=0; xi < this.length; xi++){
		if (this[xi] == value) return true;   
   }
    return false;
}
//___________________________________________________________________________________________

String.prototype.str_replace = function (s1, s2){
	return this.split(s1).join(s2);
}
//___________________________________________________________________________________________

String.prototype.trim = function(){
	return this.replace(/^\s+|\s+$/g,'') 
}
//___________________________________________________________________________________________
window.url_get = function (variable){

	var valor;
	var url = document.location.href;
	
	//los parámetros estaran siempre despues de ? (interrogante)
	
	var str_parametros = url.substr(url.indexOf('?')+1, url.length);
	
	var parametros = new Array();
	var campos = new Array();
	parametros = str_parametros.split('&');
	
	for(var x=0;x<parametros.length;x++){		
		c = parametros[x].split("=");
		campos[c[0]] = c[1];
	}
	
	if (campos[variable] != null){
		return campos[variable].str_replace('%20',' ').str_replace('+', ' ');
	}else{	
		return false;
	}
}

//___________________________________________________________________________________________
