var num_pre = 0;

function mostrar_preload(){
	if (num_pre == 0)	$("#preload").show();
	num_pre++;
}

function ocultar_preload(){
	num_pre--;
	if (num_pre == 0) $("#preload").hide();
}

function param_fijos(param){
	var p = param;
	p["lang"] = $("#lang").val();
	p["fec_entrada"] = $("#fec_entrada").val();
	p["fec_salida"] = $("#fec_salida").val();
	p["cad"] = $("#cad").val();
	p["hot"] = $("#hot").val();
	return p;
}

function Load_a(id,url,param,cb)
{
	mostrar_preload();
	$(id).load(url,param_fijos(param),function(data){
			if(data.substring(0,6)=="<html>"){
				location.replace("index.html");
			}else{
				asignar_acciones();
         	ocultar_preload();
				try{cb();}catch(e){}
			}
    });	
}

function Load_s(url,param)
{
	mostrar_preload();
	var data = $.ajax({ type: "POST", url: url, data: param_fijos(param), async: false }).responseText;
  	if(data.substring(0,6)=="<html>"){
		location.replace("index.html");
		return false;
	}else{
		asignar_acciones();
      ocultar_preload();
		return data;
	}	
}

$(document).ready(function(){
	cargar_body_container();							
	$.historyInit(CargarMarca);
});

function cargar_body_container(){
	Load_a("#body_container","servidor.php",{accion:'cargar_body_container'},function(){post_cargar_body_container();});
}

function post_cargar_body_container(){
	$("#preload").hide();
	cargar_tab1();
	cargar_tab2();
	cargar_tab3();
	asignar_acciones();
	
	//When page loads...
	$(".tab_content").hide(); //Hide all content
	$("ul.tabs li:first").addClass("active").show(); //Activate first tab
	$(".tab_content:first").show(); //Show first tab content

	//On Click Event
	$("ul.tabs li").click(function() {
		var Tab = $(this).find("a").attr("href");
		if(navigator.appName=="Microsoft Internet Explorer")Tab = Tab.substring(Tab.lastIndexOf("/")+1,Tab.length);
		var num_tab = parseInt(Tab.substr(Tab.length-1));
		var id = "#tab"+(num_tab-1)+"_completado";
		if(($(id).val()==1)||(num_tab-1==0)){
			$("ul.tabs li").removeClass("active"); //Remove any "active" class
			$(this).addClass("active"); //Add "active" class to selected tab
			$(".tab_content").hide(); //Hide all tab content
			$(Tab).fadeIn();
			switch(num_tab){
				
				case 1:
					mostrar_cesta();
				break;
				
				case 2: 
					mostrar_cesta_ofertas();
					cargar_ofertas_aplicables();
				break; 
				
				case 3:
					mostrar_cesta_reserva();
				break;
			}
		}
		return false;
	});
}

function asignar_acciones(){
		
	$("a[rel='history']").unbind();
 	$("a[rel='history']").click(function(){
 		var hash = this.href;
 		hash = hash.replace(/^.*#/, '');
 		$.historyLoad(hash);
 		return false;
 	});
	
	$("select[id^='hh']").unbind();
	$("select[id^='hh']").change(function(){
 		calcular_precio(this.id);
 	});

	$("input[id^='hhadd_']").unbind();
	$("input[id^='hhadd_']").click(function(){
 		add_cesta(this.id);
 	});
	
	$("div[id^='elimcesta_']").unbind();
	$("div[id^='elimcesta_']").click(function(){
 		sub_cesta(this.id);
 	});
	
	$("#bot_fec").unbind();
	$("#bot_fec").click(function(){
 		var fe = $("#txt_fec_entrada").val();
		var fs = $("#txt_fec_salida").val();
		var dfe = new Date(fe.split("/")[2],fe.split("/")[1],fe.split("/")[0]);
		var dfs = new Date(fs.split("/")[2],fs.split("/")[1],fs.split("/")[0]);
		if(dfe>=dfs){
			alert(getLangText("text025"));
		}else{
			$("#fec_entrada").val(fe);
			$("#fec_salida").val(fs);
			cargar_tab1();
		}	
 	});
	
	$("input[id^='check_ofer_apli_']").unbind();
	$("input[id^='check_ofer_apli_']").click(function(){															  
 		if($("#"+this.id).attr("checked")){
			add_oferta(this.id.split('_')[3]);
		}else{
			sub_oferta(this.id.split('_')[3]);
		}
 	});
	
	$("#btn_confirmar").unbind();
	$("#btn_confirmar").click(function(){
		var valid = true;
		if(!checkMail($("#cli_mail").val())){valid=false;alert(getLangText("text107"));}
		if((!checkOnlyLetters($("#cli_name").val()))||($("#cli_name").val()=="")){valid=false;alert(getLangText("text108"));}
		if((!checkOnlyLetters($("#cli_ape1").val()))||($("#cli_ape1").val()=="")){valid=false;alert(getLangText("text109"));}
		if(!checkOnlyLetters($("#cli_ape2").val())){valid=false;alert(getLangText("text110"));}
		if($("#cli_dni").val()==""){valid=false;alert(getLangText("text111"));}
		if((!checkOnlyNumbers($("#cli_tlf").val()))||($("#cli_tlf").val()=="")){valid=false;alert(getLangText("text112"));}
		if($("#tar_tipo").val()==""){valid=false;alert(getLangText("text113"));}
		//if((!checkOnlyNumbers($("#tar_num_tar").val()))||($("#tar_num_tar").val().length!=16)){valid=false;alert(getLangText("text114"));}
		if(validarTarjeta($("#tar_tipo").val(),$("#tar_num_tar").val())){valid=false;alert(getLangText("text114"));}
		if((!checkOnlyLetters2($("#tar_tit").val()))||($("#tar_tit").val()=="")){valid=false;alert(getLangText("text115"));}
		//if((!checkOnlyNumbers($("#tar_cad").val()))||($("#tar_cad").val().length!=4)){valid=false;alert(getLangText("text116"));}
		if(comprobarFechas($("#tar_cad").val())){valid=false;alert(getLangText("text116"));}
		if((!checkOnlyNumbers($("#tar_seg").val()))||($("#tar_seg").val().length<3)){valid=false;alert(getLangText("text117"));}
		var checkeado=$("#acc_cond").attr("checked");
		if(!checkeado){valid=false;alert(getLangText("text118"));}
		if(valid){
			confirmar_reserva();
		}else{
			//alert("fallo formato");
		}						 
 	});
	
	$("#link_cons_mail").unbind();
	$("#link_cons_mail").click(function(){
	   var cons = checkMailBBDD($("#cli_mail").val()).split("|");
		if(cons[0]=="1"){
			$("#cli_name").val(cons[1]);
			$("#cli_ape1").val(cons[2]);
			$("#cli_ape2").val(cons[3]);
			$("#cli_dni").val(cons[4]);
			$("#cli_tlf").val(cons[5]);		 
		}
		return false;
 	});
	
	$("#link_cerrar").unbind();
	$("#link_cerrar").click(function(){
	   location.reload();
		return false;
 	});
	
	
	
	$("#btn_res").unbind();
	$("#btn_res").click(function() {
		var Tab = $("#li2").find("a").attr("href");
		if(navigator.appName=="Microsoft Internet Explorer")Tab = Tab.substring(Tab.lastIndexOf("/")+1,Tab.length);
		var num_tab = parseInt(Tab.substr(Tab.length-1));
		var id = "#tab"+(num_tab-1)+"_completado";
		if(($(id).val()==1)||(num_tab-1==0)){
			$("ul.tabs li").removeClass("active"); //Remove any "active" class
			$("#li2").addClass("active"); //Add "active" class to selected tab
			$(".tab_content").hide(); //Hide all tab content
			$(Tab).fadeIn();
			switch(num_tab){
				
				case 2:
					mostrar_cesta_ofertas();
					cargar_ofertas_aplicables();
				break; 
				
			}
		}
		return false;
	});
	
	$("#btn_res2").unbind();
	$("#btn_res2").click(function() {
		var Tab = $("#li3").find("a").attr("href");
		if(navigator.appName=="Microsoft Internet Explorer")Tab = Tab.substring(Tab.lastIndexOf("/")+1,Tab.length);
		var num_tab = parseInt(Tab.substr(Tab.length-1));
		var id = "#tab"+(num_tab-1)+"_completado";
		if(($(id).val()==1)||(num_tab-1==0)){
			$("ul.tabs li").removeClass("active"); //Remove any "active" class
			$("#li3").addClass("active"); //Add "active" class to selected tab
			$(".tab_content").hide(); //Hide all tab content
			$(Tab).fadeIn();
			switch(num_tab){
				
				case 1:
					mostrar_cesta();
				break;
				
				case 2: 
					mostrar_cesta_ofertas();
					cargar_ofertas_aplicables();
				break; 
				
				case 3:
					mostrar_cesta_reserva();
				break;
			}
		}
		return false;
	});
	
}

function CargarMarca(marca)
{
 	if(marca)//si recibe un hash
 	{
		switch(marca){
	
			case 'boton1':
				cargar_boton1();
			break;
			
			case 'boton2':
				cargar_boton2();
			break;
			
			case 'tab1':
				cargar_tab1();
			break;
			
			case 'tab2':
				cargar_tab2();
			break;
	
		}
  	} else {
		$("#preload").hide();
 	}
}


function cargar_boton1(){
	Load_a("#contenedor","servidor.php",{accion:'cargar_contenedor'});
}

function cargar_boton2(){
	//Load_a("#contenedor2","servidor.php",{accion:'cargar_contenedor2'});
	$("#contenedor2").html(Load_s("servidor.php",{accion:'cargar_contenedor2'}));
}

function cargar_tab1(){
	Load_a("#tab1","servidor.php",{accion:'cargar_tab1'},function(){post_cargar_tab1();});
}

function post_cargar_tab1(){
	$("#txt_fec_entrada").datepicker($.datepicker.regional['es']);
	$("#txt_fec_salida").datepicker($.datepicker.regional['es']);
	calcular_precios();
	mostrar_cesta();
}

function calcular_precios(){
	var hh = $("div[id^='hh_']");
	var i;
	for (i=0;i<hh.length;i++){
		calcular_precio(hh[i].id);
	}
}

function calcular_precio(id){
	var hab = id.split('_')[1];
	var reg = $("#hhreg_"+hab).val();
	var ser1 = $("#hhser1_"+hab).val();
	var ser2 = $("#hhser2_"+hab).val();
	var adu = $("#hhadu_"+hab).val();
	var nin = $("#hhnin_"+hab).val();
	var nhab = $("#hhnhab_"+hab).val();
	Load_a("#hhp_"+hab,"servidor.php",{accion:'calcular_precio',hab:hab,reg:reg,ser1:ser1,ser2:ser2,adu:adu,nin:nin,nhab:nhab});
}

function add_cesta(id){
	var hab = id.split('_')[1];
	var reg = $("#hhreg_"+hab).val();
	var ser1 = $("#hhser1_"+hab).val();
	var ser2 = $("#hhser2_"+hab).val();
	var adu = $("#hhadu_"+hab).val();
	var nin = $("#hhnin_"+hab).val();
	var nhab = $("#hhnhab_"+hab).val();
	$("#hhnhab_"+hab).val(1);
	calcular_precio(id);
	for (var i=0;i<nhab;i++){
		$("#hhnhab_"+hab+" > option:enabled:last").attr("disabled","disabled");
	}
	if($("#hhnhab_"+hab+" > option:enabled:last").length==0){
		$("#hhadd_"+hab).attr("disabled","disabled");
	}
	var c = $("#hh_"+hab).clone();
	c.attr("id","clone");
	$("#hh_"+hab).before(c);
	$("#clone").addClass("abs");
	var orig = $("#hh_"+hab).position();
	var orig_w = $("#hh_"+hab).width();
	$("#clone").css({left:orig.left,top:orig.top,width:orig_w});
	var dest = $("#cesta").position();
	$("#clone").animate(
		{top:dest.top+5,left:orig.left},
		500, 
		function(){
			$("#clone").fadeOut('slow',function(){$("#clone").remove();});
			Load_a("#oculto","servidor.php",{accion:'add_cesta',hab:hab,reg:reg,ser1:ser1,ser2:ser2,adu:adu,nin:nin,nhab:nhab},mostrar_cesta);
		}
	);
	$("#tab1_completado").val(1);
	$("#tab2_completado").val(1);
}

function mostrar_cesta(){
	Load_a("#cesta","servidor.php",{accion:'mostrar_cesta'});
}

function sub_cesta(id){
	var el = id.split('_')[1];
	Load_a("#oculto","servidor.php",{accion:'sub_cesta',el:el},mostrar_cesta);
	if(cesta_vacia()==1){
		$("#tab1_completado").val(0);
		$("#tab2_completado").val(0);
	}else{
		$("#tab1_completado").val(1);
		$("#tab2_completado").val(1);
	}
	var hab = id.split('_')[2];
	$("#hhnhab_"+hab+" > option,#hhadd_"+hab).removeAttr("disabled");
}

function cargar_tab2(){
	Load_a("#tab2","servidor.php",{accion:'cargar_tab2'},function(){post_cargar_tab2();});
}

function post_cargar_tab2(){
	//
}

function cargar_ofertas_aplicables(){
	Load_a("#ofer_apli","servidor.php",{accion:'cargar_ofertas_aplicables'});
}


function getLangText(idtext){
	return Load_s("servidor.php",{accion:'getLangText',idtext:idtext});
}

function cesta_vacia(){
	return Load_s("servidor.php",{accion:'cesta_vacia'});
}

function mostrar_cesta_ofertas(){
	Load_a("#cesta_ofertas","servidor.php",{accion:'mostrar_cesta_ofertas'});
}

function add_oferta(OFP_CODOFERTA){
	Load_a("#oculto","servidor.php",{accion:'add_oferta',OFP_CODOFERTA:OFP_CODOFERTA},mostrar_cesta_ofertas);
}

function sub_oferta(OFP_CODOFERTA){
	Load_a("#oculto","servidor.php",{accion:'sub_oferta',OFP_CODOFERTA:OFP_CODOFERTA},mostrar_cesta_ofertas);
}

function cargar_tab3(){
	Load_a("#tab3","servidor.php",{accion:'cargar_tab3'},function(){post_cargar_tab3();});
}

function post_cargar_tab3(){
	//
}

function checkMail(mail) {
	var reg = new RegExp('^[^@]+@[^@]+.[a-z]{2,}$', 'i');
	if(!reg.test(mail) || mail == "") {
		return false;	
	}else{
		return true;    
	}
}

function checkOnlyLetters(str) {
	var reg = new RegExp('^[a-zçñ]*$', 'i');
	return reg.test(str);
}

function checkOnlyLetters2(str) {
	var reg = new RegExp('^[a-z\\sçñ]*$', 'i');
	return reg.test(str);
}

function checkOnlyNumbers(str) {
	var reg = new RegExp('^[\\d]*$', 'i');
	return reg.test(str);
}

function checkMailBBDD(mail){
	return Load_s("servidor.php",{accion:'consultar_mail_bbdd',mail:mail});
}

function validarTarjeta(tipo,num){
	var tar = tipo;
	var numtar = num;
	if (tar == "visa"){
		//return !numtar.match(/^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/); 
		if (numtar.match(/^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/)){
			var comprobacion = comprobarNumero(numtar);
			return comprobacion;
		} else {
			return !numtar.match(/^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/); 
		}
	} else if (tar == "mastercard"){
		//return !numtar.match(/^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/);
		if (numtar.match(/^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/)){
			var comprobacion = comprobarNumero(numtar);
			return comprobacion;
		} else {
			return !numtar.match(/^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/); 
		}
	} else if (tar == "americanexpress"){
		//return !numtar.match(/^3[47]-?\d{13}$/);
		if (numtar.match(/^3[47]-?\d{13}$/)){
			var comprobacion = comprobarNumeroAmex(numtar);
			return comprobacion;
		} else {
			return !numtar.match(/^3[47]-?\d{13}$/); 
		}
	}
}

//funciona que comprueba que la suma de la tarjeta es mod10
function comprobarNumero(num){
	var suma = 0;
	for (i = num.length; i > 0; i--) {
		if (i % 2 == 1) {
			var doble = "" + (parseInt(num.substring(i - 1, i)) * 2);
			if (doble.length == 2) {
				doble = parseInt(doble.substring(0,1)) + parseInt(doble.substring(1,2));
			}
			suma += parseInt(doble);
		} else {
			suma += parseInt(num.substring(i - 1, i));
		}
	}
  //alert("suma: " + suma + " mod: " + (suma % 10))
	if (suma % 10 != 0) {
		//alert("El número de la tarjeta de crédito no es válido.");
		return true;
	} else {
		//alert("Tarjeta valida");
		return false;
	}
}

function comprobarNumeroAmex(num){ 
     
  var number=num.replace(/\D/g, '');
 
  // Set the string length and parity
  var number_length=num.length;
  var parity=number_length % 2;
 
  // Loop through each digit and do the maths
  var total=0;
  for (i=0; i < number_length; i++) {
    var digit=number.charAt(i);
    // Multiply alternate digits by two
    if (i % 2 == parity) {
      digit=digit * 2;
      // If the sum is two digits, add them together (in effect)
      if (digit > 9) {
        digit=digit - 9;
      }
    }
    // Total up the digits
    total = total + parseInt(digit);
  }
 
  // If the total mod 10 equals 0, the number is valid
  if (total % 10 == 0) {
    return false;
  } else {
    return true;
  }
      
  //alert("suma: " + total + " mod: " + (total % 10))
     //return (sum%10==0);  
}

function comprobarFechas(fecha){
	//alert(fecha.substring(0,2) + " - " + fecha.substring(2,4));
	var mes = fecha.substring(0,2);
	var ano = fecha.substring(2,4);
	
	if (mes > 12) { return true; }
	if (ano < 10) { return true; }
	
	return false;
	
}

function mostrar_cesta_reserva(){
	Load_a("#cesta_reserva","servidor.php",{accion:'mostrar_cesta_reserva'});
}

function confirmar_reserva(){
	var cli_mail = $("#cli_mail").val();
	var cli_ape1 = $("#cli_ape1").val();
	var cli_ape2 = $("#cli_ape2").val();
	var cli_name = $("#cli_name").val();
	var cli_dni = $("#cli_dni").val();
	var cli_tlf = $("#cli_tlf").val();
	var tar_tipo = $("#tar_tipo").val();
	var tar_tit = $("#tar_tit").val();
	var tar_num_tar = $("#tar_num_tar").val();
	var tar_cad = $("#tar_cad").val();
	var tar_seg = $("#tar_seg").val();
	var comentario = $("#comentario").val();
	var res = Load_s("servidor.php",{accion:'confirmar_reserva',cli_mail:cli_mail,cli_ape1:cli_ape1,cli_ape2:cli_ape2,cli_name:cli_name,cli_dni:cli_dni,cli_tlf:cli_tlf,tar_tipo:tar_tipo,tar_tit:tar_tit,tar_num_tar:tar_num_tar,tar_cad:tar_cad,tar_seg:tar_seg,comentario:comentario});
	var res2 =  res.split('|');
	if((res2[0]=="res_id")&&(res2[1]!="")&&(res2[2]=="")){
		//alert("reserva_confirmada");
		$("#tab3_completado").val(1);
		$("#res_id").val(res2[1]);
		cargar_tab4();
	}else{
		$("#tab3_completado").val(0);
		alert("error: "+res);
	}
}

function DatosCliente(mail){
	return Load_s("servidor.php",{accion:'DatosCliente',mail:mail});
}

function cargar_tab4(){
	var Tab = $("#li4").find("a").attr("href");
	if(navigator.appName=="Microsoft Internet Explorer")Tab = Tab.substring(Tab.lastIndexOf("/")+1,Tab.length);
	var num_tab = parseInt(Tab.substr(Tab.length-1));
	var id = "#tab"+(num_tab-1)+"_completado";
	if(($(id).val()==1)||(num_tab-1==0)){
		$("ul.tabs li").removeClass("active"); //Remove any "active" class
		$("#li4").addClass("active"); //Add "active" class to selected tab
		$(".tab_content").hide(); //Hide all tab content
		$(Tab).fadeIn();
	}
	
	var res_id = $("#res_id").val();
		
	Load_a("#tab4","servidor.php",{accion:'cargar_tab4',res_id:res_id},function(){post_cargar_tab4();});
}

function post_cargar_tab4(){
	$("ul.tabs li").unbind();
	$("#tab1_completado").val(0);
	$("#tab2_completado").val(0);
	$("#tab3_completado").val(0);
}


