function actualizar_campos() {
    var valor = document.fbook.card_type.options[document.fbook.card_type.selectedIndex].text;
	var issue=document.getElementById('issue');
	var cvc=document.getElementById('cvc');
	var helpeb=document.getElementById('helpy');
	var ezekar=document.getElementById('ECcarddata');
	var noezekar=document.getElementById('carddata');
	var start_date=document.getElementById('start_date');
	var cvc_obligato=document.getElementById('cvc_obligato');
	var dv_obligato=document.getElementById('dv_obligato');
    if (valor=='Solo'){
	    issue.style.display='block';
	    start_date.style.display='none';
	    if (cvc_obligato) cvc_obligato.style.visibility = 'visible';
        if (dv_obligato) dv_obligato.style.visibility = 'visible';
	}else if (valor=='Maestro'){
	     issue.style.display='block';
	     start_date.style.display='block';
	     if (cvc_obligato) cvc_obligato.style.visibility = 'hidden';
         if (dv_obligato) dv_obligato.style.visibility = 'hidden';
	}else if (valor=='Maestro EURO6000'){
	     //document.getElementById('ccholder').style.display='none';
         //document.getElementById('ccnum').style.display='none';
         document.getElementById('carddata').style.visibility = 'hidden';
         document.getElementById('cvc_obligato').style.visibility = 'hidden';
         document.getElementById('helpy').style.visibility = 'hidden';
         document.getElementById('footblock').style.display='none';
         document.getElementById('euro6000').style.display='block';
         document.getElementById('euro6000').style.marginLeft='10px';
    }else{
        /*cambios euro 6000*/
        document.getElementById('euro6000').style.display='none';
        document.getElementById('carddata').style.visibility = 'visible';
        document.getElementById('cvc_obligato').style.visibility = 'visible';
        document.getElementById('helpy').style.visibility = 'visible';        
        document.getElementById('footblock').style.display='block';
        /*fin cambios euro6000*/
        issue.style.display='none';
	    start_date.style.display='none';
	    if (cvc_obligato) cvc_obligato.style.visibility = 'visible';
        if (dv_obligato) dv_obligato.style.visibility = 'visible';
    }

	cvc.style.display='block';helpeb.style.display='block';

	if (valor=='EC-Karte'){Diss('helptxt1'); noDiss('helptxt2');	ezekar.style.display='block'; noezekar.style.display='none';}
	else {noDiss('helptxt1'); Diss('helptxt2');	if(ezekar)ezekar.style.display='none'; noezekar.style.display='block';}
	HSize();
}

function escriuOptionsE (ini, fin){
    var i = parseInt(ini);
    var cero = "";
    while (i<=parseInt(fin)) { if(i<10) { cero="0"; }else{ cero=""; } document.write('<option value="'+i+'">'+cero+String(i).substr(2,2)+'</option>'); i++; }
}
function escriuOptionsS (ini, fin){
    var i = parseInt(ini);
    var cero = "";
    document.write('<option value="" selected="selected">--</option>');
    while (i<=parseInt(fin)) { if(i<10) { cero="0"; }else{ cero=""; } document.write('<option value="'+i+'">'+cero+String(i).substr(2,2)+'</option>'); i++; }
}
function check_fbook_sinpago() {
	if (controlCampos()) {
	document.fbook.fdestino.value = 'http://hotelopia.net/pasarelas/pasarela_sinpago.jsp';
	ponerdatos();document.fbook.submit();
	}
}
function check_fbook_offline() {
	if (controlCampos()) {
	document.fbook.fdestino.value = '../pasarelas/offline_pay.jsp';
	ponerdatos();document.fbook.submit();
	}
}
function check_fbook() {
  if (controlCampos()) {
      if (controlPasarelaPago(document.fbook)) { 
        if (!document.fbook.read_terms.checked) {errorear(20301); document.fbook.read_terms.focus(); return;}
         ponerdatos();document.fbook.submit();
      }
  }
}
function check_fbook_difpay() {
    if (controlPasarelaPago(document.fbook)) { 
        if (!document.fbook.read_terms.checked) {errorear(20301); document.fbook.read_terms.focus(); return;}
        ponerdatos();document.fbook.submit();
    }
}
  
function controlCampos() {
    if (document.fbook.total_price.value == 'NaN'){errorear(22825); return false;}
    if (document.fbook.firstname.value =='') {errorear(20302);document.fbook.firstname.focus(); return false;}
    if (document.fbook.surname.value =='') {errorear(20303);document.fbook.surname.focus(); return false;}
    if (document.fbook.firstname_USA!= null){
        for(i=0;i<document.fbook.firstname_USA.length;i++){
              if (document.fbook.firstname_USA[i].value =='') {errorear(20302);document.fbook.firstname_USA[i].focus(); return false;}
              if (document.fbook.surname_USA[i].value =='') {errorear(20303);document.fbook.surname_USA[i].focus(); return false;}
        }
    }
     if (document.getElementById('cod_agent_brz')!=null){
        if(document.fbook.agent_req.value=='Y'){
            if (document.fbook.agent.value =='') {errorear(21308);document.fbook.agent.focus(); return false;}
        }
   }
    if(!comprobarEmail(document.fbook.email)) { return; }
    if (document.fbook.email.value != document.fbook.remail.value) {errorear(20305);document.fbook.email.focus(); return false;}
    if (document.fbook.mobile.value =='') {errorear(20306);document.fbook.mobile.focus(); return false;} 
	document.fbook.mobile.value = document.fbook.mobile.value.replace(/[^a-zA-Z 0-9]+/g,'');
    if (!isInteger(document.fbook.mobile.value)) {errorear(22805);document.fbook.mobile.focus(); return false;}
    if (document.fbook.flynumber!= null){
        document.fbook.flynumber.value = document.fbook.flynumber.value.replace(/ /g,'');
        document.fbook.arrivaltime.value = document.fbook.arrivaltime.value.replace(/ /g,'');
        document.fbook.flynumberDep.value = document.fbook.flynumberDep.value.replace(/ /g,'');
        document.fbook.departuretime.value = document.fbook.departuretime.value.replace(/ /g,'');
        if(document.fbook.flynumber.value ==''){errorear(22817);document.fbook.flynumber.focus(); return false;}
        if(document.fbook.arrivaltime.value ==''){errorear(22817);document.fbook.arrivaltime.focus(); return false;}
        if(document.fbook.flynumberDep.value ==''){errorear(22817);document.fbook.flynumberDep.focus(); return false;}
        if(document.fbook.departuretime.value ==''){errorear(22817);document.fbook.departuretime.focus(); return false;}
    }
if (document.fbook.passport!= null){
		if(document.fbook.passport.value ==''){errorear(21308);document.fbook.passport.focus(); return false;}
}
    return true;
}
function foraDisc(){noViss('ejem');noViss('vnor');noViss('discountv');}
var QUUUi=0;
function showCamps(ju){
	if(ju){Viss('vnor');noViss('ejem');
	document.getElementById('vnor').focus();
	QUUUi=1;}
	else {Viss('ejem');noViss('vnor');
	document.getElementById('vbal').focus();
	QUUUi=2;}
	}
function checkDiscount(){form=document.fbook;
	form.discount_voucher_code.value="";
	if(QUUUi==0) return;
	if(QUUUi==1) {rDiscount = document.getElementById('vnor').value;
	    if (!allDigits(rDiscount)) {errorear(22806);return;}
	}
	if(QUUUi==2){
			if(checkDNI(document.getElementById('vbal').value)) rDiscount= 971971; 
			else{ alert("Introduzca un NIF válido"); return; } 
			}
	form.discount_voucher_code.value=rDiscount;
	if(form.discount_voucher_code.value!==''){
		form.fdestino.value='../booking.jsp';
		form.submit();
		}
}

function checkDNI(nif){
    if(nif.length!=9){ return false; }
    var tbl=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','T');
    
    nif = nif.toUpperCase();
    var dni = nif.substring(0,8);
    var letra = nif.substring(8);
    
    if(nif.substring(0,1)=="X"){ dni = nif.substring(1,8); }    
    return (tbl[dni%23]==letra);
}
	
/*-Función para el control de tarjeta-*/
function controlPasarelaPago(form) {
    var tarjeta = form.card_type.options[form.card_type.selectedIndex].value;
	if (tarjeta == '') {errorear(20307); form.card_type.focus(); return false;}
	if (tarjeta == 'ELV-SSL') {
		if (form.bank_name.value =='') {errorear(20308);form.bank_name.focus();return false;}
		if (form.bank_location.value =='') {errorear(20309);form.bank_location.focus();return false;}
		if (form.account_holder_name.value =='') {errorear(20310);form.account_holder_name.focus();return false;}
		if (form.bank_account_nr.value =='') {errorear(20311);form.bank_account_nr.focus();return false;}
		if (form.bank_account_nr.value.length > 15) {errorear(20312);form.bank_account_nr.focus();return false;}
		if (form.bank_location_id.value =='') {errorear(20313);form.bank_location_id.focus();return false;}
		if (form.bank_location_id.value.length < 8) {errorear(20314);form.bank_location_id.focus();return false;}
		document.fbook.confirma.value = '../confirmationEC.jsp';
	} else {
		if (form.card_holder_name.value =='') {errorear(20315);form.card_holder_name.focus();return false;}
		if (form.card_number.value.length == 0) {errorear(20316);form.card_number.focus();return false;}

		var mesE = form.card_expirity_month.options[form.card_expirity_month.selectedIndex].value;
		var anyE = form.card_expirity_year.options[form.card_expirity_year.selectedIndex].value;
		var fechaActual = new Date();
		var iniAnio = fechaActual.getFullYear();
		var iniMes = (fechaActual.getMonth()) + 1; 

		//-- Control Caducidad Fechas --
		if(mesE < 10) {mesE="0"+mesE;}
		if(iniMes < 10) {iniMes="0"+iniMes;}
		if (parseInt(anyE+""+mesE) < parseInt(iniAnio+""+iniMes)){errorear(20317);form.card_expirity_month.focus();return false;}

		var valor = form.card_type.options[form.card_type.selectedIndex].value;
		if (valor =='ECMC-SSL' || valor =='VISA-SSL' ||valor =='' || valor =='AMEX-SSL' || valor =='DINERS-SSL'){
			if (form.cvc!=undefined && form.cvc.value.length<3){ errorear(20318); form.cvc.focus(); return false;}
			var result = isValidCreditCardNumber(form.card_number,form.card_type.options[form.card_type.selectedIndex].value) ;
			if (!result){return false;}
		}
		document.fbook.confirma.value = '../confirmation.jsp';
	}		
	return true;
}
		
function isValidCreditCardNumber(formField,ccType)
	{
	var result = true;
	var ccNum = formField.value;
	
	if (formField.value.length>0)
	{ 
	if (!allDigits(ccNum))
	{
	errorear(20319);
	formField.focus();
	result = false;
	}	
	
	if (result)
	{ 
	
	if (!LuhnCheck(ccNum) || !validateCCNum(ccType,ccNum))
	{
	errorear(20320);
	formField.focus();
	result = false;
	}	
	} 
	
	} 
	
	return result;
	}
	
function LuhnCheck(str) 
	{
	var result = true;
	
	var sum = 0; 
	var mul = 1; 
	var strLen = str.length;
	
	for (i = 0; i < strLen; i++) 
	{
	var digit = str.substring(strLen-i-1,strLen-i);
	var tproduct = parseInt(digit ,10)*mul;
	if (tproduct >= 10)
	sum += (tproduct % 10) + 1;
	else
	sum += tproduct;
	if (mul == 1)
	mul++;
	else
	mul--;
	}
	if ((sum % 10) != 0)
	result = false;
	
	return result;
	}
	
function validateCCNum(cardType,cardNum)
	{
	var result = false;
	cardType = cardType.toUpperCase();
	
	var cardLen = cardNum.length;
	var firstdig = cardNum.substring(0,1);
	var seconddig = cardNum.substring(1,2);
	var first4digs = cardNum.substring(0,4);
	
	
	switch (cardType)
	{
	case "VISA-SSL":
	result = ((cardLen == 16) || (cardLen == 13)) && (firstdig == "4");
	break;
	case "AMEX-SSL":
	var validNums = "47";
	result = (cardLen == 15) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
	break;
	case "ECMC-SSL":
	var validNums = "12345";
	result = (cardLen == 16) && (firstdig == "5") && (validNums.indexOf(seconddig)>=0);
	break;
	case "DISCOVER":
	result = (cardLen == 16) && (first4digs == "6011");
	break;
	case "DINERS-SSL":
	var validNums = "068";
	result = (cardLen == 14) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);
	break;
	}
	return result;
	}
	
function allDigits(str)
	{
	return inValidCharSet(str,"0123456789");
	}
	
function inValidCharSet(str,charset)
	{
	var result = true;
	
	for (var i=0;i<str.length;i++)
	if (charset.indexOf(str.substr(i,1))<0)
	{
	result = false;
	break;
	}
	
	return result;
	}

function isInteger(s){
	var i;
	for (i = 0; i < s.length; i++){   
	// Check that current character is number.
	var c = s.charAt(i);
	if (((c < "0") || (c > "9"))) return false;
	}
	// All characters are numbers.
	return true;
	}	
	
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
	this[i] = 31
	if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
	if (i==2) {this[i] = 29}
	} 
	return this
	}

/*VALIDACIÓN DE FECHAS*/
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function IsNumeric(strString)
   {
   var strValidChars = "0123456789.-";
   var strChar;
   var blnResult = true;
   
   if (strString.length == 0) return false;
   
   for (i = 0; i < strString.length && blnResult == true; i++)
   {
   strChar = strString.charAt(i);
   if (strValidChars.indexOf(strChar) == -1)
   {
   blnResult = false;
   }
   }
   return blnResult;
   }

function disableCtrlKeyCombination(e){

        var forbiddenKeys = new Array("a", "n", "c", "x", "v", "j");
        var key;
        var isCtrl;

        if(window.event)
        {
                key = window.event.keyCode;     //IE
                if(window.event.ctrlKey)
                        isCtrl = true;
                else
                        isCtrl = false;
        }
        else
        {
                key = e.which;     //firefox
                if(e.ctrlKey)
                        isCtrl = true;
                else
                        isCtrl = false;
        }

        //if ctrl is pressed check if other key is in forbidenKeys array
        if(isCtrl)
        {
                for(i=0; i<forbiddenKeys .length; i++)
                {
                        //case-insensitive comparation
                        if(forbiddenKeys[i].toLowerCase() == String.fromCharCode(key).toLowerCase())
                        {
                                return false;
                        }
                }
        }
        return true;
}
/*Funcion que añade Flynumber y Arrivaltime a comment*/
function ponerdatos(){
    if(document.getElementById('flynumber')){
        document.fbook.comment.value+="--- Arrival Flynumber:"+document.fbook.flynumber.value+" --- ";
        document.fbook.comment.value+="--- Arrival time:"+document.fbook.arrivaltime.value+" --- \r";
        document.fbook.comment.value+="--- Departure Flynumber:"+document.fbook.flynumberDep.value+" --- ";
        document.fbook.comment.value+="--- Departure time:"+document.fbook.departuretime.value;
    }
}
