$(document).ready(function() {
  // initialization code goes here
	$('#cvvHelp').css({'opacity':'0'});
	$('#cvvCode').mouseover(function () {
		$('#cvvHelp').stop().animate({'opacity':'1'}, 500);
	});
	
	$('#cvvCode').mouseleave(function () {
		$('#cvvHelp').stop().animate({'opacity':'0'}, 500);
	});
	
	$('.password-clear').show();
	$('.changePass').hide();

	$('.password-clear').focus(function() {
		$('.password-clear').hide();
		$('.changePass').show();
		$('.changePass').focus();
	});
	$('.changePass').blur(function() {
		if($('.changePass').val() == '') {
			$('.password-clear').show();
			$('.changePass').hide();
		}
	});
	
	$('.password-clear2').show();
	$('.changePass2').hide();

	$('.password-clear2').focus(function() {
		$('.password-clear2').hide();
		$('.changePass2').show();
		$('.changePass2').focus();
	});
	$('.changePass2').blur(function() {
		if($('.changePass2').val() == '') {
			$('.password-clear2').show();
			$('.changePass2').hide();
		}
	});
	
	$('.password-clear3').show();
	$('.changePass3').hide();

	$('.password-clear3').focus(function() {
		$('.password-clear3').hide();
		$('.changePass3').show();
		$('.changePass3').focus();
	});
	$('.changePass3').blur(function() {
		if($('.changePass3').val() == '') {
			$('.password-clear3').show();
			$('.changePass3').hide();
		}
	});
});

$(function(){

tooltip();

var oldChildVal = '';
var oldAdtVal = '';
var oldBabyVal = '';
var oldNinoVal = '';

// texto textareas
$('.tabs').click(function(){if($(this).attr('title')==$(this).val())$(this).val('')});
$('.tabs').blur(function(){if(!$(this).val())$(this).val($(this).attr('title'))});

// efecto campos formulario
	$("input").click(function(){if($(this).attr("title")==$(this).val())$(this).val("");});
	$("input").blur(function(){if(!$(this).val())$(this).val($(this).attr("title"));});
	$(".comment").click(function(){if($(this).attr("title")==$(this).val())$(this).val("");});
	$(".comment").blur(function(){if(!$(this).val())$(this).val($(this).attr("title"));});

// Efecto ocultar y mostrar contenido.
    $('.openDetalle').click(function(){
//        $('.datosSuplementos').slideToggle(500);
        $(this).parents('div').next().slideToggle(500);
        return false;
    });
    
 // Efecto ocultar y mostrar olvide pass.
    $('.showPass').click(function(){
    	$('.login').slideUp();
    	return !$('.getPass').slideDown();
    });
    
// Efecto ocultar y mostrar login.
    $('.acceso').click(function(){
    	$('.login').slideToggle(500);
        $('.getPass').slideUp(500);
        return false;
    });

// Efecto ocultar y mostrar idiomas.
    $('#idiomas span').click(function(){
        $('.listLanguage').slideToggle(500);
        return false;
    });

// Imprimir 
	$('.btPrint').click(function(){
		window.print();
		return false;
	});
	
// Imprimir y abrir ventana
	$('.imprimirAbrir').click(function(){
		window.location = $(this).attr("href");
		window.print();
		return false;
	});
	
// Efecto ocultar y mostrar reservas multiples.
    $('.formBusquedaPetit .verMultiples').click(function(){
        $('#formBusqueda .typeRooms').slideToggle(500);
        return false;
    });
    
// Efecto ocultar y mostrar comentarios.
    $('.dejaComentario').click(function(){
        $('.formuComentario').slideToggle(500);
        return false;
    });

// Juego pestanyas reservas
	$('.menuReservas a').click(function(){
		$('.menuReservas a').removeAttr('class');
		$('.menuReservas li').removeAttr('class');
		$(this).attr('class','select');
		$(this).parents('li').attr('class','select');
		p=$('.menuReservas a').index(this);
		$('.registroClientes').hide();
		$('.registroClientes').eq(p).show();
		return false;
	});

// Google maps
   	function setMap() {
	    var latlng = new google.maps.LatLng(39.568652, 2.632589);
    
	    var myOptions = {
			zoom: 15,
			center: latlng,
			mapTypeControl: false,
			mapTypeId: google.maps.MapTypeId.ROADMAP
	    };
	
		var map = new google.maps.Map(document.getElementById("map"), myOptions);

		var marker = new google.maps.Marker({
			position: latlng, 
			map: map,
			title:"Hotel Costa Azul"
		  });
	  }

	if ($('#map').length >0) setMap();


// Mostrar imagenes en instalaciones

$('.listSugerencias a').click(function() {
	var param = this.id;
	var w = 690;
	var h = 460;
	if (param == 'h') {
		w = 702;
	} else if (param == 'b') {
		w = 697;
	} else if (param == 'c' || param == 's' || param == 'k' || param == 'p') {
		w = 690;
		if (param == 'p') {
			h = 690;
		}
	} else if (param == 'r') {
		w = 720;
	} 	
	w = w + 120;
	h = h + 120;
	$(this).colorbox({
		href: 'func/loadAmenitiesImages.jsp?p='+ param,
		iframe: true,
		width: w + 'px',
		height: h + 'px'
	});
});

// Cargar fecha por defecto en datepicker
	
	var ad = new Date();
	var aux = new Date();
	//ad.setDate(ad.getDate() + 1);
	//ad = incDate(ad);
	
	$('.avail_date').datepicker({showOn: 'button', buttonImage: 'img/calendar.gif', buttonImageOnly: true, dateFormat: 'dd/mm/yy', minDate: ad, onSelect: function(dateText, inst) {
			
			var dt = dateText.split("/");
			var dat = new Date(dt[2] + "/" + dt[1] + "/" + dt[0]);
			
			// Departure date
			if (this.id == 'from') {
				var inp = $('#to');
				//dat.setDate(dat.getDate()+1);
				dat = incDate(dat);
				if (inp.val() != "") {
					var it = inp.val().split("/");
					var dit = new Date(it[2] + "/" + it[1] + "/" + it[0]);
					var cdate = dat.format('d/m/Y');
					if (dit < dat) inp.val(cdate);
					updateNumberNights();
					return false;
				}
			// Arrival date								
			} else {
				var inp = $('#from');
				//dat.setDate(dat.getDate()-1);
				dat = decDate(dat);
				if (inp.val() != "") {
					var it = inp.val().split("/");
					var dit = new Date(it[2] + "/" + it[1] + "/" + it[0]);
					var cdate = dat.format('d/m/Y');
					if (dit > dat) inp.val(cdate);
					updateNumberNights();
					return false;
				}		
			}
			
			var cdate = dat.format('d/m/Y');
			if (inp.val() == "") inp.val(cdate);
		}
	});
	
	($('#from').val()=='')?$('#from').val(ad.format('d/m/Y')):'';
	//aux.setDate(ad.getDate() + 1);
	aux = incDate(ad);
	($('#to').val()=='')?$('#to').val(aux.format('d/m/Y')):'';
	
	
	$('form').submit(function() {
		// --- Es obligatorio seleccionar al menos una habitación. ---
		if ($(this).attr('id') == 'formBusqueda') {
			var results = getRooms();
			if (results.length  > 0) {
				$("#selectRooms").val(results);
				// roomId#quantity,roomId#quantity 
				var strResults = results.toString();
    			var rooms = strResults.split(',');
    			var moreOne = 0;
    			for (i = 0; i < rooms.length; i++) {
	    			var r = rooms[i].split("#");
	    			if (parseInt(r[1]) > 1) {
	    				moreOne = 1;
	    			}
    			}
				if (rooms.length > 1 || moreOne == 1) {
					$("#formBusqueda").attr("action", "availability-multiple.jsp"); 
				}
			} else {
				getAlertMessage("hca_js_one_room", "false");
				return false;
			}
		}
		// --- Para los microsites ---
		else if ($(this).attr('id') == 'microPeticion') {
			var results = getMicrositesRooms();
			if (results.length  > 0) {
			//if (results.length  == 1) {
				$("#microSelectRooms").val(results); // roomId#quantity	
			} else {
				//getAlertMessage("hca_js_just_one_room");
				getAlertMessage("hca_js_one_room", "false");
				return false;
			}
		}
		
		// --- Si los datos del titular han sido introducidos, entonces se puede proceder al pago.
		else if ($(this).attr('id') == 'datosTitular') {
			if (($('input[name=cname]').val() != null) && ($('input[name=cname]').val() != '')) {
				$('#pagar').val("true");
			}
		}
		
		// --- Register new user ---
		else if ($(this).attr('id') == 'regDivAsForm') {
			var password1 = $('#password').val();
			var password2 = $('#repitapassword').val();
			if (password1 != password2) {
				getAlertMessage("hca_js_different_password", "false");
				return false;
			}
			if (!checkPassword(password1)) {
				getAlertMessage("hca_js_password_length", "false");
				return false;
			}
			if (!($('[name=condiciones]').attr('checked'))) {
		        $('#condi').addClass('error');
		        $('input[name=condiciones').addClass('error');
			} else {
				$('#userReg').val('registro');
			}
			if ($('#cp').val() == $('#cp').attr("title")) {
				$('#cp').val('');
			}
			if ($('#calle').val() == $('#calle').attr("title")) {
				$('#calle').val('');
			}
			if ($('#ciudad').val() == $('#ciudad').attr("title")) {
				$('#ciudad').val('');
			}
			if ($('#phone').val() == $('#phone').attr("title")) {
				$('#phone').val('');
			}
		}
		
		// --- Update user passwords ---
		else if ($(this).attr('id') == 'changeUserPassword') {
			var password1 = $('#newpass').val();
			var password2 = $('#repeatpass').val();
			if (password1 != password2) {
				getAlertMessage("hca_js_different_password", "false");
				return false;
			}
			if (!checkPassword(password1)) {
				getAlertMessage("hca_js_password_length", "false");
				return false;
			}
		}
		
		// --- Campos obligatorios ---
		var eMust = $(this).find('.must');
		eMust.removeClass('error').each(function(){
			var isEmail = $(this).attr('name') == 'email' || $(this).attr('name') == 'mail' || $(this).attr('name') == 'cemail';
			
			// --- Pago con tarjeta ---
			if ($(this).attr('name') == 'condiciones' && (!($(this).attr('checked'))))  {
		        $('label[for=condiciones]').addClass('error');
		        $(this).addClass('error');
			}
			if ($(this).attr('name') == 'tipoPago') {
				if (!($('input[name=tipoPago]:checked').val() == 'all' || $('input[name=tipoPago]:checked').val() == 'fractionated')) {
					$('label[for=tipoPago]').addClass('error');
					$(this).addClass('error');
				}
			}
			// --- Si el valor del input es igual al title es que el valor no ha sido introducido (modificado) ---
			if ($(this).attr('title') == $(this).val()) {
            	$(this).addClass('error');
			}
			
			$(this).val($(this).val().replace(/^(\s|\&nbsp;)*|(\s|\&nbsp;)*$/g, "")); // Eliminamos los espacios en blanco
			
			if ($(this).val() == '' || $(this).val() == '--' || $(this).val().indexOf('*') >= 0 || (isEmail && !checkEmail($(this).val()))) {
				$(this).addClass('error');
			}
		});
				
		if (eMust.hasClass('error')) {
			getAlertMessage("hca_js_red_fields", "false");
			return false;
		}
		return true;
	});	
		
// Make a reservation for a registred user.
$($('#reservationLogUser')).click(function() {
	var email = $('#email').val();
	var password = $('#password').val();
		
	// --- Campos obligatorios ---
	$('[name=email]').removeClass('error');
	$('[name=password]').removeClass('error');
	email = email.replace(/^(\s|\&nbsp;)*|(\s|\&nbsp;)*$/g, "");
	if (email == '' || !checkEmail(email)) {
		$('[name=email]').addClass('error');
	}
	if (password == '') {
		$('[name=password]').addClass('error');
	}
	if ($('[name=password]').hasClass('error') || $('[name=email]').hasClass('error')) {
		getAlertMessage("hca_js_red_fields", "false");
		return false;
	}
	// --------
	$.ajax({
        type: "post",
        url: https_url + "func/users.jsp",
        cache: false,
        context: document.body,
        data: "email=" + email + "&password=" + password,
        success: function(param) {
        	//result = makeBooking + ";" + user.getName() + ";" + user.getSurname() + ";" + user.getEmail() + ";" + user.getMobile() + ";" + user.getCustomerId();
			var init = param.indexOf('**');
       		var end = param.lastIndexOf('**');
       		var result = param.substring(init + 2, end);
       		var values = result.split(';');
       		if (values[0] == 'false') { // makeBooking
       			getAlertMessage("hca_js_no_registered_user", "false");
       			return false;
       		} else {
				fillHolderInfo(values, 'si');
			}
       	}
	});	
});

// Make a reservation for a no registered user.
$($('#reservationNotLogUser')).click(function(event, pname, psurname, pemail, pphone, pdocumentType, pdocument, puserId) {
	// Variables
	var name = $('[name=name]').val();
	var surname = $('[name=surname]').val();
	var mail = $('[name=mail]').val();
	var phone = $('[name=phone]').val();
	var document = $('[name=documento]').val();
	var dni = $('[name=dni]').val();
	var userId = $('[name=cuserId]').val();
	// --- Mandatory fields ---
	if (pname == undefined) {
		$('[name=name]').removeClass('error');
		$('[name=surname]').removeClass('error');
		$('[name=mail]').removeClass('error');
		$('[name=phone]').removeClass('error');
		$('[name=document]').removeClass('error');
		$('[name=dni]').removeClass('error');
		mail = mail.replace(/^(\s|\&nbsp;)*|(\s|\&nbsp;)*$/g, "");
		if (mail == '' || !checkEmail(mail)) {
			$('[name=mail]').addClass('error');
		}
		if (name == '') {
			$('[name=name]').addClass('error');
		}
		if (surname == '') {
			$('[name=surname]').addClass('error');
		}
		if (phone == '') {
			$('[name=phone]').addClass('error');
		}
		if (document == '') {
			$('[name=document]').addClass('error');
		}
		if (dni == '') {
			$('[name=dni]').addClass('error');
		}
		if ($('[name=name]').hasClass('error')  || $('[name=surname]').hasClass('error') || $('[name=mail]').hasClass('error') || $('[name=phone]').hasClass('error') ||
			$('[name=document]').hasClass('error') || $('[name=dni]').hasClass('error')) {
			getAlertMessage("hca_js_red_fields", "false");
			return false;
		}
		
		// --- validar campos ---
		// Nombre y apellidos, DNI, email (el email ya está validado), teléfono.
		/*
		if (!checkNumber(phone)) {
			return !$.fn.colorbox({html:'<h2>ERROR</h2><p>Número de teléfono erróneo</p>', open:true});
		}
		if (document == 'dni') {
			if (!checkNif(dni)) {
				return !$.fn.colorbox({html:'<h2>ERROR</h2><p>DNI erróneo</p>', open:true});
			}
		}*/	
	} else if (name == '') {
		name = pname;
		surname = psurname;
		mail = pemail;
		phone = pphone;
		document = pdocumentType;
		dni = pdocument;
		userId = puserId;
	}
	// --------
	$.ajax({
        type: "post",
        url: https_url + "func/users.jsp",
        cache: false,
        data: "name=" + name + "&surname=" + surname + "&mail=" + mail + "&phone=" + phone + "&documento=" + document + "&dni=" + dni + "&userId=" + userId,
        success: function(param) {
			// result = makeBooking + ";" + user.getName() + ";" + user.getSurname() + ";" + user.getEmail() + ";" + user.getMobile() + ";"  + user.getCustomerId() + ";" +
			// user.getDocumentType() + ";" + user.getDocument();
			var init = param.indexOf('**');
       		var end = param.lastIndexOf('**');
       		var result = param.substring(init + 2, end);
       		var values = result.split(';');
       		fillHolderInfo(values, 'si');
       	}
	});	
});

// Continue reservation
$($('#bPayReservation')).click(function() {
	var name = $('[name=cname]').val();
	var surname = $('[name=csurname]').val();
	var mail = $('[name=cemail]').val();
	var phone = $('[name=cphone]').val();
	var userId = $('[name=cuserId]').val();
	var document = $('[name=cdocument]').val();
	var documentType = $('[name=cdocument_type]').val();
	var codePromotion = $('[name=codePromotion]').val();
	$.ajax({
        type: "post",
        url: https_url + "func/makePayment.jsp",
        cache: false,
        data: "name=" + name + "&surname=" + surname + "&mail=" + mail + "&phone=" + phone + "&userId=" + userId + "&document_type=" + documentType + "&document=" + document + "&pro_code=" + codePromotion,
        success: function(param) { 
		// makeBooking + ";" + deposit.getAmountToBePaid() + ";" + deposit.getAmountToPay() + ";" + deposit.getTotal() + ";" + 
		// deposit.getPercentageToBePaid() + ";" + deposit.getPercentageToPay() + ";" + subTotal
			var init = param.indexOf('**');
			var end = param.lastIndexOf('**');
			var result = param.substring(init + 2, end);
			var values = result.split(';');
			var makeBooking = values[0];
			if (makeBooking == 'true') {
				$('#payReservation').css("display", "none");
				$('#regUser').css("display", "none");
				$('#cabRegUser').css("display", "none");
				$('#datosTitular').css("display", "block");
				$('#pago').css("display", "block");
				// Scroll
	      		var destination = $('#pago').offset().top;
	      		$("html:not(:animated), body:not(:animated)").animate({ scrollTop: destination-20}, 500 );
	      		// Rellenar datos
	      		var toBePaid = values[1];
				var toPay = values[2];
				var total = values[3];
				var perToBePaid = values[4];
				var perToPay = values[5];
				var subTotal = values[6];
				var dtoPromo = values[7];
				$('.frac_30').html(toPay.toString() + "&euro;");
				$('.frac_70').html(toBePaid.toString() + "&euro;");
				$('.frac_total').html(total.toString() + "&euro;");
				$('.frac_1').html(perToPay.toString() + "%");
				$('.frac_2').html(perToBePaid.toString() + "%");
				$('.anticip').html(total.toString() + "&euro;");
				$('.dp_subtotal').html(subTotal.toString() + "&euro;");
				$('.dp_total').html(total.toString() + "&euro;");
				if (parseFloat(dtoPromo) > 0) {
					$('.promo').css("display", "block");
					$('.dtoPromo').html(dtoPromo.toString() + "&euro;");
				} else {
					$('.promo').css("display", "none");
				}
			} else {
				getAlertMsgAndGoHome('hca_timeOut', 'false');
			}
       	}
	});
});

// Change language
$($('#lang')).change(function() {
	$("#fidioma").attr("action", "?lang="+$(this).val());
	$('#fidioma').submit();
}); 

// Change number of nights
$($('#nights')).change(function() {
	var value = $('#nights').val();
	// --- Update departure date ---
	// Get departure date
	var it = $('#from').val().split("/");
	var date = new Date(it[2] + "/" + it[1] + "/" + it[0]);
	// Add the number of nights to the departure date (miliseconds)
	var newDate = new Date(date.getTime() + value * 24 * 60 * 60 * 1000);
	$('#to').val(newDate.format('d/m/Y'));	
}); 

// Change arrival or departure date
$('#from', '#to').change(function() {
	updateNumberNights();
}); 

// Change board
$($('.board')).change(function() {
	var dest_url = 'func/reCalculatePrices.jsp';
	if (($(this).attr('name')).indexOf('micro') >= 0) {
		dest_url = 'func/reCalculatePricesMicro.jsp';
	}
	var value = $(this).val().split("_");
	var habitacion = value[1];
	$.ajax({
        type: "POST",
        url: dest_url,
        cache: false,
        data: "roomId=" + habitacion + "&boardId=" + value[0],
        success: function(param) {
			var init = param.indexOf('**');
       		var end = param.lastIndexOf('**');
       		var num = param.substring(init + 2, end);
       		// simple - availability:
       		$('#price').find("strong").html(num.toString() + "&euro;");
       		// multiple - availability:
       		$('.infoCabecera.multiplePrice').find("h3").html(num + "&euro;");
       		// microsites:
       		$('#price_micro').find("em").html(num.toString() + "&euro;");
       		// price x room in multiple availability:
       		init = param.indexOf('##');
       		end = param.lastIndexOf('##');
       		num = param.substring(init + 2, end);
       		$("#precioRoom_" + habitacion.replace('$', '\\$')).find("strong").html(num.toString() + "&euro;");
       		// microsites:
       		$('#price_' + habitacion.replace('$', '\\$')).find("strong").html(num.toString() + " &euro;");
       	}
	});	
}); 

// --- Microsites ---
/*
$('#microChild').change(function() {
	var nChild = $('#microChild').val();
	var nBaby = $('#microBabys').val();
    $("#microChildAux option:selected").val(parseInt(nChild) + parseInt(nBaby));
    var value = parseInt(nChild) + parseInt(nBaby);
    if (value < 10) {
    	$("#microChildAux option:selected").text('0' + value);
    } else {
    	$("#microChildAux option:selected").text(value);
    }
});

$('#microBabys').change(function() {
	var nChild = $('#microChild').val();
	var nBaby = $('#microBabys').val();
    $("#microChildAux option:selected").val(parseInt(nChild) + parseInt(nBaby));
    var value = parseInt(nChild) + parseInt(nBaby);
    if (value < 10) {
    	$("#microChildAux option:selected").text('0' + value);
    } else {
    	$("#microChildAux option:selected").text(value);
    }
});
*/
// ------- Change number of adults or children ---------
// Select name are composed by name (adult/child) + _RoomCode;minCap;maxCap;maxAdt;maxChd

// --- Keep the old value because if there is an error we must restore it ---
$($('.adults')).click(function() {
	oldAdtVal = $(this).val();
});

$($('.bebes')).click(function() {
	oldBabyVal = $(this).val();
});

$($('.ninos')).click(function() {
	oldNinoVal = $(this).val();
});

// --- change functions ---
$($('.adults')).change(function() {
	var adtValue = $(this).attr("name").split('_');
	var aux = adtValue[1].toString().split(';'); 
	var adultRoom = document.getElementById('adult_' + aux[0]);
	oldAdtVal = ($.browser.msie)?adultRoom.options[0].value:oldAdtVal;
	updateNumAdultAndChild(adtValue[1], '0', $(this).val(), oldAdtVal);
});

$($('.ninos')).change(function() {
	var aux = $(this).attr('name').split('_');
	var ninValue = aux[1].toString().split(';'); 
	var ninRoom = document.getElementById('ninos_' + ninValue[0]);
	oldNinoVal = ($.browser.msie)?ninRoom.options[0].value:oldNinoVal;
	updateNumAdultAndChild(aux[1], '1', $(this).val(), oldNinoVal);
});

$($('.bebes')).change(function() {
	var bebeValue = $(this).val();
	var aux = $(this).attr('name').split('_');
	var roomId = aux[1].replace('$', '\\$');
	$.ajax({
        type: "POST",
        url: "func/reCalculatePrices.jsp",
        cache: false,
        data: "bebes=" + bebeValue + "&roomId=" + roomId.replace('\\$', '$')
	});
});

// --- Microsites selected calendar date when user's want to change dates ---
/*
$($(".calendarDay")).click(function() {
	var valor = $("select[name='reqNights']").val();
	$(this).attr('href', $(this).attr('href') + '&n=' + valor); 
});
*/

// --- Check optional supplement ---
// select
$($("select[name=suppOpQuant]")).change(function() {
	$($("select[name=suppOpQuant]")).each(function() {
		var supId = $(this).attr("id");
		var id = supId.split("_");
		var quantity = $(this).val();
		var checked = 'true';
		if (quantity == '0') {
			// uncheck
			checked = 'false';
			$('#' + id[1]).attr('checked', false);
		} else {
			$('#' + id[1]).attr('checked', true);
		}
		$.ajax({
	        type: "POST",
	        url: https_url + "func/reCalculatePrices.jsp",
	        cache: false,
	        data: "supId=" + id[1] + "&checked=" + checked + "&quantity=" + quantity,
	        success: function(param) {
	        	updateSupplementsPrices(param);	
	       	}
		});
	});
});
// checkbox
$($("input[name=suplopc]")).click(function() {
		$($("input[name=suplopc]")).each(function() {
			if ($('input[name=suplopc]').is(':checked')) {
				var supId = $('input[name=suplopc]').attr("id");
				$('#suppOpQuant_' + supId).val('1');
				$.ajax({
			        type: "POST",
			        url: https_url + "func/reCalculatePrices.jsp",
			        cache: false,
			        data: "supId=" + supId + "&checked=true",
			        success: function(param) {
			        	updateSupplementsPrices(param);
			       	}
				});
			} else {
				var supId = $('input[name=suplopc]').attr("id");
				$('#suppOpQuant_' + supId).val('0');
				$.ajax({
			        type: "POST",
			        url: https_url + "func/reCalculatePrices.jsp",
			        cache: false,
			        data: "supId=" + supId + "&checked=false",
			        success: function(param) {
			        	updateSupplementsPrices(param);	
			       	}
				});
			}
		});
	});  
	
// Selected rooms in header
$($("select[name=room]")).change(function() {
	var id = $(this).attr('id');
	if ($(this).val() > 0) {
		$("#spRoom_" + id).addClass('select');
	} else {
		$("#spRoom_" + id).removeClass('select');
	}
});

// Selected rooms in microsites
$($("select[name=microRoom]")).change(function() {
	var id = $(this).attr('id');
	if ($(this).val() > 0) {
		$("#spMicroRoom_" + id).addClass('select');
	} else {
		$("#spMicroRoom_" + id).removeClass('select');
	}
});

//-- Microsites supplements --
$($("input[name=supplement]")).click(function() {
	var isChecked = "";
    if ($(this).is(':checked')) {
    	isChecked = "&checked=true";
    } else {
    	isChecked = "&checked=false";
    }
	$.ajax({
        type: "POST",
        url: "func/reCalculatePricesMicro.jsp",
        cache: false,
        data: "supId=" + $(this).attr('id') + isChecked,
        success: function(param) {
			var init = param.indexOf('**');
   			var end = param.lastIndexOf('**');
   			var num = param.substring(init + 2, end);
   			$('#price_micro').find("em").html(num.toString() + "&euro;");
       	}
	});
	/*$($("input[name=supplement]")).each(function() {
    	var price = $('#price_micro').find("em").html();
        var value = price.trim().substring(0, price.length - 1).replace(',', '.');
		var supPrice = $(this).val().replace(',', '.');
		if ($('input[name=supplement]').is(':checked')) {
		   var total = parseFloat(value) + parseFloat(supPrice);
		   total = total.toFixed(2);
	       $('#price_micro').find("em").html(total.replace('.', ',') + " &euro;");
		} else {
		   var total = parseFloat(value) - parseFloat(supPrice);
		   total = total.toFixed(2);
	       $('#price_micro').find("em").html(total.replace('.',',') + " &euro;");
		}
    });^*/
});

	// Fotos habitaciones grandes
	$('.infoLeft ul li img').click(function(){
		var bigSrc = $(this).attr('src');
		var id = $(this).attr('id').split('_');
		bigSrc = bigSrc.replace('room_small', 'room_big');
		$('#greatImg_' + id[1] + '_0').fadeOut('slow', function(){
			return !$('#greatImg_' + id[1] + '_0').attr('src', bigSrc);
		});
		return !$('#greatImg_' + id[1] + '_0').fadeIn('slow');
	});
	

});

// tooltip
this.tooltip = function(){
	/* CONFIG */
		xOffset = -18;
		yOffset = -60;
		// these 2 variable determine popup's distance from the cursor
		// you might want to adjust to get the right result
	/* END CONFIG */
	$("img.tooltip").hover(function(e){
		this.t = this.title;
		this.title = "";
		$("body").append("<p id='tooltip'>"+ this.t +"</p>");
		$("#tooltip")
			.css("top",(e.pageY - xOffset) + "px")
			.css("left",(e.pageX + yOffset) + "px")
			.fadeIn("fast");
    },
	function(){
		this.title = this.t;
		$("#tooltip").remove();
    });	
	$("a.tooltip").mousemove(function(e){
		$("#tooltip")
			.css("top",(e.pageY - xOffset) + "px")
			.css("left",(e.pageX + yOffset) + "px");
	});
};

function checkEmail(d){
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return filter.test(d);
}

function getRooms () {
	var numElem = $("select[name=room]").size();
	var results = new Array();
	var index = 0;
	for (i = 0; i < numElem; i++) {
		var selectElement = $("select[name=room]").get(i);
		var id = $(selectElement).attr("id");
		var value = $("#" + id).val();
		if (value > 0) {
			results[index] = id + '#' + value;
			index++;
		}
	}
	return results;
}

function getMicrositesRooms () {
	var numElem = $("select[name=microRoom]").size();
	var results = new Array();
	var index = 0;
	for (i = 0; i < numElem; i++) {
		var selectElement = $("select[name=microRoom]").get(i);
		var id = $(selectElement).attr("id");
		var value = $("#" + id).val();
		if (value > 0) {
			results[index] = id + '#' + value;
			index++;
		}
	}
	return results;
}

function updateNumberNights () {
	
	// Arrival Date
	var fromValue = $('#from').val();
	var itFrom = $('#from').val().split("/");
	var dateFrom = new Date(itFrom[2] + "/" + itFrom[1] + "/" + itFrom[0]);
	// Departure Date
	var toValue = $('#to').val();
	var itTo = $('#to').val().split("/");
	var dateTo = new Date(itTo[2] + "/" + itTo[1] + "/" + itTo[0]);
	// If departure date is less than arrival date we set the departure date adding one day (the number of nights is 1).
	// Then update dateTo month if is less than 10.
	$('#to').val(dateTo.format('d/m/Y'));
	
	// Update the number of nights
	var numNights = Math.round((dateTo.getTime() - dateFrom.getTime()) / (24 * 60 * 60 * 1000));
	
	$("#nights").children().remove();
	
	var numNightsAux = numNights;
	
	if (numNights < 10) {
		numNightsAux = 10;
	}
	
	for (i = 1; i <= numNightsAux; i++) {
		$("#nights").append($("<option></option>").
				attr("value", i).
				text(i));
	}
	
	$("#nights").val(numNights);
}

function updateSupplementsPrices (param) {
	// update supplement price
	var init = param.indexOf('**');
	var end = param.lastIndexOf('**');
	var total = param.substring(init + 2, end);
	$('#precioTotal').find("em").html(total + "&euro;");
	
	// update total
	init = param.indexOf('##');
	end = param.lastIndexOf('##');
	var num = param.substring(init + 2, end);
	num = parseFloat(num.replace(',' , '.'));
	num = num.toFixed(2);
	$('#totalSuplOpt').find("strong.total").html(num.replace('.', ',') + "&euro;");
	
	// ------- Pago -------
	total = parseFloat(total.replace(',', '.'));
	var dtoPromo = $('.dtoPromo').html();
	if (dtoPromo != null) {
		dtoPromo = parseFloat(dtoPromo.replace(',', '.'));
	}
	var totalPago = total + dtoPromo;
	totalPago = totalPago.toFixed(2)
	
	// update "subtotal reserva"
	$('.dp_subtotal').html(total.toString().replace('.', ',') + "&euro;");
	// update "total"
	$('.dp_total').html(totalPago.replace('.', ',') + "&euro;");
	// -- pago fracccionado --
	// update 10%
	var trenta = (10 * (total + dtoPromo)) / 100;
	var setenta = (90 * (total + dtoPromo)) / 100;
	trenta = trenta.toFixed(2);
	setenta = setenta.toFixed(2);
	$('.frac_30').html(trenta.replace('.', ',') + "&euro;");
	// update 70%
	$('.frac_70').html(setenta.replace('.', ',')  + "&euro;");
	// update total
	$('.frac_total').html(totalPago.replace('.', ',') + "&euro;");
	// -- pago anticipado --
	$('.anticip').html(totalPago.replace('.', ',') + "&euro;");
}


function updateNumAdultAndChild (param, child, value, oldVal) {		
	var aux = param.toString().split(';'); 
	var habitacion = aux[0].replace('$', '\\$');
	var minCap = aux[1];
	var maxCap = aux[2];
	var maxAdt = aux[3];
	var maxChd = aux[4];
	var adtValue = '';
	var chdValue = '';
	var isMicro = 0;
	
	if (child == '0') { // If we have changed the adult combo.
		adtValue = value;
		$('.ninos').each(function() { // Find the child with the same room id
	    	var thisChild = $(this).attr('name');
	    	if (thisChild.match(habitacion)) {
	    		chdValue = $(this).val();
	    		if (thisChild.indexOf('micro') >= 0) {
	    			isMicro = 1;
	    		}
	    	}
		});
	} else { // Then, we have changed the child combo.
		chdValue = value;	
		$('.adults').each(function() { // Find the adult with the same room id
	    	var thisAdt = $(this).attr('name');
	    	if (thisAdt.match(habitacion)) {
	    		adtValue = $(this).val();
	    		if (thisAdt.indexOf('micro') >= 0) {
	    			isMicro = 1;
	    		}
	    	}
		});
	}
	
	if (parseInt(adtValue) + parseInt(chdValue) > parseInt(maxCap)) {
		if (child == '0') { // the adult has changed
			$('#adult_' + habitacion).val(oldVal);
		} else { // the children has changed
			$('#ninos_' + habitacion).val(oldVal);
		}
		getAlertMessage("hca_js_max_cap", "false");
		return false;
	}
	
	if (parseInt(adtValue) + parseInt(chdValue) < parseInt(minCap)) {
		getAlertMessage("hca_js_num_pax", "false");
		return false;
	}
	
	if (parseInt(adtValue) > parseInt(maxAdt)) {
		getAlertMessage("hca_js_num_adt", "false");
		return false;
	}
	
	var ninos = $('#ninos_' + habitacion).val();
	var bebes = $('#bebe_' + habitacion).val();
	if (bebes == undefined) {
		bebes = '0';
	}
	
	var dest_url = 'func/reCalculatePrices.jsp';
	if (isMicro == 1) {
		dest_url = 'func/reCalculatePricesMicro.jsp';
	} 
	
	$.ajax({
        type: "POST",
        url: dest_url,
        cache: false,
        data: "numAdt=" + adtValue + "&roomId=" + habitacion.replace('\\$', '$') + "&ninos=" + ninos + "&bebes=" + bebes,
        success: function(param) {
       		var init = param.indexOf('**');
       		var end = param.lastIndexOf('**');
       		var num = param.substring(init + 2, end);
       		// simple - availability:
       		$('#price').find("strong").html(num.toString() + "&euro;");
       		// multiple - availability:
       		$('.infoCabecera.multiplePrice').find("h3").html(num + "&euro;");
       		// microsites:
       		$('#price_micro').find("em").html(num.toString() + "&euro;");
       		// price x room in multiple availability:
       		init = param.indexOf('##');
       		end = param.lastIndexOf('##');
       		num = param.substring(init + 2, end);
       		$("#precioRoom_" + habitacion).find("strong").html(num.toString() + "&euro;");
       		// microsites:
       		$('#price_' + habitacion).find("strong").html(num.toString() + " &euro;");
       	}
	});
} 
// -------------------------------------------

function fillHolderInfo (values, scroll) {
	
	// -- Possible error saving reservation --
	if (values[8] != '' && values[8] != undefined) {
		window.location.replace("index.jsp?resError=yes");
		//return !$.fn.colorbox({html:'<h2>Error</h2><p>Ha habido un error al guardar la reserva</p>', open:true});
	}
	
	$('#regUser').css("display", "none");
	$('#cabRegUser').css("display", "none");
	$('#datosTitular').css("display", "block");
	// Scroll
	if (scroll == 'si') {
		var destination = $('#datosTitular').offset().top;
		$("html:not(:animated), body:not(:animated)").animate({ scrollTop: destination-20}, 500 );
	}

	// Change user data link:
	$('#updUserInfo').attr('href', 'reservations.jsp?res=yes&id=' + values[5] + "&cname=" + values[1] + "&csurname=" + values[2] + "&cemail=" + 
			values[3] + "&cphone=" + values[4] + "&cdocument_type=" + values[6] +"&cdocument=" + values[7]);
	
	// Form holder.
	$('[name=cname]').val(values[1]);
	$('[name=csurname]').val(values[2]);
	$('[name=cemail]').val(values[3]);
	$('[name=cphone]').val(values[4]);
	$('[name=cuserId]').val(values[5]);
	$('[name=cdocument_type]').val(values[6]);
	$('[name=cdocument]').val(values[7]);
	
	// List
	$('.dataUser li').contents().each(function(index) {
		// we have 7 elements: tag1: name tag2: surname tag3: email tag4: phone documentType: document
		if (this.nodeName == "#text") {
			// name value: index = 1
			if (index == 1) {
				this.nodeValue = values[1];
			}
			// surname value: index = 3
			if (index == 3) {
				this.nodeValue = values[2];
			}
			// mail value: index = 5
			if (index == 5) {
				this.nodeValue = values[3];
			}
			// phone value: index = 7
			if (index == 7) {
				this.nodeValue = values[4];
			}
			// document value: index = 9
			if (index == 9) {
				this.nodeValue = values[7];
			}
		} else { // document_type is strong
			if (index == 8) {
				this.firstChild.nodeValue = values[6] + ":";
			}
		}
	});
	
	// -- Possible duplicated booking --
	/*
	if (values[9] == 'true') {
		return !$.fn.colorbox({html:'<h2>Warning</h2><p>Está apunto de duplicar la reserva</p>', open:true});
	}
	*/
}

function reLoadUserInfo (name, surname, email, phone, documentType, document, userId) {
	$('#reservationNotLogUser').trigger('click', [name, surname, email, phone, documentType, document, userId]);
}

// -------------------------------
// --- Funciones de validación ---
// -------------------------------

// Comprobamos que sea un número.
function checkNumber (campo) {
	 var RegExPattern = /\d+$/;
	 if ((campo.match(RegExPattern)) && (campo != '')) {
	   	return true;
	 } 
	 return false;
}

// Spain
function checkNif (dni) {
	var numero = dni.substr(0, dni.length - 1);
	var letraNif = dni.substr(dni.length - 1, 1);
	numero = numero % 23;
	letra = 'TRWAGMYFPDXBNJZSQVHLCKET';
	letra = letra.substring(numero, numero + 1);
	if (letra != letraNif.toUpperCase()) { 
		return false;
	} 
	return true;
}

// Spain
function checkPhoneNumber (campo) {
    var RegExPattern = /^[0-9]{2,3}-? ?[0-9]{6,7}$/;
    if ((campo.match(RegExPattern)) && (campo != '')) {
    	return true;
	}
	return false;
}

/* 	Número tarjeta de crédito como Amex, Visa, MasterCard, Discover */
function checkCreditCardNumber (campo) {
	var RegExPattern = /^((67\d{2})|(4\d{3})|(5[1-5]\d{2})|(6011))(-?\s?\d{4}){3}|(3[4,7])\ d{2}-?\s?\d{6}-?\s?\d{5}$/;
    if ((campo.match(RegExPattern)) && (campo != '')) {
    	return true;
	} 
	return false;
}

// Spain
function checkPostalCode (campo) {
	var RegExPattern = /^([1-9]{2}|[0-9][1-9]|[1-9][0-9])[0-9]{3}$/;
    if ((campo.match(RegExPattern)) && (campo != '')) {
    	return true;
    }
    return false;
}


/*
Contraseña segura (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$ 
(Entre 8 y 10 caracteres, por lo menos un digito y un alfanumérico, y no puede contener caracteres espaciales)
*/
/*
function checkPassword (campo) { 
    var RegExPattern = /(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,10})$/;
    if (!((campo.match(RegExPattern)) && (campo != ''))) {
    	return false;
    } 
}
*/

// En este caso la contraseña tendrá entre 6 y 15 carácteres.
function checkPassword (str){
	var pass_re = /^[a-z\d]{6,15}$/i;
	var pass_fake = /^[*]{7}$/i;
	if (pass_re.test(str)) {
		return true;
	} else if (pass_fake.test(str)){
		return true;
	}
	return false;
}

function getAlertMessage (tag, isMessage) {
	$.ajax({
        type: "post",
        url: "func/getText.jsp",
        cache: false,
        context: document.body,
        data: "tag=" + tag + "&msg=" + isMessage,
        success: function(param) {
			return !$.fn.colorbox({html:'<h2>Error</h2><p>' + param + '</p>', open:true});	
       	}
	});
}

function getAlertMessageAndGoPage (tag, page, isMessage) {
	$.ajax({
        type: "post",
        url: "func/getText.jsp",
        cache: false,
        context: document.body,
        data: "tag=" + tag + "&msg=" + isMessage,
        success: function(param) {
			return !$.fn.colorbox({html:'<h2>Error</h2><p>' + param + '</p>', open:true, onClosed:function(){
				parent.$.fn.colorbox.close();
				parent.location = page; // Redirect to index
			}});	
       	}
	});
}

function getAlertMsgAndGoHome (tag, isMessage) {
	$.ajax({
        type: "post",
        url: "func/getText.jsp",
        cache: false,
        context: document.body,
        data: "tag=" + tag + "&msg=" + isMessage,
        success: function(param) {
			return !$.fn.colorbox({html:'<h2>Error</h2><p>' + param + '</p>', open:true, onClosed:function(){
				window.location.replace("index.jsp"); // Redirect to index
			}});	
       	}
	});
}

function incDate (sFec0) {
	var nDia = sFec0.getDate();//parseInt(sFec0.substr(0, 2), 10);
	var nMes = sFec0.getMonth(); //parseInt(sFec0.substr(3, 2), 10);
	var nAno = sFec0.getFullYear(); //parseInt(sFec0.substr(6, 4), 10);
	nDia += 1;
	if (nDia > finMes(nMes, nAno)) {
		nDia = 1;
		nMes += 1;
		if (nMes == 13) {
			nMes = 1;
			nAno += 1;
		}
	}
	return new Date(nAno, nMes, nDia);
}

function decDate(sFec0){
	/*var nDia = Number(sFec0.substr(0, 2));
	var nMes = Number(sFec0.substr(3, 2));
	var nAno = Number(sFec0.substr(6, 4));*/
	var nDia = sFec0.getDate();
	var nMes = sFec0.getMonth();
	var nAno = sFec0.getFullYear();
	nDia -= 1;
	if (nDia == 0) {
		nMes -= 1;
		if (nMes == 0) {
			nMes = 12;
			nAno -= 1;
		}
		nDia = finMes(nMes, nAno);
	}
	return new Date(nAno, nMes, nDia);
}

function finMes (nMes, nAno) {
	var aFinMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	return aFinMes[nMes] + (((nMes == 1) && (nAno % 4) == 0)? 1: 0);
}

function createBookmarkLink (url, title) {
	if (window.sidebar) { // Mozilla Firefox Bookmark
		window.sidebar.addPanel(title, url,"");
	} else if( window.external ) { // IE Favorite
		window.external.AddFavorite(url, title); 
	}
	else if (window.opera && window.print) { // Opera Hotlist
		return true; 
	}
}

function addToDelicious () {
	window.open('http://www.delicious.com/save?v=5&noui&jump=close&url=' +
			encodeURIComponent(location.href) + '&title=' + encodeURIComponent(document.title), 'delicious','toolbar=no,width=600,height=600'); 
	return false;
}
