var ns4=false; var ie4=false; var standard=false
var capaActiva="";

if (document.getElementById) {
    standard=true
} else if (document.all) {
	ie4=true
} else if (document.layers) {
    ns4=true
} else {
}

if (navigator.userAgent.indexOf("Mac",0) != -1) {
	var mac=true
} else {
	var mac=false
}

function vistaCapa(nomCapa,accio) {
if (ns4) {
   document.layers[nomCapa].visibility = accio;
}
if (ie4) {
   document.all[nomCapa].style.visibility = accio;
}
if (standard) {
   document.getElementById(nomCapa).style.visibility = accio;
}
}

function ensenya(nom) {
	if (capaActiva != '' && capaActiva != nom) {vistaCapa(capaActiva,"hidden")}
	vistaCapa(nom,"visible")
	vistaCapa("foramenu","visible")	
	capaActiva=nom;
}

function amaga() {
	vistaCapa(capaActiva,"hidden")
	vistaCapa("foramenu","hidden")		
}

function Value_Trim(Value)
 {
	var Length;
	Length = Value.length;

	for(Cnt = 0; Cnt < Value.length && Value.charAt(Cnt) == " "; Cnt++);
	Value = Value.substr(Cnt);

	for(Cnt = Value.length - 1; Cnt >= 0 && Value.charAt(Cnt) == " "; Cnt--);
	Value = Value.substring(0, Cnt + 1);

return(Value);
 }

function preLoad(objecte,arxiu) {
	for (var i=0; i<preLoad.arguments.length; i=i+2) {
		eval(preLoad.arguments[i] + "= new Image()")
		isrc=preLoad.arguments[i+1]
		eval(preLoad.arguments[i] + ".src = '"+isrc+"'")
	}
} 

function canviaImatge (nomCapa,nomImatge,arxiu){
if (ns4) {
	if (nomCapa != "") {
    eval("document.layers."+nomCapa+".document.images['"+nomImatge+"'].src="+arxiu);
	} else {
    eval("document.images['"+nomImatge+"'].src="+arxiu);
	}
}
if (ie4) {
 	eval("document.images['"+nomImatge+"'].src="+arxiu);
}
if (standard) {
 	eval("document.images['"+nomImatge+"'].src="+arxiu);
}
}
function popup (tamanyX, tamanyY, adre, nom, posX, posY, attr) {
				var x=(screen.width-tamanyX) * posX / 100;
                var y=(screen.height-tamanyY) * posY / 100;
                if (attr=="") {attr='resizable=0,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0'}

                finestra=open(adre,nom,attr+',width='+tamanyX+',height='+tamanyY+',left='+x+',top='+y+',screenX='+x+',screenY='+y+'');
                if (mac && !ns4) {finestra.moveTo(x,y)}
}
preLoad("caraLo","img/caraLo.gif","caraHi","img/caraHi.gif","descLo","img/descLo.gif","descHi","img/descHi.gif")

/******************** FUNCIONES DE VALIDACION ***************************/
function Form_Validate(FrmValidar, BtnValidar) { 
	var errores = ""; 
	Mail_Validate("");
	errores += Field_Validate(FrmValidar, 'Nombre', 'ITNombre', 'string', 2, 150, true); 
	errores += Field_Validate(FrmValidar, 'Apellidos', 'ITApellidos', 'string', 2, 150, true); 			
	errores += Field_Validate(FrmValidar, 'Email', 'ITEMail', 'e-mail', 6, 100, true); 
	errores += Field_Validate(FrmValidar, 'Teléfono', 'ITTelefono', 'phone', 9, 9, true);			
	if (!document.SolicitudProducto.CPolitica.checked) { errores += '\n- Debe de aceptar la política de protección de datos para poder continuar.'; }
	if (errores) {
		errores = "Se han producido los siguientes errores en el formulario,\npor favor, corrígelos para poder continuar.\n" + errores; 
		alert(errores);
	} else {
		SolicitudProducto.submit();
	}
}
/********************************************************************/
function Mail_Validate(Value) {
	var exclude=/[^@\-\.\w]|^[_@\.\-]|[\._\-]{2}|[@\.]{2}|(@)[^@]*\1/;
	var check=/@[\w\-]+\./;
	var checkend=/\.[^@]{2,3}$/;

	if (Value == "") return("");
	if (((Value.search(exclude) != -1)||(Value.search(check)) == -1)|| (Value.search(checkend) == -1)) {
		return("La sintaxis no es correcta");
	}

	var fin = Value.charAt(Value.length-3) + Value.charAt(Value.length-2) + Value.charAt(Value.length-1);
	if (Value.charAt(Value.length-4) == '.') fin = Value.charAt(Value.length-4)+fin
	if (fin != ".es" && fin != ".com" && fin != ".net" && fin != ".org" && fin != ".cat" && fin != ".tv" && fin != ".biz") { return("La sintaxis no es correcta"); }
}
/********************************************************************/
function Field_Validate(Name_Form, Name, Field, ValueType, Min, Max, Required) {
	var CharCnt;
	var ErrorHeader;
	var Value;
	var fForm;
	var HTMLTipo
	
	fForm = eval("document." + Name_Form);
	ErrorHeader = "\n- " + Name + ": ";
	HTMLTipo = eval("fForm." + Field + ".type");
	if (!HTMLTipo)
	HTMLTipo = eval("fForm." + Field + "[0].type");

	switch (HTMLTipo) {
	case "checkbox":
		return("");
	
	case "radio":
		if (Required) {
			var OpCnt;
			var selected = false;
			for(OpCnt = 0; OpCnt < eval("fForm." + Field + ".length"); OpCnt++)
				{
				if (eval("fForm." + Field + "[" + OpCnt + "].checked"))
					selected = true;
				}
			if (!selected)
				return(ErrorHeader + "Debe escogerse una de las opciones.");
			}
		return("");

	case "select-one":
		if (Required && eval("fForm." + Field + ".selectedIndex") < 1)
		return(ErrorHeader + "El campo debe tener alguna opción seleccionada.");
		return("");

	case "text":
	case "textarea":
	case "password":
		Value = Value_Trim("" + eval("fForm." + Field + ".value"));
		if (Required && Value == "")
		return(ErrorHeader + "El campo no puede estar vacio.");
		if (!Required && Value == "")
		return("");
	
		switch (ValueType.toLowerCase()) {
		case "alphabetic":
			for(CharCnt = 0; CharCnt < Value.length; CharCnt++) {
				Char = Value.charAt(CharCnt);
				if ((Char < 'A' || Char > 'Z') && (Char < 'a' || Char > 'z'))
				return(ErrorHeader + "El campo no contiene caracteres alfabéticos");
			}
			if (Value.length > Max || Value.length < Min) {
				if (Min==Max) return(ErrorHeader + "El campo no tiene " + Min + " caracter/es.");
				else return(ErrorHeader + "El campo no tiene entre " + Min + " y " + Max + " caracter/es.");
			}
			break;

		case "phone":
			mensajeTel="El teléfono que nos has facilitado no corresponde a un teléfono válido en España.\n   Asegúrate de que tu número de teléfono es correcto. En breve nos pondremos en contacto\n   contigo por teléfono para facilitarte toda la información."
			n1='0'; n2='0'; n3='0';
			if (Value.length > Max || Value.length < Min) {
				if (Min==Max) return(ErrorHeader + "El campo debe tener " + Min + " dígitos.");
				else return(ErrorHeader + "El campo no tiene entre " + Min + " y " + Max + " dígitos.");
			}

			for(CharCnt = 0; CharCnt < Value.length; CharCnt++)	{
				Char = Value.charAt(CharCnt);
				n1=n2; n2=n3; n3=Char
				if (Char < '0' || Char > '9') return(ErrorHeader + "El campo contiene un carácter no válido");
				if (CharCnt==0){
					if ((Char != '6' && Char != '8'&& Char != '9') || (Value.length != Max))
					return(ErrorHeader + mensajeTel);
				}
				if (CharCnt>1){
					if (n1==n2 && n2==n3)
					return(ErrorHeader + mensajeTel);
				}
			}
			break;

		case "digit":		
			for(CharCnt = 0; CharCnt < Value.length; CharCnt++) {
				Char = Value.charAt(CharCnt);
				if (Char < '0' || Char > '9')
				return(ErrorHeader + "El campo no contiene un número válido");				
			}
			
			if (Value.length > Max || Value.length < Min) {
				if (Min==Max) return(ErrorHeader + "El campo no tiene " + Min + " dígitos.");
				else return(ErrorHeader + "El campo no tiene entre " + Min + " y " + Max + " dígitos.");
			}
			break;

		case "e-mail":
			Error = Mail_Validate(Value);
			if (Error) return(ErrorHeader + Error + ".");
			if (Value.length > Max || Value.length < Min) {
				if (Min==Max) return(ErrorHeader + "El campo no tiene " + Min + " caracter/es.");
				else return(ErrorHeader + "El campo no tiene entre " + Min + " y " + Max + " caracter/es.");
			}
			break;

		case "integer":
			for(CharCnt = 0; CharCnt < Value.length; CharCnt++) {
				Char = Value.charAt(CharCnt);
				if (Char < '0' || Char > '9')
				return(ErrorHeader + "El campo no contiene un número válido.");
			}
			if (parseFloat(Value) > Max || parseFloat(Value) < Min) return(ErrorHeader + "El campo no está entre " + Min + " y " + Max + ".");
			break;

		case "string":
		if (Value.length > Max || Value.length < Min) {
			if (Min==Max) return(ErrorHeader + "El campo no tiene " + Min + " caracter/es.");
			else return(ErrorHeader + "El campo no tiene entre " + Min + " y " + Max + " caracter/es.");
		}
		break;
		
		default:
			return(ErrorHeader + "El tipo valor [" + ValueType + "] no está reconocido.");
 
		}
		return("");
	}
	return(ErrorHeader + "El tipo de campo HTML no está reconocido.");
}
/******************** FUNCIONES DE VALIDACION ***************************/