/**
DVG-27/12/2007: Se incluye este snippet de código (createForm) como si fuese un singleton
para evitar referenciar a form1. dicectamente, lo  cual no es comaptible con firefox.

- document.all.form1 es solo compatible con internet explorer y con últimas versiones de firefox
- document.form1 es compatible, presumbilemente, con internet explorer y firefox
- document.getElementById("form1") es compatible con internet explorer y firefox

*/

var formulario;
var formularioLogin;
/**=============================================================
obtención del formulario como singleton
=============================================================*/
function createForm()
{
if (!formulario)
{
if (document.all)
  formulario = document.all.form1;
else
  {
  if (document.form1)
    formulario = document.form1;
  else
    formulario = document.getElementById("form1");
  }
}

}

function createLoginForm()
{
if (!formularioLogin)
{
if (document.all)
  formularioLogin = document.all.form1;
else
  {
  if (document.form1)
    formularioLogin = document.form1;
  else
    formularioLogin = document.getElementById("form1");
  }
}

}

function isNumeric(evt) {
	var charCode = (evt.which) ? evt.which : evt.keyCode;
	
	if (charCode > 31 && (charCode < 48 || charCode > 57))
		return false;

	return true;
}


  function removeChars(objectText,finalCheck)
  {
    if (objectText!=null)
    {
      var text = objectText.value;
      var strSingleLineText = text.replace(new RegExp( "\\r\\n", "g" ),"");
      strSingleLineText = strSingleLineText.replace(new RegExp( "\\r", "g" ),"");
      strSingleLineText = strSingleLineText.replace(new RegExp( "\\n", "g" ),"");
      strSingleLineText = strSingleLineText.replace(new RegExp( " ", "g" ),"");
      strSingleLineText = strSingleLineText.replace(new RegExp( "[g-z]", "gi" ),"");
      strSingleLineText = strSingleLineText.replace(new RegExp( "[ñ]", "gi" ),"");
      strSingleLineText = strSingleLineText.replace(new RegExp( "[.;,#&çÇ]", "gi" ),"");
      objectText.value = strSingleLineText.toUpperCase();
    }
    return true;
  }


function validaCodigoActivacion(ctlName)
{
return isOk(ctlName);
}

/**=============================================================
Validación de la MAC de un usuario
=============================================================*/
function validaMac()
{
createForm();
if (formulario.mac1.value=="" || formulario.mac2.value=="" || formulario.mac3.value=="" 
	|| formulario.mac4.value=="" || formulario.mac5.value=="" || formulario.mac6.value=="" 
	|| formulario.mac1.value.length!=2 || formulario.mac2.value.length!=2 || formulario.mac3.value.length!=2 
	|| formulario.mac4.value.length!=2 || formulario.mac5.value.length!=2 || formulario.mac6.value.length!=2)
	return false;

	formulario.mac1.value=formulario.mac1.value.toUpperCase();
	formulario.mac2.value=formulario.mac2.value.toUpperCase();
	formulario.mac3.value=formulario.mac3.value.toUpperCase();
	formulario.mac4.value=formulario.mac4.value.toUpperCase();
	formulario.mac5.value=formulario.mac5.value.toUpperCase();
	formulario.mac6.value=formulario.mac6.value.toUpperCase();

	return true;
}

/**=============================================================
Validación del e-mail de un usuario
=============================================================*/
function validaEmail(formCustom)
{
  if (!formCustom)
	{
	 	createForm();
  	return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/).test(formulario.uemail.value);
	}
	else
	{
		return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/).test(formCustom.uemail.value);
	}	
}

function validaEmails()
{
 createForm();
 if (formulario.uemail1.value=="" || formulario.uemail2.value=="")
 		return false;
 if (formulario.uemail1.value!=formulario.uemail2.value)
 		return false;
 		
 return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/).test(formulario.uemail1.value);
}

function validaPwds()
{
 createForm();
 if (formulario.upassword1.value=="" || formulario.upassword2.value=="")
 		return false;
 if (formulario.upassword1.value!=formulario.upassword2.value)
 		return false;
 return true;
}

function validaEmailVacio(formCustom)
{
 	if (!formCustom)
	{
    createForm();
	  if (formulario.uemail.value!="")
  		 return true;
	}
	else
	{
	  if (formCustom.uemail.value!="")
  		 return true;
	}		 

}

var triesRegister750 = 0;
var triesRegisterIZAPPER = 0;
var triesRegister = 0;
  
function validateMachineid(ctlName)
{
 return isOk(ctlName);
}

function validateRegisterIZAPPER2(ctlName,ctlName2)
{
  createForm();
  triesRegisterIZAPPER +=1;

	if (triesRegisterIZAPPER >= 30)
	{
		alert("Si necesitas ayuda, puedes contactar con InOut TV en Contacta o en el  902.131.161");
		return;
	}
	
	if(!validateMachineid(ctlName))
	{
		alert("El Identificador de equipo no es correcto; Consiste en 4 grupos de 4 dígitos, de números y letras de la A a la F.");
		return;
	}	

	if(!validaCodigoActivacion(ctlName2))
	{
		alert("El código de compra no es correcto o no ha rellenado todos los campos");
		return;
	}
	if (complete)
		 complete(); //código para quitar el botón de continuar 
	formulario.submit();

}	
	
function validateRegisterIZAPPER(ctlName,ctlName2)
{
  createForm();
  triesRegisterIZAPPER +=1;

	if ((triesRegisterIZAPPER >= 30) && (!validateMachineid(ctlName)) && (!validaEmail()))
	{
		alert("Si necesitas ayuda, puedes contactar con InOut TV en Contacta o en el  902.131.161");
		return;
	}
	if(!validateMachineid(ctlName))
	{
		alert("El Identificador de equipo no es correcto; Consiste en 4 grupos de 4 dígitos, de números y letras de la A a la F.");
		return;
	}	

	if(!validaCodigoActivacion(ctlName2))
	{
		alert("El código de compra no es correcto o no ha rellenado todos los campos");
		return;
	}
	
	if(!validaEmailVacio())
	{
		alert("Es obligatorio rellenar todos los campos");
		return;
	}
	
	
	if(!validaEmail())
	{
		alert("Por favor, comprueba que la dirección de correo dispone del formato  xxxxx@xxxxxxx.xxx");
		return;
	}
	formulario.submit();

}

function validaFechaNacimiento()
{
   var cumple = (/^(|0|1|2|3)[0-9]\/(|0|1)[0-9]\/(19|20)[0-9]{2}/).test(document.getElementById('ucumpleVis').value);
   // Regular expression used to check if date is in correct format
	 //  var pattern = new RegExp((0|1)[0-9]\/[0-3][0-9]\/(19|20)[0-9]{2});
	 
   if(cumple)
   {
	    var date_array = document.getElementById('ucumpleVis').value.split('/');
      var day = date_array[0];

      // Attention! Javascript consider months in the range 0 - 11
      var month = date_array[1] - 1;
      var year = date_array[2];

      // This instruction will create a date object
      source_date = new Date(year,month,day);

      if(year != source_date.getFullYear())
      {
         //alert('Year is not valid!');
         return false;
      }

      if(month != source_date.getMonth())
      {
         //alert('Month is not valid!');
         return false;
      }

      if(day != source_date.getDate())
      {
         //alert('Day is not valid!');
         return false;
      }
   }
   else
   {
      return false;
   }
	 
	 document.getElementById('ucumple').value = year+"/"+(month+1)+"/"+day;
   
	 return true;
}


function validatePersonalDataRegister()
{
  createForm();
  triesRegister +=1;

	if ((triesRegister >= 30))
	{
		alert("Si necesitas ayuda, puedes contactar con InOut TV en Contacta o en el  902.131.161");
		return;
	}
	
	if(!validaEmails())
	{
		alert("Los emails no coinciden o son incorrectos");
		return;
	}
	
	if(!validaPwds())
	{
		alert("Las claves no coinciden o son incorrectas");
		return;
	}

	if (!validaCamposVacios())
	{
		alert("Todos los datos marcados con asterisco son obligatorios.");
		return;
	}


	if (!validarCP())
	{
		alert("El formato del Código Postal no es correcto, por favor revíselo");
		return;
	}

	if (!validaCondiciones())
	{
		alert("Es necesario aceptar las condiciones de uso de los datos introducidos");
		return;
	}

	if (!validaFechaNacimiento())
  {
		alert("La fecha de nacimiento no es correcta.Debes escribirla en formato dd/mm/aaaa, por ejemplo: 22/11/1976");
		return;
	}

	if (complete)
		 complete(); //código para quitar el botón de continuar 

	formulario.submit();
}


function validateRegister750()
{
  createForm();
  triesRegister750 +=1;

	if ((triesRegister750 >= 30) && (!validaMac()))
	{
		alert("Si necesitas ayuda, puedes contactar con InOut TV en Contacta o en el  902.131.161");
		return;
	}
	

	if(!validaMac())
	{
		alert("La MAC introducida no es válida o no ha rellanado todos los campos");
		return;
	}
	if (complete)
		 complete(); //código para quitar el botón de continuar 
	formulario.submit();
}



function validaCondiciones()
{
  createForm();
  if (!formulario.checkbox.checked)
    return false;
  else
  	return true;
}

function validarCP()
{
   createForm();
   //si no tiene 5 caracteres no es válido
   if (formulario.ucodpos.value.length != 5)
         return false;
   else
   		return true;

}

function validaCamposVacios()
{
  createForm();
	if (formulario.unombre.value=="" || formulario.uapellido1.value=="" || formulario.ucodpos.value=="" || formulario.umovil.value=="" || formulario.udireccion.value=="" || formulario.upoblacion.value=="")
			return false;
	if (formulario.usexo.value=="-1") return false;
	if (formulario.uprovincia.value==-1)
		 return false;
	if (formulario.upoblacion.value==-1)
		 return false;
	return true;
}

function validatePersonalData750()
{
  createForm();			
	if (!validaCamposVacios())
	{
		alert("Debe rellenar todos los campos obligatorios del formulario.");
		return;
	}


	if (!validarCP())
	{
		alert("El formato del Código Postal no es correcto, por favor reviselo");
		return;
	}

	if (!validaCondiciones())
	{
		alert("Es necesario aceptar las condiciones de uso de los datos introducidos");
		return;
	}

	formulario.submit();
}

function validateLogin()
{
   createLoginForm();
   if(!validaEmailVacio(formularioLogin))
   {
  		alert("Es obligatorio rellenar el email");
  		return;
   }
	
	if(!validaEmail(formularioLogin))
	{
		alert("Por favor, comprueba que has escrito la dirección de correo correctamente, en formato  xxxxx@xxxxxxx.xxx");
		return;
	}
	formularioLogin.submit();
}

/**
* Validate if the all the datas related with the credit card are fullfiled
*/
function validaTarjetaCredito()
{
  createForm();
	if (formulario.cardNumberBlock1.value=="" || formulario.cardNumberBlock2.value==""  
		|| formulario.cardNumberBlock3.value=="" || formulario.cardNumberBlock4.value=="" 
		|| formulario.cardHolder.value=="" || formulario.CVV.value=="")
			return false;
	else
	{
		if (formulario.cardNumberBlock1.value.length != 4 
			|| formulario.cardNumberBlock2.value.length != 4
			|| formulario.cardNumberBlock3.value.length != 4 
			|| formulario.cardNumberBlock4.value.length != 4 )
				return false;
		else
			return true;
	
		return true;
	}
}

function validateBankData740750()
{
	createForm();			

	if (!validarCP())
	{
		alert("El formato del Código Postal no es correcto, por favor reviselo");
		return;
	}	
	
	if (!validaTarjetaCredito() && formulario.cardNumberBlock1.disabled==false)
	{
		alert("Debe rellenar todos los campos del formulario");
		return;
	}	
	
	if (!validaCondiciones())
	{
		alert("Es necesario aceptar las condiciones de uso de los datos introducidos");
		return;
	}

	formulario.submit();
}


function validateStatisticalData750()
{
    createForm();
    if(formulario.npersonas.value*1<formulario.nmenores.value*1)
    {
       alert("El número de menores no puede superar el número de personas"); 
       return false;
    }
    formulario.submit();
}

var FILTER_NUM=0;
var FILTER_HEX=1;
/**=============================================================
Detecta si los caracteres introducidos como parametros son válidos para 
formar unnúmero hexadecimal
=============================================================*/
function filterChars(event,obj,filter)
{ 
  createForm();
	var keyCode = event.which ? event.which : event.keyCode;
	if(filter==FILTER_HEX)
	{
		if(keyCode==9 && obj.value.length<2) return (obj.value.length>1);
		else if(keyCode<13) return true;
		keyCode=String.fromCharCode(keyCode).toUpperCase().charCodeAt();
		return (keyCode >= '0'.charCodeAt() && keyCode <= '9'.charCodeAt()) || (keyCode >= 'A'.charCodeAt() && keyCode <= 'F'.charCodeAt()) ;
	}
	if(keyCode==9) return (obj.value.length>0);
	else if(keyCode<13) return true;
	return keyCode >= '0'.charCodeAt() && keyCode <= '9'.charCodeAt();

}

/**=============================================================
Validación de que el usuario ha seleecionado el 
servicio de suscripción a las SincroGuia TV
=============================================================*/
function validateServiceSelected()
{
	createForm();
	if(formulario.serviceSincroGuiaTV.checked || formulario.serviceSincroGuiaTV2.checked)
		formulario.submit();
	else
	{
		alert("Es necesario seleccionar un servicio para poder continuar");
		return;	
	}
}

/**
startsWith to check if a string starts with a particular character sequence:
@see http://www.tek-tips.com/faqs.cfm?fid=6620
*/
String.prototype.startsWith = function(str)
{
return (this.match("^"+str)==str)
}

/**
Trim function, trims all leading and trailing spaces:
@see http://www.tek-tips.com/faqs.cfm?fid=6620
*/
String.prototype.trim = function()
{
	return (this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""))
}


/**
* Valida una si el valor pasado como parametro es una dirección MAC valida
* @param mac  - Dirección MAC a validar
* @return true si es una MAC valida, false en caso contrario.
*/
function isValidMAC(mac)
{
    var macValida = new RegExp("[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]:[0-9A-F][0-9A-F]");

    if (mac.length>0)
    {
		if (mac.match(macValida))
			return true;
    }

	return false;
}


function checkFieldsForgottenMailForm()
{
	createForm();
	var mac = formulario.mac.value;
	if(mac == "")
	{
		alert("Debe especificar la MAC de su PVR.");
		return;
	}
	else
	{
		//1987 - BETATESTER:El código de activación ha de ser un campo obligatorio en recordar email
		//M685 starts with 01:02
		//M665 starts with 00:16:FB
		mac = mac.trim().toUpperCase();
		if(mac.length != 17)
		{
			alert("La longitud de la MAC no es correcta");
			return;
		}

		//1993 - Mejorar la validación de la MAC y el código de activación
		if(!isValidMAC(mac))
		{
			alert("Por favor, compruebe que la MAC dispone del formato XX:XX:XX:XX:XX");
			return;
		}

		if( (mac.startsWith('01:02') || mac.startsWith('00:16:FB')))
		{
			//1993 - Mejorar la validación de la MAC y el código de activación
			var activationCode = formulario.activationCode.value;
			if(activationCode == "")
			{
				alert("Debe especificar el codigo de activacion de su PVR.");
				return;
			}
			else if(activationCode.length != 6)
			{
				alert(" Por favor, compruebe que el código de activacion tiene 6 dígitos.");
				return;
			}
		}

		formulario.submit();
	}
}

function complete()
{
  hidediv();
	showdiv();
}

function hidediv()
{
  if (document.getElementById)
  { // DOM3 = IE5, NS6
    document.getElementById('hideShow').style.visibility = 'hidden';
    document.getElementById('hideShow').style.display = 'none';
  }
  else
  {
    if (document.layers)
    { // Netscape 4
      document.hideShow.visibility = 'hidden';
      document.hideShow.display = 'none';
    }
    else
    { // IE 4
      document.all.hideShow.style.visibility = 'hidden';
      document.all.hideShow.style.display = 'none';
    }
  }
}

function showdiv()
{
  if (document.getElementById)
  { // DOM3 = IE5, NS6
    document.getElementById('showHide').style.visibility = 'visible';
    document.getElementById('showHide').style.display = 'block';
  }
  else
  {
    if (document.layers)
    { // Netscape 4
      document.showHide.visibility = 'visible';
      document.showHide.display = 'block';
    }
    else
    { // IE 4
      document.all.showHide.style.visibility = 'visible';
      document.all.showHide.style.display = 'block';
    }
  }
}



