var bCancel = false; 

if (!Array.indexOf) {
	Array.prototype.indexOf = function (obj, start) {
		for (var i = (start || 0); i < this.length; i++) {
			if (this[i] == obj) {
				return i;
			}
		}
		return -1;
	}
}

function validateFastVipForm(form) {                                                                   
	if (bCancel)
		return true;
	else
		var formValidationResult;
	formValidationResult = validateRequired(form) && validateMask(form);
	return (formValidationResult == 1);
} 

function fastVipForm_required () { 
	this.a0 = new Array("email", "El campo EMail es obligatorio.", new Function ("varName", "this.mask=/^([a-zA-Z0-9_\\-\\.\\+]+)[@]([a-zA-Z0-9_\\-\\.]+)[\\.]([a-zA-Z]{2,5})$/;  return this[varName];"));
} 

function fastVipForm_mask () { 
	this.a0 = new Array("email", "El formato de EMail no es válido.", new Function ("varName", "this.mask=/^([a-zA-Z0-9_\\-\\.\\+]+)[@]([a-zA-Z0-9_\\-\\.]+)[\\.]([a-zA-Z]{2,5})$/;  return this[varName];"));
} 

function validateMultiEmailForm(form) {                                                                   
	if (bCancel)
		return true;
	else
		var formValidationResult;
	formValidationResult = validateMask(form);
	return (formValidationResult == 1);
} 

function multiEmailForm_mask () { 
	this.a0 = new Array("email_1", "El formato de E-Mail no es válido.", new Function ("varName", "this.mask=/^([a-zA-Z0-9_\\-\\.\\+]+)[@]([a-zA-Z0-9_\\-\\.]+)[\\.]([a-zA-Z]{2,5})$/;  return this[varName];"));
	this.a1 = new Array("email_2", "El formato de E-Mail no es válido.", new Function ("varName", "this.mask=/^([a-zA-Z0-9_\\-\\.\\+]+)[@]([a-zA-Z0-9_\\-\\.]+)[\\.]([a-zA-Z]{2,5})$/;  return this[varName];"));
	this.a2 = new Array("email_3", "El formato de E-Mail no es válido.", new Function ("varName", "this.mask=/^([a-zA-Z0-9_\\-\\.\\+]+)[@]([a-zA-Z0-9_\\-\\.]+)[\\.]([a-zA-Z]{2,5})$/;  return this[varName];"));
	this.a3 = new Array("email_4", "El formato de E-Mail no es válido.", new Function ("varName", "this.mask=/^([a-zA-Z0-9_\\-\\.\\+]+)[@]([a-zA-Z0-9_\\-\\.]+)[\\.]([a-zA-Z]{2,5})$/;  return this[varName];"));
	this.a4 = new Array("email_5", "El formato de E-Mail no es válido.", new Function ("varName", "this.mask=/^([a-zA-Z0-9_\\-\\.\\+]+)[@]([a-zA-Z0-9_\\-\\.]+)[\\.]([a-zA-Z]{2,5})$/;  return this[varName];"));
}

function validatePasswordForm(form) {                                                                   
	if (bCancel)
		return true;
	else
		var formValidationResult;
	formValidationResult = validateRequired(form) && validateMinLength(form);
	return (formValidationResult == 1);
} 

function passwordForm_required () { 
	this.a0 = new Array("oldPassword", "El campo Contraseña actual es obligatorio.", new Function ("varName", "this.minlength='6';  return this[varName];"));
	this.a1 = new Array("newPassword", "El campo Nueva contraseña es obligatorio.", new Function ("varName", "this.minlength='6';  return this[varName];"));
	this.a2 = new Array("helpPassword", "El campo Repita contraseña es obligatorio.", new Function ("varName", "this.minlength='6';  return this[varName];"));
} 

function passwordForm_minlength () { 
	this.a0 = new Array("oldPassword", "Contraseña actual no puede tener menos de 6 carácteres.", new Function ("varName", "this.minlength='6';  return this[varName];"));
	this.a1 = new Array("newPassword", "Nueva contraseña no puede tener menos de 6 carácteres.", new Function ("varName", "this.minlength='6';  return this[varName];"));
	this.a2 = new Array("helpPassword", "Repita contraseña no puede tener menos de 6 carácteres.", new Function ("varName", "this.minlength='6';  return this[varName];"));
} 


function validateDarDeBajaForm(form) {                                                                   
	if (bCancel)
		return true;
	else
		var formValidationResult;
	formValidationResult = validateRequired(form) && validateMinLength(form);
	return (formValidationResult == 1);
} 

function darDeBajaForm_required () { 
	this.a0 = new Array("password", "El campo Password es obligatorio.", new Function ("varName", "this.minlength='6';  return this[varName];"));
} 

function darDeBajaForm_minlength () { 
	this.a0 = new Array("password", "Password no puede tener menos de 6 carácteres.", new Function ("varName", "this.minlength='6';  return this[varName];"));
}

/* Abrir Pop Up */
function abrirVentana(url, nombre, varToolbar, varLocation, varDirectories, 
	varStatus, varMenubar, varScrollbars, varResizable, varTop, varLeft,
	varWidth, varHeight) {
	Ventana = window.open(url,nombre,"toolbar=" + varToolbar + ",location=" + varLocation +
		",directories=" + varDirectories + ",status=" + varStatus +
		",menubar=" + varMenubar + ",scrollbars=" + varScrollbars +
		",resizable=" + varResizable + ",top=" + varTop + ",left=" + varLeft +
		",width=" + varWidth + ",height=" + varHeight + "");
}

function mostrarElement(element) {
	if(document.getElementById(element)!=null){
		if (document.getElementById(element).style.display == "") {
			esconderElement(element);
		} else {
			ensenyarElement(element);
		}
	}
}

function ensenyarElement(element) {
	if (document.getElementById(element) != null) {
		document.getElementById(element).style.display = "";
	}
}

function esconderElement(element) {
	if (document.getElementById(element) != null) {
		document.getElementById(element).style.display = "none";
	}
}

function IsUnsignedInteger(YourNumber)
{
	var Template = /^[0-9]+$/;
	return (Template.test(YourNumber)) ? 1 : 0;
}

function IsChar(YourChar)
{
	var Template = /^[a-z]$/i;
	return (Template.test(YourChar)) ? 1 : 0;
}

function IsNIF(YourNIF)
{
	if (YourNIF.length != 9) return 0;
	else if (!IsUnsignedInteger(YourNIF.substring(0, 8))) return 0;
	else if (!IsChar(YourNIF.substring(8, 9))) return 0;
	else
	{
		var ControlValue = 0;
		var NIFCharIndex = 0;
		var NIFChars = new Array('T', 'R', 'W', 'A', 'G', 'M', 'Y', 'F', 'P', 'D', 'X', 'B', 'N', 'J', 'Z', 'S', 'Q', 'V', 'H', 'L', 'C', 'K', 'E');
		var NIFNumber = YourNIF.substring(0, 8);
		var NIFChar = YourNIF.substring(8, 9);
		NIFChar = NIFChar.toUpperCase();
		ControlValue = NIFNumber / NIFChars.length;
		ControlValue = Math.floor(ControlValue);
		ControlValue = ControlValue * NIFChars.length;
		NIFCharIndex = NIFNumber - ControlValue;
		return (NIFChar == NIFChars[NIFCharIndex]) ? 1 : 0;
	}
}

function IsNIE(YourNIE)
{
	if (YourNIE.length < 9) return 0;
	else if (!IsChar(YourNIE.substring(0,1))) return 0;
	else if (!IsChar(YourNIE.substring(YourNIE.length -1, YourNIE.length))) return 0;
	else if (!IsUnsignedInteger(YourNIE.substring(1, YourNIE.length - 1))) return 0;
	else 
	{
		var NIENumber = -1;

		if (YourNIE.substring(0, 1).toUpperCase() == "X") {
			NIENumber = 0;
		} else if (YourNIE.substring(0, 1).toUpperCase() == "Y") {
			NIENumber = 1;
		} else if (YourNIE.substring(0, 1).toUpperCase() == "Z") {
			NIENumber = 2;
		}
		if (NIENumber == -1) return 0;

		var DNINumber = NIENumber + YourNIE.substr(1, YourNIE.length -1);
		var Number = DNINumber.substr(0, DNINumber.length - 1);
		var Let = DNINumber.substr(DNINumber.length - 1, 1).toUpperCase();

		Number = Number % 23;
		var NIEChars = "TRWAGMYFPDXBNJZSQVHLCKET";
		var NIELetter = NIEChars.charAt(Number);

		return (NIELetter == Let) ? 1 : 0;
	}
}

function IsCIF(YourCIF)
{
	if (YourCIF.length != 9) return 0;
	else if (!IsChar(YourCIF.substr(0, 1))) return 0;
	else if (!IsUnsignedInteger(YourCIF.substring(1, 8))) return 0;
	else
	{
		var CIFChars = new Array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'Q', 'S', 'U', 'V', 'W');
		var CaracteresControlNumero = new Array('A', 'B', 'E', 'H');
		var CaracteresControlLetra = new Array('K', 'P', 'Q', 'S');

		var CIFChar = YourCIF.substr(0, 1);
		var CIFNumber = YourCIF.substring(1, 8);
		var CIFControlChar = YourCIF.substr(8, 1);

		if (CIFChars.indexOf(CIFChar, 0) == -1) {
			return 0;
		}

		var SumaPares = 0;
		var SumaNones = 0;
		for (var i = 1; i <= CIFNumber.length; i++) {
			var digito = parseInt(CIFNumber.charAt(i-1), 10);
			if (i % 2 == 0) {
				SumaPares += digito;
			} else {
				digito = (digito * 2).toString();
				for (var j = 1; j <= digito.length; j++) {
					SumaNones += parseInt(digito.charAt(j-1), 10);
				}
			}
		}
		var ControlDigitChars = new Array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J');
		var ControlDigit = (SumaNones + SumaPares).toString();
		ControlDigit = ControlDigit.substring(ControlDigit.length - 1);

		if (ControlDigit != 0) {
			ControlDigit = 10 - ControlDigit;
		} else if (CaracteresControlNumero.indexOf(CIFControlChar, 0) != -1) {
			ControlDigit = 0;
		} else if (CaracteresControlLetra.indexOf(CIFControlChar, 0) != -1) {
			ControlDigit = ControlDigitChars.charAt(ControlDigit);
		}
		return (CIFControlChar == ControlDigit) ? 1 : 0;
	}
}

function IsPostalCode(YourPostalCode)
{
	if (YourPostalCode.length != 5) return 0;
	else if (!IsUnsignedInteger(YourPostalCode)) return 0;
	var codProvincia =  parseInt(YourPostalCode.substring(0, 2), 10);
	return (codProvincia  < 53) ? 1 : 0;
}
	
function IsPostalCodePeninsula(YourPostalCode)
{
	if (!IsPostalCode(YourPostalCode)) return 0;
	var PostalCodesNoIva = new Array('35', '38', '51', '52');
	var codProvincia = YourPostalCode.substring(0, 2);
	return (PostalCodesNoIva.indexOf(codProvincia, 0) != -1) ? 0 : 1;
}

function selectProvincia(formData) {
	var provincia = document.forms[formData].provincia.value;
	var codPostal = document.forms[formData].codigoPostal.value;
	if (codPostal.length != 5 || isNaN(codPostal)) {
		alert("El código postal no es correcto.");
		document.forms[formData].codigoPostal.focus = true;
		return false;
	} else {
		indice = codPostal.substring(0,2);
		if (indice != provincia) {
			// probar ceuta y melilla...
			if ((indice == '11') && (provincia == '51' || provincia == '52'))  {
				return true;
			} else {
				alert("El código postal no corresponde con la provincia seleccionada.");
				document.forms[formData].codigoPostal.focus = true;
				return false;
			}
		} else {
			return true;
		}
	}
}

function validateDatosFactura() {
	var codPostal = document.forms['datosEnvioForm'].provincia.value;
	if (codPostal == '35' || codPostal == '38' || codPostal == '51' || codPostal == '52') { // Si el envio es a canarias o ceuta o melilla
		mostrarElement('datosFactura');
		alert('Para envíos a Canarias, Ceuta o Melilla es obligatorio los datos de facturación.');
		return false;
	}
	var razonSocial = document.forms['datosEnvioForm'].nombreRazonSocial.value;
	if (razonSocial == null || razonSocial.length < 4){
		alert("La razón social para la factura es un campo obligatorio."); return false;
	}
	var nifCif = document.forms['datosEnvioForm'].nifCif.value;
	if (nifCif != null && nifCif.length < 8) {
		alert("El NIF / CIF no es correcto."); return false;
	}
	var direccion = document.forms['datosEnvioForm'].calleFacturacion.value;
	if (direccion == null || direccion.length < 4){
		alert("La Dirección para la factura es un campo obligatorio."); return false;
	}
	var poblacion = document.forms['datosEnvioForm'].poblacionFacturacion.value;
	if (poblacion == null || poblacion.length < 4){
		alert("La Población para la factura es un campo obligatorio."); return false;
	}
	var provincia = document.forms['datosEnvioForm'].provinciaFacturacion.value;
	if (provincia == null || provincia.length < 1){
		alert("La Provincia para la factura es un campo obligatorio."); return false;
	}
	codPostal = document.forms['datosEnvioForm'].codigoPostalFacturacion.value;
	if (codPostal.length != 5 || isNaN(codPostal)) {
		alert("El código postal de la factura no es correcto.");
		return false;
	} else {
		indice = codPostal.substring(0,2);
		if (indice != provincia) {
			// probar ceuta y melilla...
			if ((indice == '11') && (provincia == '51' || provincia == '52'))  {
				return true;
			} else {
				alert("El código postal de la factura no corresponde con la provincia seleccionada.");
				return false;
			}
		} else {
			return true;
		}
	}
}

function controlPassword(formPass) {
	passwordUno = formPass.newPassword.value;
	passwordDos = formPass.helpPassword.value;
	if (passwordUno != passwordDos) {
		alert("La contraseña nueva no es igual a la contraseña repetida.");
		return false;
	} else {
		return true;
	}
}

function controlEmail(formPass) {
	newEmailUno = formPass.newEmail.value;
	newEmailDos = formPass.helpEmail.value;
	/*if ((newEmailUno == null || newEmailUno.length <= 0) ||
		(newEmailDos == null || newEmailDos.length <= 0)) {
		return false;
	}*/
	if (newEmailUno != newEmailDos) {
		alert("El email nuevo no es igual al email repetido.");
		return false;
	} else {
		return true;
	}
}

function mostrarAlerta() {
	var nVer = navigator.appVersion;
	var nAgt = navigator.userAgent;
	var NS4 = (navigator.appName == "Netscape" && parseInt(nVer) >= 4);
	var browserName  = '';
	var fullVersion  = 0;
	var majorVersion = 0;
	var IE6 = false;
	if ((verOffset=nAgt.indexOf("MSIE"))!=-1) {
		browserName  = "Microsoft Internet Explorer";
		fullVersion  = parseFloat(nAgt.substring(verOffset+5));
		majorVersion = parseInt(''+fullVersion);
		if (parseInt(fullVersion) <= 6) {
			IE6 = true;
		}
	}

	var capa = document.getElementById('divFondoAlerta');
	if(!IE6) {
		capa.style.position = 'fixed';
	}
	capa.style.display = 'block';
	capa.style.width = "100%";
	capa.style.height = "100%";
	capa.style.top = "0";
	capa.style.left = "0";
    
	// Si existen se ocultan los despegables para IE6.
	var despCantidad = document.getElementById("idCantidadForm");
	if (despCantidad != null) {
		despCantidad.style.display = 'none';
	}
	var despOpcion = document.getElementById("idVersionForm");
	if (despOpcion != null) {
		despOpcion.style.display = 'none';
	}
	var despContacto = document.getElementById("contactoDesplegable");
	if (despContacto != null) {
		despContacto.style.display = 'none';
	}

}
function cerrarAlerta() {
	document.getElementById('divFondoAlerta').style.display = 'none';
	document.getElementById('divAlerta').style.display = 'none';
    
	// Si existen se muestran los despegables para IE6.
	var despCantidad = document.getElementById("idCantidadForm");
	if (despCantidad != null) {
		despCantidad.style.display = 'block';
	}
	var despOpcion = document.getElementById("idVersionForm");
	if (despOpcion != null) {
		despOpcion.style.display = 'block';
	}
	var despContacto = document.getElementById("contactoDesplegable");
	if (despContacto != null) {
		despContacto.style.display = 'block';
	}

}