/*efectos Jquery para Hoteles Catalonia*/

/////////////////// IDIOMA /////////////////////
$(document).ready( function() {
	$("li.idioma>a").toggle( function() {
		$("ul.block_idiomas").slideDown("fast");
	}, function() {
		$("ul.block_idiomas").slideUp("fast");
	});

// LOGIN
		$("div.login>a").click( function() {
			$("#panelLogin").slideDown("fast");
			return false;
		});
		$("#panelLogin").mouseout(
				function() {
					this.temporizador = setTimeout(
							'$("#panelLogin").slideUp("fast");', 2000);
				}).mousemove( function() {
			clearTimeout(this.temporizador);
		});

	});

// DESPLEGABLES MULTIFUNCION
function asignPanelEvents(container) {
	// when container is passed as a parameter, the function will only assign
	// events depending on container:
	// if container is a DOM element, inside that DOM element
	// if container is a string, inside the element(s) matching the jQuery
	// selector
	//alert("asignPanelEvents");
	var $c = container ? $(container) : $('html');
	var $show = $c.find('a,button').filter('.showPanel'),
		$panel = $c.find('.panel');
	$show.each( function(index) {
		var $this = $(this);
		var $thisPanel = $panel.eq(index);
		var $hide = $this.siblings('.hidePanel').add(
				$thisPanel.find('a,button').filter('.hidePanel'));
		if ($thisPanel.hasClass('active')) {
			if ($hide.length) $this.hide();
			$thisPanel.show();
			$hide.show();
		} else {
			$this.show();
			$thisPanel.hide();
			$hide.hide();
		}
		
		$this.unbind('click');
		$this.click( function() {
			//var reducePanel = true;
			if ('div' == $panel.get(index).tagName.toLowerCase()) {
				//if( this.className.toLowerCase() == "showpanel" && $(this).is(':visible') ){
			//		if( $thisPanel.parent().hasClass( 'masOpcionesBusqueda' ) ){
			//			$thisPanel.parent().parent().parent().height(310);
			//		}
			//		reducePanel = false;
			//	} else if( this.className.toLowerCase() == "showpanel" && !$(this).is(':visible')){
			//		 if( $thisPanel.parent().hasClass( 'masOpcionesBusqueda' ) ){
			//			reducePanel = true;
			//		}
			//	} 
				$thisPanel.slideToggle('fast');
				//$thisPanel.show();
				$('#busFic').toggleClass('buscador_ficha_extended');
			} else if ($thisPanel.is(':visible')) {
				$thisPanel.fadeOut('fast');
//				$('.buscador_ficha').style('height','300px');
			} else {
				$thisPanel.fadeIn('fast');
//				$('.buscador_ficha').style('height','230px');
			}
			if ($hide.length) {
				$this.toggle();
				$hide.toggle();
				//$this.hide();
				//$hide.hide();				
			 //	if( reducePanel ){
                          //      	$thisPanel.parent().parent().parent().height(230);
                           //     }	
			}
			return false;
		});
		
		$hide.unbind('click');		
		$hide.click( function() {
			$this.click();
			return false;
		});
	});
}
$( function() {
	asignPanelEvents()
});
/*
 * .......................................................................... ::
 * Arreglo de PNG's pasado a filter:progid:... para elementos puntuales ::
 * ..........................................................................
 */
$( function() {
	if (!($.browser.msie && $.browser.version < 7))
		return; // SOLO PARA IE6!!!
	var transparenciasIE = {
		'#principal_reserva h2' :'crop'
	};
	for (elem in transparenciasIE) {
		$(elem).each(function() {
			var ruta, $this = $(this);
			ruta = $this.css('backgroundImage').replace('url(','').replace(')', '');
			$this.get(0).style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src='
					+ ruta
					+ ',sizingMethod='
					+ transparenciasIE[elem] + ')';
			$this.css('backgroundImage', 'none');
		});
	}
});

// CALENDARIO
String.prototype.toDate = function(f, modDia, modMes) {
	var f     = f || 'dd/mm/yyyy';
    var modDia= modDia || 0;
    var modMes= modMes || 0;
    var anyo  = this.substring(f.indexOf('y'), f.lastIndexOf('y') + 1);
    var mes   = parseInt(this.substring(f.indexOf('m'), f.lastIndexOf('m') + 1), 10) + modMes;
    var dia   = parseInt(this.substring(f.indexOf('d'), f.lastIndexOf('d') + 1), 10) + modDia;
    var fecha = new Date(anyo, mes-1, dia);
    return fecha;
}
Date.prototype.ddmmyyyy = function() {
	var dia = this.getDate()  < 10 ? '0'+this.getDate()  : this.getDate();
	var mes = (this.getMonth()+1) < 10 ? '0'+(this.getMonth()+1) : this.getMonth()+1;
	var fecha = [dia,'/',mes,'/',this.getFullYear()].join('');
	return fecha;
}

$.datepicker.setDefaults( {
	yearRange :'-1:+2',
	changeFirstDay :false,
	minDate :'+0',
	showOn :'both',
	buttonImage :'img/calendar_icon.gif'
});
$( function() {
	var $label = $('label').filter('.fechallegada, .fechasalida');
	$label.filter('.fechallegada').find('input').each( function() {
		$(this).datepicker({
			onClose:function(fecha){
				var $llegada = $(this);
				var $salida  = $llegada.parents('.fechas:first').find('label.fechasalida').find('input')
				$salida.datepicker('option','minDate',fecha.toDate('',1));
			}
		});
	});
	$label.filter('.fechasalida').find('input').each( function() {
		$(this).datepicker({
			onClose:function(fecha){
				var $salida  = $(this);
				var $llegada = $salida.parents('.fechas:first').find('label.fechallegada').find('input')
				$llegada.datepicker('option','maxDate',fecha.toDate('',-1));
			}
		});
	});
});

// DESGLOSE

$(document).ready( function() {
	$("a.ver_desglose").toggle( function() {
		$("div.desglose").show("fast");
	}, function() {
		$("div.desglose").hide("fast");
	});
});

var tab;
var rtSelected = 0;
var rtBIASelected = 0;

// Pseudo pestanyas
$(function(){
	var $multiLayer=$('div.multiLayer');
	$multiLayer.each(function(){
		var $multiLayer= $(this);
		var $links = $multiLayer.find('ul.selectLayer:first a');
		var $layers = $multiLayer.find('.layer:first').parent().children('.layer'); // layers can be anything in the DOM, this is a bit slower but pays off with flexibility
		// checking that only one link has class="actual"
		if ($links.filter('.actual').length!=1){
			$links.removeClass('actual').eq(0).addClass('actual');
		}
		$links.each(function(index){
			var $t=$(this);
			if ($t.hasClass('actual')){
				$layers.eq(index).show();
			} else {
				$layers.eq(index).hide();
			}
			$t.click(function(){
				if ($t.hasClass('actual')) return false;
				$links.removeClass('actual').eq(index).addClass('actual');
				$layers.slideUp('slow').eq(index).slideDown('slow');
				tab = $t;

				if(stay){
					// refreshTotalPrice($t);
					if(stay.rooms.length == 1){
						if(tab[0].parentNode.id =="normalTab"){
							updateTotals('',rtSelected);
							
							
						}else{
							updateTotals('',rtBIASelected);
						} 
						
					}
					else{
						if(tab[0].parentNode.id =="normalTab"){
							updateTotalsMultiChangeTab('');
						}else{
							updateTotalsMultiChangeTab('BIA');
						} 
					}
				}
				return false;
			});
		});
	});
	
});


function refreshTotalPrice(t){
	tab=t;
	if(t[0].parentNode.id =="normalTab"){
		data = stay;
	}else{
		data = stayBIA;
	}
	$('#total').html(data.rooms[0].typebyday[data.rooms[0].roomTypeSelected].mealplans[data.rooms[0].mealPlanSelected].mealPlanTotal + ' ' + data.currency );
    $('#stayprice').val(data.rooms[0].typebyday[data.rooms[0].roomTypeSelected].mealplans[data.rooms[0].mealPlanSelected].mealPlanTotal);
}

function updateTotals(valueOffer,roomTypeIndex){

// recorremos los radios para saber cual es la opcion de tipo de hab elegida
var roomTypeRG;
if(tab!=null){
	if(tab[0].parentNode.id=="normalTab"){
		roomTypeRG = document.mainForm.room1Type;
		stayOptionsData = stay;
	}else{
		roomTypeRG = document.mainForm.room1TypeBIA;
		stayOptionsData = stayBIA;
	}
}else{
	roomTypeRG = document.mainForm.room1Type;
	stayOptionsData = stay;
}

var total = "";

if( stayOptionsData != null ){
	var roomTypeCode = stayOptionsData.rooms[0].typebyday[roomTypeIndex].roomTypeCode;
	var mealPlansRG;
	if(tab!=null){
		if(tab[0].parentNode.id=="normalTab"){
			mealPlansRG = document.mainForm["room1mealPlan"+roomTypeCode];
		}else{
			mealPlansRG = document.mainForm["room1mealPlan"+roomTypeCode+"BIA"];
		}
	}else{
		mealPlansRG = document.mainForm["room1mealPlan"+roomTypeCode];
	}
	if( mealPlansRG.tagName=="INPUT" ){
		total = stayOptionsData.rooms[0].typebyday[roomTypeIndex].mealplans[0].mealPlanTotal;
		//sum = mealPlansByRoomType[roomTypeIndex][0];
	}else{
		for(i=0; i < mealPlansRG.length; i++){
		    if (mealPlansRG[i].checked == true) {
		        var radioValue = mealPlansRG[i].value;
		        //alert( radioValue + " - " + roomTypes[i] );
		        roomType = radioValue;
		        //sum = mealPlansByRoomType[roomTypeIndex][i];
		        var mealPlan = stayOptionsData.rooms[0].typebyday[roomTypeIndex].mealplans[i];
				if(valueOffer!=""){
					total = valueOffer;
				}else{
			        total = stayOptionsData.rooms[0].typebyday[roomTypeIndex].mealplans[i].mealPlanTotal;
				}
		        $('div.stayOptions img').attr({src : stayOptionsData.rooms[0].typebyday[roomTypeIndex].mealplans[i].image});
		        $('div.stayOptions img').attr({alt : stayOptionsData.rooms[0].typebyday[roomTypeIndex].mealplans[i].image_alt});
		        break;
		    }
		}
	}
	$('#total').html( total + ' ' + stayOptionsData.currency );
	$('#stayprice').val(total);
	//$('#total').html( sum + ' &euro;' );
	//$('#stayprice').val(sum)
}
}

function updateTotalsMulti(valueOffer, k, roomTypeIndex){

// recorremos los radios para saber cual es la opcion de tipo de hab elegida
var roomTypeRG;
var sufix;
if(tab!=null){
	if(tab[0].parentNode.id=="normalTab"){
		roomTypeRG = document.mainForm.room1Type;
		stayOptionsData = stay;
		sufix='';
	}else{
		roomTypeRG = document.mainForm.room1TypeBIA;
		stayOptionsData = stayBIA;
		sufix='BIA';
	}
}else{
	stayOptionsData = stay;
	sufix='';
}

var total = 0;

if( stayOptionsData != null ){
	
	roomTypeRG = document.mainForm.elements["room" + k + "Type"];
	var roomTypeCode = stayOptionsData.rooms[k-1].typebyday[roomTypeIndex].roomTypeCode;	
	var mealPlansRG;
	if(tab!=null){
		if(tab[0].parentNode.id=="normalTab"){
			mealPlansRG = document.mainForm["room" + k + "mealPlan"+roomTypeCode];
		}else{
			mealPlansRG = document.mainForm["room" + k + "mealPlan"+roomTypeCode+"BIA"];
		}
	}else{
		mealPlansRG = document.mainForm["room" + k + "mealPlan"+roomTypeCode];
	}
	if( mealPlansRG.tagName=="INPUT" ){
		total += parseFloat(stayOptionsData.rooms[k-1].typebyday[roomTypeIndex].mealplans[0].mealPlanTotal.replace("," , "."));
		$('#total'+k+sufix).html( stayOptionsData.rooms[k-1].typebyday[roomTypeIndex].mealplans[0].mealPlanTotal + ' ' + stayOptionsData.currency );
		//sum = mealPlansByRoomType[roomTypeIndex][0];
	}else{
		for(i=0; i < mealPlansRG.length; i++){
		    if (mealPlansRG[i].checked == true) {
		        var radioValue = mealPlansRG[i].value;
		        //alert( radioValue + " - " + roomTypes[i] );
		        roomType = radioValue;
		        //sum = mealPlansByRoomType[roomTypeIndex][i];
		        if(valueOffer!=""){
					 $('#total'+k+sufix).html( valueOffer + ' ' + stayOptionsData.currency );
				        //total += parseFloat(valueOffer.replace("," , "."));
				}else{
					 $('#total'+k+sufix).html( stayOptionsData.rooms[k-1].typebyday[roomTypeIndex].mealplans[i].mealPlanTotal + ' ' + stayOptionsData.currency );
				        //total += parseFloat(stayOptionsData.rooms[k-1].typebyday[roomTypeIndex].mealplans[i].mealPlanTotal.replace("," , "."));
				}
		        $('#stayOptions'+k+sufix+' img').attr({src : stayOptionsData.rooms[k-1].typebyday[roomTypeIndex].mealplans[i].image});
		        $('#stayOptions'+k+sufix+' img').attr({alt : stayOptionsData.rooms[k-1].typebyday[roomTypeIndex].mealplans[i].image_alt});
		        break;
		    }
		}			
	}
	updateTotalsMultiChangeTab(sufix);
	
	/*	
			for(m=1;m<stayOptionsData.rooms.length+1;m++){
				total += parseFloat($('#total'+m+sufix).html().replace("," , "."));
			}
			
			//$('#total').html( sum + ' &euro;' );
			//$('#stayprice').val(sum)
			total = total.toFixed(2);
			total = total.replace("." , ",");
			$('#total').html( total + ' ' + stayOptionsData.currency );
			$('#stayprice').val(total);
	*/
}
}

function updateTotalsMultiChangeTab(tabType){
	var stopt = null;
	if(tabType == 'BIA'){
		stopt = stayBIA;
	}else{
		stopt = stay;
	}
	var total = 0;
	for(i=1; i <= stopt.rooms.length;i++){
		total += parseFloat($('#total'+i+tabType).html().replace("," , "."));
		//alert(total);
	}
	total = total.toFixed(2);
	total = total.replace("." , ",");
	$('#total').html( total + ' ' + stayOptionsData.currency );
	$('#stayprice').val(total);
}


function getOffers(urlBase,stays,idHotel,numHab,BIA){
	var showOffer = false;
	var room = 0;
	var day = 0;
	var mealPlan = 0;
	var numOffer = 0;

	while(showOffer==false){
		var idOffer = "";
		var flag = false;
		for(j=day;j<stays.rooms[numHab].typebyday.length;j++){
			if(idOffer!=""){
				break;
			}else{
				for(x=mealPlan;x<stays.rooms[numHab].typebyday[j].mealplans.length;x++){
					if(idOffer!=""){
						break;
					}else{
						for(n=numOffer;n<stays.rooms[numHab].typebyday[j].mealplans[x].promotionCode.length;n++){
							var offer = stays.rooms[numHab].typebyday[j].mealplans[x].promotionCode[n];
							if(offer!=null && offer!="" && offer!=undefined){
								idOffer = offer;
								if (n+1>=stays.rooms[numHab].typebyday[j].mealplans[x].promotionCode.length){
									numOffer = 0;
									flag = true;
								}else{
									numOffer = n + 1;
									flag = false;
								}
								if(flag==true){
									if(x+1>=stays.rooms[numHab].typebyday[j].mealplans.length){
										mealPlan = 0;
									}else{
										mealPlan = x + 1;
										flag = false;
									}
								}else{
									mealPlan = x;
								}
								if(flag==true){
									if(j+1>=stays.rooms[numHab].typebyday.length){
										showOffer = true;
									}else{
										day = j + 1;
										flag = false;
									}
								}else{
									day = j;
								}
								break;
							}
						}
					}
				}
			}
		}
		
		if((idOffer!=null && idOffer!="" && idOffer!="undefined")){			
			var parametros = {
					action			:"findOffer",
					codeOffer		: idOffer,
					hotel			: idHotel
				};
						
				$.ajaxSetup({cache: false, async:false});
				$.getJSON(
						urlBase + '/InformationHandler',
						parametros,
						function(data){
							if (data[0]!=undefined && data[0]!=null && data[0].bannerTitle!=""){
								$('#offer'+BIA+'_'+numHab).css('display','');
								$('#titleOffer'+BIA+'_'+numHab).html(data[0].bannerTitle);
								$('#descOffer'+BIA+'_'+numHab).html(data[0].bannerDescription);
//								$('#descriptionOffer'+BIA+'_'+numHab).html(data[0].description);
								$('#titleOffer'+BIA+'_'+numHab).attr("href",data[0].link);
								showOffer=true;
							}else{
								$('#offer'+BIA+'_'+numHab).css('display','none');
							}
						}		
					);
		}else{
			$('#offer'+BIA+'_'+numHab).css('display','none');
			showOffer=true;
		}
	}
}
function isArray(obj) {
	   if (obj.constructor.toString().indexOf("Array") == -1)
	      return false;
	   else
	      return true;
	}

function getInfoOffer(urlBase,data){
	var idHotel = data.DisponJson.hotelData.backCode;
	var showOffer = false;
	var estancia = 0;
	var codeOffer = 0;
	while(showOffer==false){
		var idOffer = "";
		var flag = false;
		if(data.DisponJson.roomModelList.EstanciaHabJson!=undefined){
			if(data.DisponJson.roomModelList.EstanciaHabJson.length == undefined){
				if(idOffer==""){
					var detalle = data.DisponJson.roomModelList.EstanciaHabJson;
					if(detalle.promotionCode.string!=null && detalle.promotionCode.string!=undefined && detalle.promotionCode.string!=""){
						if(isArray(detalle.promotionCode.string)==false){
							var offer = detalle.promotionCode.string;
							if(offer!=null && offer!="" && offer!=undefined){
								idOffer = offer;
								showOffer = true;
							}
						}else{
							for(j=codeOffer;j<detalle.promotionCode.string.length;j++){
								var offer = detalle.promotionCode.string[j];
								if(offer!=null && offer!="" && offer!=undefined){
									idOffer = offer;
									if (j+1>=detalle.promotionCode.string.length){
										showOffer = true;
									}else{
										codeOffer = j + 1;
									}
									break;
								}
							}
						}
					}
				}
			}else{
				for(var i=estancia; i < data.DisponJson.roomModelList.EstanciaHabJson.length; i++){
					var detalle = data.DisponJson.roomModelList.EstanciaHabJson[i];
					if(idOffer!=""){
						break;
					}else{
						if(detalle.promotionCode.string!=null && detalle.promotionCode.string!=undefined && detalle.promotionCode.string!=""){
							if(isArray(detalle.promotionCode.string)==false){
								var offer = detalle.promotionCode.string;
								if(offer!=null && offer!="" && offer!=undefined){
									idOffer = offer;
									if(i+1>=data.DisponJson.roomModelList.EstanciaHabJson.length){
										showOffer = true;
									}else{
										estancia = i + 1;
									}
								}
							}else{
								for(j=codeOffer;j<detalle.promotionCode.string.length;j++){
									var offer = detalle.promotionCode.string[j];
									if(offer!=null && offer!="" && offer!=undefined){
										idOffer = offer;
										if (j+1>=detalle.promotionCode.string.length){
											codeOffer = 0;
											flag = true;
										}else{
											codeOffer = j + 1;
											flag = false;
										}
										if(flag==true){
											if(i+1>=data.DisponJson.roomModelList.EstanciaHabJson.length){
												showOffer = true;
											}else{
												estancia = i + 1;
												flag = false;
											}
										}else{
											estancia = i;
										}
										break;
									}
								}
							}
						}
					}
				}
			}
		}
	
		if((idOffer!=null && idOffer!="" && idOffer!="undefined")){			
			var parametros = {
					action			:"findOffer",
					codeOffer		: idOffer,
					hotel			: idHotel
				};
						
				$.ajaxSetup({cache: false, async:false});
				$.getJSON(
						urlBase + '/InformationHandler',
						parametros,
						function(data){
							if (data[0]!=undefined && data[0]!=null && data[0].bannerTitle!=""){
								$('#descOffer_'+idHotel).css('display','');
								$('#titleOffer_'+idHotel).html(data[0].bannerTitle);
								$('#titleOffer_'+idHotel).attr("href",data[0].link);
								showOffer=true;
							}else{
								$('#descOffer_'+idHotel).css('display','none');
							}
						}		
					);
		}else{
			$('#descOffer_'+idHotel).css('display','none');
			showOffer=true;
		}
	}
}

function getInfoOfferByCode(urlBase,idOffers, idHotel){
	if(idOffers!="" && idHotel!=""){
		var idOffer = idOffers.split(",");
		var showOffer = false;
		for(x=0;x<idOffer.length;x++){
			if(showOffer==true){
				break;
			}
			var parametros = {
					action			:"findOffer",
					codeOffer		: idOffer[x],
					hotel			: idHotel
				};
							
				$.ajaxSetup({cache: false, async:false});
				$.getJSON(
					urlBase + '/InformationHandler',
					parametros,
					function(data){
						if (data[0]!=undefined && data[0]!=null && data[0].bannerTitle!=""){
							$('#descOffer_'+idHotel).css('display','');
							$('#titleOffer_'+idHotel).html(data[0].bannerTitle);
							$('#titleOffer_'+idHotel).attr("href",data[0].link);
							showOffer=true;
						}else{
							$('#descOffer_'+idHotel).css('display','none');
						}
					}		
				);
		}
	}
}

// Galerias de imagenes
$(function(){
	
	$('div.flechas_carrusel a').click(function(){
		// en primer lugar calculamos las variables necesarias para la animacion
		// se tiene que hacer en este momento porque de estar las capas ocultas
		// no podemos obtener ni el offset ni la anchura de los elementos contenidos
		var desplaz, destino;
		var $t=$(this);
		var $carru = $t.parents('.flechas_carrusel').siblings('.contenedor_carrusel');
		var carru  = $carru.get(0);
		$ul    = $carru.find('ul');
		var $li    = $carru.find('li');
		
		if ($ul.is(':animated')) return false;
		
		if (!carru.difLi) {
			carru.difLi = $li.eq(1).offset().left-$li.eq(0).offset().left; // separacion entre inicios de cada li
			$ul.width(carru.difLi * ($li.length - 1) + $li.eq(0).width() + 'px'); // forzamos la anchura de la lista
			carru.limiteIzq = 0;
			carru.limiteDer = $carru.width()-$ul.width();
		}
		desplaz = carru.difLi * 3;
		if ($t.hasClass('forceRight')) desplaz= (-desplaz);
		
		destino = desplaz + parseInt($ul.css('margin-left'));
		if (destino<carru.limiteDer) {
			destino=carru.limiteDer;
		} else if (destino>carru.limiteIzq) {
			destino=carru.limiteIzq;
		}
		$ul.animate({marginLeft:destino+'px'},400)
		return false;
	});
	
	// mostrar imagen al hacer click
	$('div.contenedor_carrusel').find('a').click(function(){
		$(this).parents('.galeria_fotos').find('div.foto_ampliada img').attr('src',this.href);
		return false;
	});
});


// ANIMACIoN HOME
var rutaBanners = '/img/';
var autoBanner;
$( function() {
	// definimos el contenedor y ambos listados
	var $c = $('#flash_fotos');
	var $banners = $c.find('ul:first li');
	var $botones = $c.find('ul:last li');
	$botones.each( function(indice) {
		var $this = $(this);
		$this.click( function() {
			clearTimeout(autoBanner);
			// si el que se ha pinchado esta ya activo paramos
				if ($this.hasClass('activo'))
					return false;
				// paramos la posible animacion del elemento que vamos a mostrar
				// y lo reseteamos para ocultarlo como es debido
				// definimos ambos elementos
				var $mostrar = $banners.eq(indice).stop().css( {
					'left' :'120px',
					'z-index' :5,
					'opacity' :'0',
					'display' :'none'
				});
				var $ocultar = $banners.filter(':visible').css('z-index', 6);
				// mostramos uno por debajo y ocultamos el otro
				$mostrar.show().animate( {
					'opacity' :1,
					'left' :0
				}, 1000);
				$ocultar.animate( {
					'opacity' :0,
					'left' :'-120px'
				}, 1000, function() {
					$ocultar.css('z-index', 4);
				});
				$botones.removeClass('activo');
				$this.addClass('activo');
			});
	});
	autoBanner = setTimeout(rotarBanners, 7000);
});

function rotarBanners() {
	var $a = $('#flash_fotos').find('ul:last li.activo');
	$a = $a.next().length ? $a.next() : $('#flash_fotos').find(
			'ul:last li:first');
	$a.click();
	autoBanner = setTimeout(rotarBanners, 6000)
}

// Anyadir clases automaticamente a los listados y a las tablas, para facilitar
// la integracion
// Si se llama sin argumentos reasigna las clases a todos los elementos LI y TR
// De otro modo, se puede pasar un elemento del DOM, un objeto de JQuery o una
// cadena de busqueda de CSS
function clasesListados(o) {
	var $o = o ? $(o) : $('li,tr');
	$o.removeClass('first last odd even');
	$o.filter(':first-child').addClass('first');
	$o.filter(':last-child').addClass('last');
	$o.filter(':nth-child(odd)').addClass('odd');
	$o.filter(':nth-child(even)').addClass('even');
}
// Columnado automatico de listas (comentario acerca de argumentos identico que el anterior)
function splitInTwo(o){
	var $o = o ? $(o) : $('ul,ol').filter('.splitInTwo');
	$o.each(function(){
		var $t=$(this)
		var $li = $t.children(); // mas vale que la lista este bien construida o este selector devolvera elementos que no son LI
		var mitad = Math.floor($li.length/2);
		$t.after('<'+this.tagName+'></'+this.tagName+'>'); // creamos una lista paralela a la primera
		$li.filter(':gt('+mitad+')').clone().appendTo($t.next()) // le insertamos los <LI> pertinentes
		$li.filter(':gt('+mitad+')').remove(); // y volvemos a ellos en la lista original y nos los fundimos
	});
}
// Llamamos por primera vez a estas funcione al iniciar el DOM
$( function() {
	clasesListados();
	splitInTwo();
});


// Crear tablas autodeslizadoras del amor
function tablaDiasReserva(){
	//alert("tablaDiasReserva");
	var CPP = 5; // celdas por pagina
	var anchura = 90;
	// anchura de cada celda, tomarla dinamicamente de la renderizada provoca incoherencias entre navegadores y tomarla directamente de la hoja de estilos nos limita a buscar una tabla en concreto
	// seria conveniente acordar una forma de hacer este parametro mas flexible para poder aplicar este modelo a varias tablas en caso de ser necesario (a discutir)
	$('table.diasReserva').each(function(){
		var $tabla = $(this);
		var $filas = $tabla.find('tr:has(.singleDay)');
		var CT     = $filas.eq(0).find('th.singleDay').length;
		if ($filas.eq(0).find('th.singleDay').length <= CPP) return; // solo seguimos si hay mas celdas que CPP
		
		// en primer lugar creamos la estructura de HTML adecuada en el interior de cada fila
		$filas.each(function(){
			var $celdas = $(this).find('.singleDay');
			var $clon   = '';
			$celdas.each(function() {
				$clon+='<li style="width:'+anchura+'px">'+this.innerHTML+'</li>';
			});
			$celdas.filter(':gt(0)').remove() // eliminamos todas las celdas menos una, que usamos de contenedor para lo siguiente -->
				.end().width(anchura*CPP).html('<div class="contenedorClon"><ul class="tablaClonada"></ul></div>').children('div').css({ // insertamos un DIV y una tabla vacia, los seleccionamos y forzamos la anchura
					'width':anchura*CPP+'px', // forzamos la anchura y el overflow del DIV, de paso se fuerza la celda que contiene a este mismo DIV
					'overflow':'hidden'
				});
			$celdas.find('ul').width(anchura*CT).append($clon); // insertamos el clon
		});
		
		// creamos los controles de la tabla
		$(this).wrap('<div style="position:relative"></div>')
		$('<div class="controlesDiasReserva"><a class="previo">&laquo;</a><a class="siguiente">&raquo;</a></div>').css({
			left:$filas.find('th.singleDay:first').offset().left-$tabla.offset().left+'px',
			top:$filas.find('th.singleDay:first').offset().top-$tabla.offset().top+'px',
			width:CPP*anchura+'px'
		}).insertAfter(this).find('a').click(function() {
			var $animados = $(this).parent().parent().find('ul.tablaClonada');
			var limIzq    = 0,
				limDer    = (CPP-CT)*anchura,
				desplaz   = anchura * 4,
				destino;
			if ($animados.is(':animated')) return false;
			if ('siguiente'==this.className) desplaz = (-desplaz);
			destino=desplaz+(parseInt($animados.eq(0).css('marginLeft')) || 0 );
			if (destino<limDer) {
				destino=limDer;
			} else if(destino>limIzq) {
				destino=limIzq;
			}
			$animados.animate({marginLeft:destino+'px'},400);
		});
		
	});
}


// llamada al XML de calendarios
var flagCalendarios = 0;
function refrescarCalendario(enlace, sInicio, sFinal) {
	// enlace puede ser o bien un <div class="singleMonth">, con lo cual no hacemos ninguna animacion
	// sino que simplemente mostramos los resultados, o bien uno de los enlaces que controlan el
	// desplazamiento del calendario, en cuyo caso debemos hacer el desplazamiento
	if (flagCalendarios > 0) {return false;}
	flagCalendarios = 2;
	var direccion = $(enlace).hasClass('singleMonth') ? false : ($(enlace).hasClass('previo') ? -1 : ($(enlace).hasClass('siguiente') ? 1 : 0));
	var $div      = $('#calendarios');
	var $conten   = $('#contenedorCalendarios');
	var $meses    = $div.find('div.singleMonth');
	var lang      = $.datepicker._defaults;
	var $newCal   = $div.find('td[title='+ sInicio +']').parents('.singleMonth');
	var desplazamiento;
	// en primer lugar realizamos los calculos necesarios para la animacion y la colocacion del calendario
	if (direccion) {
		if ($meses.length == 1) {
			desplazamiento = parseInt($meses.eq(0).width());
		} else {
			desplazamiento = parseInt($meses.eq(1).css('left'))-parseInt($meses.eq(0).css('left'));
		}
	}
	// comprobamos si es necesario hacer el AJAX o si al contrario el elemento ya existe y solo basta con realizar la animacion
	if ($newCal.length == 0 || direccion == false) {
		var parametros = {
		startDate   :sInicio,
		finishDate  :sFinal,
		idHotel     :$('#hotel').val(),
		roomTypeCode:$('#roomtype').val(),
		numPax1     :$('#adults').val(),
		numPax2     :$('#numPax2').val(),
		numPax3     :$('#kids').val(),
		numPax4     :$('#babies').val(),
		path		:$('#path').val()
		}
	
		// empezamos la llamada en AJAX
		$.ajax({
			//url:'ajax/calendarioDisponibilidad.xml',
			url:parametros.path+'/ProcesoReserva/ReservationHandler?hotel='+parametros.idHotel+'&startdate='+parametros.startDate+'&finishdate='+parametros.finishDate+'&rooms=1&roomtype='+parametros.roomTypeCode+'&adults='+parametros.numPax1+'&kids='+parametros.numPax3+'&babies='+parametros.numPax4+'&action=calendar',
			data:parametros,
			complete:function(respuesta){
				// definimos variables
				var calendario = $(respuesta.responseXML).find('calendar');
				var sTemp, diaTemp; // variables temporales para iteracion
				var mes={};
				if(calendario.size()!=0){
					mes.actual = {
						inicio:calendario.attr('startdate').toDate(),
						fin   :calendario.attr('finishdate').toDate()
					}
					
					// definimos el HTML a construir
					$newCal = $(['<div class="singleMonth"><p>',lang.monthNames[mes.actual.inicio.getMonth()].toLowerCase(),' ',mes.actual.inicio.getFullYear(),'</p><table border="0" cellpadding="0" cellspacing="3"><thead><th scope="col">',lang.dayNamesMin[1],'</th><th scope="col">',lang.dayNamesMin[2],'</th><th scope="col">',lang.dayNamesMin[3],'</th><th scope="col">',lang.dayNamesMin[4],'</th><th scope="col">',lang.dayNamesMin[5],'</th><th scope="col">',lang.dayNamesMin[6],'</th><th scope="col">',lang.dayNamesMin[0],'</th></thead><tbody></tbody></table></div>'].join(''));
					
					//legamos al primer lunes hacia atras para preparar la iteracion,
					// iteramos por semanas hasta que lleguemos al ultimo de los dias
					// e incrustamos en el HTML creado anteriormente
					var diaIterar = calendario.attr('startdate').toDate('',-(parseInt(mes.actual.inicio.getDay() || 7) - 1));
					if(direccion!=0){
					while(diaIterar <= mes.actual.fin) {
						sTemp    = '<tr>';
						for (var i=0,l=7;i<l;++i){
							diaTemp = calendario.find('day[date='+diaIterar.ddmmyyyy()+']');
							// si no esta en el intervalo de inicio y fin del mes actual no le pintamos nada en el interior de la celda
							if (mes.actual.inicio<=diaIterar && diaIterar<=mes.actual.fin){
								if(diaTemp.text()=='X'){
									sTemp+='<td style="background-color:'+diaTemp.attr('backcolor')+';color:'+diaTemp.attr('color')+'" title="'+diaIterar.ddmmyyyy()+'">';
									sTemp+=diaIterar.getDate() + '<br/>' + diaTemp.text();
									sTemp+='</td>';
								}else{
									sTemp+='<td style="background-color:'+diaTemp.attr('backcolor')+';color:'+diaTemp.attr('color')+'" title="'+diaIterar.ddmmyyyy()+'">';
									sTemp+=diaIterar.getDate() + '<br/><span>' + diaTemp.text() + '&nbsp;' + calendario.attr('currency') + '</span>';
									sTemp+='</td>';
								}
							} else {
								sTemp+='<td>&nbsp;</td>'
							}
							diaIterar = diaIterar.ddmmyyyy().toDate('',1);
						}
						sTemp+= '</tr>';
						$newCal.find('tbody').append(sTemp);
					}
					}else{
					var Cal1 = $(['<div class="singleMonth" style="left:0px;"><p>',lang.monthNames[mes.actual.inicio.getMonth()].toLowerCase(),' ',mes.actual.inicio.getFullYear(),'</p><table border="0" cellpadding="0" cellspacing="3"><thead><th scope="col">',lang.dayNamesMin[1],'</th><th scope="col">',lang.dayNamesMin[2],'</th><th scope="col">',lang.dayNamesMin[3],'</th><th scope="col">',lang.dayNamesMin[4],'</th><th scope="col">',lang.dayNamesMin[5],'</th><th scope="col">',lang.dayNamesMin[6],'</th><th scope="col">',lang.dayNamesMin[0],'</th></thead><tbody></tbody></table></div>'].join(''));
					var	month = mes.actual.inicio.getMonth() + 1;
					var year = mes.actual.inicio.getFullYear();
					var dd = new Date(year, month, 0);
					var lastDay = dd.getDate();
					
					if(month<10){
						var lastDayDate = lastDay + "/0" + month + "/" + year;
					}else{
						var lastDayDate = lastDay + "/" + month + "/" + year;
					}
					//var lastDate = new Date(year, nextMonth - 1, lastDay);
					mes.actual.fin = lastDayDate.toDate()
					var today = new Date();
					while(diaIterar <= mes.actual.fin) {
						sTemp    = '<tr>';
						for (var i=0,l=7;i<l;++i){
							diaTemp = calendario.find('day[date='+diaIterar.ddmmyyyy()+']');
							// si no esta en el intervalo de inicio y fin del mes actual no le pintamos nada en el interior de la celda
							if (mes.actual.inicio<=diaIterar && diaIterar<=mes.actual.fin){
								if(diaIterar > today.ddmmyyyy().toDate('',-1)){
									if(diaTemp.text()=='X'){
										sTemp+='<td style="background-color:'+diaTemp.attr('backcolor')+';color:'+diaTemp.attr('color')+'" title="'+diaIterar.ddmmyyyy()+'">';
										sTemp+=diaIterar.getDate() + '<br/>' + diaTemp.text();
										sTemp+='</td>';
									}else{
										sTemp+='<td style="background-color:'+diaTemp.attr('backcolor')+';color:'+diaTemp.attr('color')+'" title="'+diaIterar.ddmmyyyy()+'">';
										sTemp+=diaIterar.getDate() + '<br/><span>' + diaTemp.text() + '&nbsp;' + calendario.attr('currency') + '</span>';
										sTemp+='</td>';
									}
								}else{
									sTemp+='<td style="background-color:'+diaTemp.attr('backcolor')+';color:'+diaTemp.attr('color')+'" title="'+diaIterar.ddmmyyyy()+'">';
									sTemp+=diaIterar.getDate() + '<br/><span>&nbsp;</span></td>';
								}
							} else {
								sTemp+='<td>&nbsp;</td>'
							}
							diaIterar = diaIterar.ddmmyyyy().toDate('',1);
						}
						sTemp+= '</tr>';
						Cal1.find('tbody').append(sTemp);
					}
					if(direccion!==false){
						var	nextMonth = mes.actual.inicio.getMonth() + 2 ;
						year = mes.actual.inicio.getFullYear();
						dd = new Date(year, nextMonth, 0);
						lastDay = dd.getDate();
						if(nextMonth<10){
							var lastDayDate = lastDay + "/0" + nextMonth + "/" + year;
							var firstDayDate = "01/0" + nextMonth + "/" + year;
						}else{
							var lastDayDate = lastDay + "/" + nextMonth + "/" + year;
							var firstDayDate = "01/" + nextMonth + "/" + year;
						}
						//var lastDate = new Date(year, nextMonth - 1, lastDay);
						mes.next = {
							inicio:firstDayDate.toDate(),
							fin   :lastDayDate.toDate()
						}
						var Cal2 = $(['<div class="singleMonth" style="left:410px;"><p>',lang.monthNames[mes.next.inicio.getMonth()].toLowerCase(),' ',mes.next.inicio.getFullYear(),'</p><table border="0" cellpadding="0" cellspacing="3"><thead><th scope="col">',lang.dayNamesMin[1],'</th><th scope="col">',lang.dayNamesMin[2],'</th><th scope="col">',lang.dayNamesMin[3],'</th><th scope="col">',lang.dayNamesMin[4],'</th><th scope="col">',lang.dayNamesMin[5],'</th><th scope="col">',lang.dayNamesMin[6],'</th><th scope="col">',lang.dayNamesMin[0],'</th></thead><tbody></tbody></table></div>'].join(''));
						diaIterar = firstDayDate.toDate('',-(parseInt(mes.next.inicio.getDay() || 7) - 1));
						while(diaIterar <= mes.next.fin) {
							sTemp    = '<tr>';
							for (var i=0,l=7;i<l;++i){
								diaTemp = calendario.find('day[date='+diaIterar.ddmmyyyy()+']');
								// si no esta en el intervalo de inicio y fin del mes actual no le pintamos nada en el interior de la celda
								if (mes.next.inicio<=diaIterar && diaIterar<=mes.next.fin){
									if(diaTemp.text()=='X'){
										sTemp+='<td style="background-color:'+diaTemp.attr('backcolor')+';color:'+diaTemp.attr('color')+'" title="'+diaIterar.ddmmyyyy()+'">';
										sTemp+=diaIterar.getDate() + '<br/>' + diaTemp.text();
										sTemp+='</td>';
									}else{
										sTemp+='<td style="background-color:'+diaTemp.attr('backcolor')+';color:'+diaTemp.attr('color')+'" title="'+diaIterar.ddmmyyyy()+'">';
										sTemp+=diaIterar.getDate() + '<br/><span>' + diaTemp.text() + '&nbsp;' + calendario.attr('currency') + '</span>';
										sTemp+='</td>';
									}
								} else {
									sTemp+='<td>&nbsp;</td>'
								}
								diaIterar = diaIterar.ddmmyyyy().toDate('',1);
							}
							sTemp+= '</tr>';
							Cal2.find('tbody').append(sTemp);
						}
					}
					}
					var $contCal1 = $(['<div class="contenedorCalendarios" id="contenedorCalendarios"></div>'].join(''));
					$contCal1.append(Cal1);
					if(direccion!==false){
						$contCal1.append(Cal2);
					}
					//$contCal1 = $(['<div class="contenedorCalendarios" id="contenedorCalendarios"><div id="singleMonth1" class="singleMonth" style="left:0px;"></div><div id="singleMonth2" class="singleMonth" style="left:410px;"></div></div>'].join(''));
					//$contCal1.find('div.singleMonth1').append(Cal1);
					//$contCal1.find('div.singleMonth2').append(Cal2);
					//
					if (direccion==1) {
						$newCal.css('left', parseInt($meses.filter(':last').css('left'))+desplazamiento + 'px')
							.appendTo($conten);
					} else if (direccion==-1) {
						$newCal.css('left', parseInt($meses.eq(0).css('left'))-desplazamiento + 'px')
							.prependTo($conten);
					} else if (direccion==0) {
						$conten.replaceWith($contCal1);
					} else {
						$newCal.css('left', $(enlace).css('left')).replaceAll(enlace);
					}
					flagCalendarios = flagCalendarios === 1 || direccion == 0 ? 0 : 1;
				}
			}
		});
	} else {
		flagCalendarios = 1;
	} 
	// realizamos la animacion
	if (direccion) {
		sTemp = (parseInt($conten.css('left')) || 0) - desplazamiento*direccion + 'px';
		$conten.animate({
			'left': sTemp
		},800, function() {
			flagCalendarios = flagCalendarios === 1 ? 0 : 1;
		});
	}
	// reasignamos los eventos onclick de los controles del calendario
	$div.children('a').each(function() {
		var inicio, fin;
		inicio = this.title.toDate('',0,direccion).ddmmyyyy();
		fin    = this.title.toDate('',-1,1+direccion).ddmmyyyy();
		if(fin.toDate() < new Date){
			this.innerHTML = this.innerHTML.replace('block','none');
		}else{
			this.innerHTML = this.innerHTML.replace('none','block');
		}
		$(this).replaceWith(['<a class="',this.className,'" onclick="refrescarCalendario(this, \'',inicio,'\' ,\'',fin,'\');return false" title="',inicio,'" href="#">',this.innerHTML,'</a>'].join(''));
	});
}

// eventos de los calendarios gemelos
$(function() {
	$('div.calendariosGemelos td').live('click', function() {
		var $this          = $(this);
		var $celdas        = $('div.calendariosGemelos td');
		var $seleccionadas = $celdas.filter('.seleccionado');
		var $fechas        = $this.closest('form').find('div.fechas:first :text');
		var flag           = false;
		if ($this.html() == '&nbsp;' || $this.html().indexOf('X') > -1 || $this.attr('title').toDate('',1) < new Date) return false;
		if ($this.hasClass('seleccionado')) {
			 // si tenia la clase se la quitamos
			$this.removeClass('seleccionado');
		} else if ($this.hasClass('enSeleccion')) {
			// si no la tenia, pero estaba en el interior del intervalo, se la quitamos al de alante y se la ponemos a este otro
			$seleccionadas.eq(1).removeClass('seleccionado');
			$this.addClass('seleccionado');
		} else if ($celdas.filter('.seleccionado').length == 2) {
			// si no tenia la clase pero ya habia dos anteriormente, nos los frusquiamos y se la ponemos a este
			$seleccionadas.removeClass('seleccionado');
			$this.addClass('seleccionado');
		} else {
			$this.addClass('seleccionado');
		}
		// redefinimos $seleccionadas
		$seleccionadas = $celdas.filter('.seleccionado');
		$celdas.each(function() {
			var $this = $(this);
			if ($seleccionadas.length == 2 &&
				$this.html() != '&nbsp;' &&
				($this.hasClass('seleccionado') || flag == true)
			) {
				$this.addClass('enSeleccion');
				flag = $this.hasClass('seleccionado') && flag == true ? false : true;
			} else {
				$this.removeClass('enSeleccion');
			}
		});
		
		// comprobamos que todos los dias son validos
		if ($celdas.filter('.enSeleccion:contains(X)').length) {
			$celdas.removeClass('enSeleccion');
			$this.removeClass('seleccionado');
			$seleccionadas = $celdas.filter('.seleccionado');
		}
		if ($seleccionadas.length > 0) {
			if($seleccionadas.length == 1) {
				$fechas.eq(0).val($seleccionadas.eq(0).attr('title'));
				var firstDate = $seleccionadas.eq(0).attr('title');
				var nextDate = getNextDate(firstDate);
				$fechas.eq(1).val(nextDate);
			}else{
				$fechas.eq(0).val($seleccionadas.eq(0).attr('title'));
				var lastDate = $seleccionadas.eq(1).attr('title');
				var nextDate = getNextDate(lastDate);
				$fechas.eq(1).val(nextDate);
			}
		}else{
			$fechas.eq(0).val('');
			$fechas.eq(1).val('');
		}
		
		//if ($seleccionadas.length == 2) {
		//	$fechas.eq(0).val($seleccionadas.eq(0).attr('title'));
		//	$fechas.eq(1).val($seleccionadas.eq(1).attr('title'));
		//}else{
		//	$fechas.eq(0).val('');
		//	$fechas.eq(1).val('');
		//}
	}).closest('form').find('div.fechas:first :text').change(function() {
		var $fechas        = $(this).closest('.fechas').find(':text');
		var $celdas        = $('div.calendariosGemelos td');
		var $seleccionadas = $celdas.filter('.seleccionado');
		if ($fechas.eq(0).val().toDate() < $fechas.eq(1).val().toDate()) {
			$seleccionadas.removeClass('seleccionado');
			$celdas.filter('[title='+ $.trim($fechas.eq(0).val()) +']').click();
			$celdas.filter('[title='+ $.trim($fechas.eq(1).val()) +']').click();
		}
	});
});

function getNextDate(currDate){
	var day = currDate.substring(0,2);
	var month = currDate.substring(3,5);
	var year = currDate.substring(6,10);
	var myDate = new Date();
	myDate.setFullYear(year,month-1,day);
	myDate.setDate(myDate.getDate()+1);
	var newDay = myDate.getDate();
	if(newDay<10)newDay = '0' + newDay;
	var newMonth = myDate.getMonth() + 1;
	if(newMonth<10)newMonth = '0' + newMonth;
	var newYear;
	if (($.browser.mozilla) || ($.browser.safari) || ($.browser.msie && $.browser.version == 9.0)){
		newYear = myDate.getYear()+1900;
	}else{
		newYear = myDate.getYear();
	}
	var nextDate = newDay+'/'+newMonth+'/'+newYear;
	return nextDate;
}
// cambiar numero habitaciones
$(function(){
	$('select.numberOfRooms').change(function() {
		var $tbody = $(this).parents('fieldset:first').find('table.numberOfRooms tbody');
		var start  = $tbody.children().length;
		var finish = parseInt($(this).val(),10); // forzamos base decimal para evitar problemas con los numeros del tipo 01 que se consideran base octal
		var clon, $th;
		if (start>finish) { // eliminamos las que sobran
			$tbody.children(':gt('+(finish-1)+')').remove();
		} else if (start<finish) {
			for (var i=start,l=finish;i<l;++i){
				clon = $tbody.children().eq(0).clone();
				// cambiamos el string del TH
				$th = clon.children().eq(0);
				$th.text($th.text().replace(/\d/g, '') + ((i > 8) ? (i+1) : '0'+(i+1)));
				// cambiamos los indices del array de los select e inputs
				clon.find(':input').each(function() {
					this.id = this.id.replace(/\d+/,i+1);
					this.name = this.name.replace(/\d+/,i+1);
				});
				$tbody.append(clon);
			}
		}
	});
});

/////////////////// COMBOS /////////////////////
function modificarHotel(){
	var path = $('#path').val();
	$.getJSON( path+'/B2B/B2BServlet', { action: "modificarHotel", destino: $('#location').val(), categoria: '', valuetype: $('#valuetype').val() },
		 function(data){
		 	$("select[name='hotel']").removeOption(/./);
		 	$("select[name='hotel']").addOption("","");     
               $.each(data, function(i,objeto){  
                 $("select[name='hotel']").addOption(objeto.backCode, objeto.name );  
               });  
               $("select[name='hotel']").selectOptions( "" );  
		 });
}

function modificarHotelSite(){
	var path = $('#path').val();
	$.getJSON( path+'/B2B/B2BServlet', { action: "modificarHotelMicroSite", destino: $('#location').val(), categoria: $('#category').val(), valuetype: $('#valuetype').val() },
		 function(data){
		 	$("select[name='hotel']").removeOption(/./);
              $.each(data, function(i,objeto){  
                 $("select[name='hotel']").addOption(objeto.backCode, objeto.name );  
               });  
               $("select[name='hotel']").selectOptions( "" );  
		 });
}

function modificarNumPersones(code,idForm){
	var i = 0;
	var formularis = document.forms[i];
	
	var adultValFormCanvi = $("#"+idForm+" select[name='adults']").val();
	var kidValFormCanvi = $("#"+idForm+" select[name='kids']").val();
	var babieValFormCanvi = $("#"+idForm+" select[name='babies']").val();
	
	while(formularis != null){
		var selectadult = "#"+formularis.id+" select[name='adults']";
		var selectkid = "#"+formularis.id+" select[name='kids']";
		var selectbabie = "#"+formularis.id+" select[name='babies']";
		
		var adultSelect = $(selectadult).val();
		var kidSelect = $(selectkid).val();
		var babieSelect = $(selectbabie).val();
		
		if(code == 'adultos'){
			$(selectkid).html( "" );
	        $(selectbabie).html( "" );
	        $(selectkid).addOption("0", "0" );   
	        $(selectbabie).addOption("0", "0" );
	        if(adultValFormCanvi == '1'){
	        	$(selectkid).addOption("1", "1" );
	        	$(selectkid).addOption("2", "2" );   
	        	$(selectbabie).addOption("1", "1" );
	        	if(kidValFormCanvi == '2'){
	        		babieValFormCanvi = '0';
	        	}
	        }else if(adultValFormCanvi == '2'){
	       		$(selectkid).addOption("1", "1" );
	       		$(selectbabie).addOption("1", "1" );
	       		if(kidValFormCanvi == '1'){
	        		babieValFormCanvi = '0';
	        	}
	        }  
		}else if(code == 'kids'){
	        $(selectadult).html( "" );  
	        $(selectbabie).html( "" );
	        
	        $(selectbabie).addOption("0", "0" );
	        if(kidValFormCanvi == '1'){
	    		$(selectadult).addOption("1", "1" );   
	       		$(selectadult).addOption("2", "2" );   
	       		$(selectbabie).addOption("1", "1" );
	       		if(adultValFormCanvi == '2'){
	       			babieValFormCanvi = '0';
	       		}
	        }else if(kidValFormCanvi == '2'){
	       		$(selectadult).addOption("1", "1" );   
	       		if(adultValFormCanvi == '1'){
	       			babieValFormCanvi = '0';
	       		}
	        }else if(kidValFormCanvi == '0'){
	       		$(selectadult).addOption("1", "1" );
	      		$(selectadult).addOption("2", "2" );   
	    		$(selectadult).addOption("3", "3" );
	    		$(selectbabie).addOption("1", "1" );
	    		if(adultValFormCanvi == '3'){
	       			babieValFormCanvi = '0';
	       		}
	        }
		}else{
			$(selectkid).html( "" );  
	        $(selectadult).html( "" );   
	        $(selectkid).addOption("0", "0" );   
	        if(babieValFormCanvi == '1'){
	       	   	$(selectadult).addOption("1", "1" );
	    		$(selectadult).addOption("2", "2" );   
	    		$(selectkid).addOption("1", "1" ); 
	    		if(adultValFormCanvi == '2'){
	   				kidValFormCanvi = '0';
	   			}
	        }else if(babieValFormCanvi == '0'){
	        	$(selectadult).addOption("1", "1" );   
	   	    	$(selectadult).addOption("2", "2" );   
	   	    	$(selectadult).addOption("3", "3" );
	   	    	$(selectkid).addOption("1", "1" ); 
	   	    	$(selectkid).addOption("2", "2" );
	   	    	if(adultValFormCanvi == '3'){
	       			kidValFormCanvi = '0';
	       		}   
	        } 
		}
	    $(selectadult).selectOptions( adultValFormCanvi );
	    $(selectkid).selectOptions( kidValFormCanvi );
	    $(selectbabie).selectOptions( babieValFormCanvi );
	    i = i+1;
	    formularis = document.forms[i];
	}
}

function modificarNumPersonesMulti(code,idForm,numHab){
	var i = 0;
	var formularis = document.forms[i];
	var adultValFormCanvi = $("#"+idForm+" select[name='room"+numHab+"adults']").val();
	var kidValFormCanvi = $("#"+idForm+" select[name='room"+numHab+"kids']").val();
	var babieValFormCanvi = $("#"+idForm+" select[name='room"+numHab+"babies']").val();
	
	while(formularis != null){
		var selectadult = "#"+formularis.id+" select[name='room"+numHab+"adults']";
		var selectkid = "#"+formularis.id+" select[name='room"+numHab+"kids']";
		var selectbabie = "#"+formularis.id+" select[name='room"+numHab+"babies']";
		
		var adultSelect = $(selectadult).val();
		var kidSelect = $(selectkid).val();
		var babieSelect = $(selectbabie).val();
		
		if(code == 'adultos'){ 
	        $(selectkid).html( "" );  
	        $(selectbabie).html( "" );
	        $(selectkid).addOption( "0", "0" );   
	        $(selectbabie).addOption( "0", "0" );
	        if(adultValFormCanvi == '1'){
	        	$(selectkid).addOption( "1", "1" );
	        	$(selectkid).addOption( "2", "2" );   
	        	$(selectbabie).addOption( "1", "1" );
	        	if(kidValFormCanvi == '2'){
	        		babieValFormCanvi = '0';
	        	}
	        }else if(adultValFormCanvi == '2'){
	       		$(selectkid).addOption("1", "1" );
	       		$(selectbabie).addOption("1", "1" );
	       		if(kidValFormCanvi == '1'){
	        		babieValFormCanvi = '0';
	        	}
	        }  
		}else if(code == 'kids'){
	        $(selectadult).html( "" ); 
	        $(selectbabie).html( "" );
	        $(selectbabie).addOption( "0", "0" );
	        if(kidValFormCanvi == '1'){
	    		$(selectadult).addOption( "1", "1" );   
	       		$(selectadult).addOption( "2", "2" );   
	       		$(selectbabie).addOption( "1", "1" );
	       		if(adultValFormCanvi == '2'){
	       			babieValFormCanvi = '0';
	       		}
	        }else if(kidValFormCanvi == '2'){
	       		$(selectadult).addOption("1", "1" );   
	       		if(adultValFormCanvi == '1'){
	       			babieValFormCanvi = '0';
	       		}
	        }else if(kidValFormCanvi == '0'){
	       		$(selectadult).addOption( "1", "1" );
	      		$(selectadult).addOption( "2", "2" );   
	    		$(selectadult).addOption( "3", "3" );
	    		$(selectbabie).addOption( "1", "1" );
	    		if(adultValFormCanvi == '3'){
	       			babieValFormCanvi = '0';
	       		}
	        }
		}else{
			$(selectkid).html( "" ); 
	        $(selectadult).html( "" );
	        $(selectkid).addOption("0", "0" );   
	        if(babieValFormCanvi == '1'){
	       	   	$(selectadult).addOption("1", "1" );
	    		$(selectadult).addOption("2", "2" );   
	    		$(selectkid).addOption("1", "1" ); 
	    		if(adultValFormCanvi == '2'){
	   				kidValFormCanvi = '0';
	   			}
	        }else if(babieValFormCanvi == '0'){
	        	$(selectadult).addOption("1", "1" );   
	   	    	$(selectadult).addOption("2", "2" );   
	   	    	$(selectadult).addOption("3", "3" );
	   	    	$(selectkid).addOption("1", "1" ); 
	   	    	$(selectkid).addOption("2", "2" );
	   	    	if(adultValFormCanvi == '3'){
	       			kidValFormCanvi = '0';
	       		}   
	        } 
		}
	    $(selectadult).selectOptions( adultValFormCanvi );
	    $(selectkid).selectOptions( kidValFormCanvi );
	    $(selectbabie).selectOptions( babieValFormCanvi );
	    i = i+1;
	    formularis = document.forms[i];
	}
}


function modificarNumPersonesMultiB2B(code,idForm,idSelect){
	var i = 0;
	var formularis = document.forms[i];
	var id = idSelect.toString();
	var numHab = id.substring(4, 5);
	var adultValFormCanvi = $("#"+idForm+" select[name='room"+numHab+"adults']").val();
	var kidValFormCanvi = $("#"+idForm+" select[name='room"+numHab+"kids']").val();
	var babieValFormCanvi = $("#"+idForm+" select[name='room"+numHab+"babies']").val();
	
	while(formularis != null){
		var selectadult = "#"+formularis.id+" select[name='room"+numHab+"adults']";
		var selectkid = "#"+formularis.id+" select[name='room"+numHab+"kids']";
		var selectbabie = "#"+formularis.id+" select[name='room"+numHab+"babies']";
		
		var adultSelect = $(selectadult).val();
		var kidSelect = $(selectkid).val();
		var babieSelect = $(selectbabie).val();
		
		if(code == 'adultos'){ 
	        $(selectkid).html( "" );  
	        $(selectbabie).html( "" );
	        $(selectkid).addOption( "0", "0" );   
	        $(selectbabie).addOption( "0", "0" );
	        if(adultValFormCanvi == '1'){
	        	$(selectkid).addOption( "1", "1" );
	        	$(selectkid).addOption( "2", "2" );   
	        	$(selectbabie).addOption( "1", "1" );
	        	if(kidValFormCanvi == '2'){
	        		babieValFormCanvi = '0';
	        	}
	        }else if(adultValFormCanvi == '2'){
	       		$(selectkid).addOption("1", "1" );
	       		$(selectbabie).addOption("1", "1" );
	       		if(kidValFormCanvi == '1'){
	        		babieValFormCanvi = '0';
	        	}
	        }  
		}else if(code == 'kids'){
	        $(selectadult).html( "" ); 
	        $(selectbabie).html( "" );
	        $(selectbabie).addOption( "0", "0" );
	        if(kidValFormCanvi == '1'){
	    		$(selectadult).addOption( "1", "1" );   
	       		$(selectadult).addOption( "2", "2" );   
	       		$(selectbabie).addOption( "1", "1" );
	       		if(adultValFormCanvi == '2'){
	       			babieValFormCanvi = '0';
	       		}
	        }else if(kidValFormCanvi == '2'){
	       		$(selectadult).addOption("1", "1" );   
	       		if(adultValFormCanvi == '1'){
	       			babieValFormCanvi = '0';
	       		}
	        }else if(kidValFormCanvi == '0'){
	       		$(selectadult).addOption( "1", "1" );
	      		$(selectadult).addOption( "2", "2" );   
	    		$(selectadult).addOption( "3", "3" );
	    		$(selectbabie).addOption( "1", "1" );
	    		if(adultValFormCanvi == '3'){
	       			babieValFormCanvi = '0';
	       		}
	        }
		}else{
			$(selectkid).html( "" ); 
	        $(selectadult).html( "" );
	        $(selectkid).addOption("0", "0" );   
	        if(babieValFormCanvi == '1'){
	       	   	$(selectadult).addOption("1", "1" );
	    		$(selectadult).addOption("2", "2" );   
	    		$(selectkid).addOption("1", "1" ); 
	    		if(adultValFormCanvi == '2'){
	   				kidValFormCanvi = '0';
	   			}
	        }else if(babieValFormCanvi == '0'){
	        	$(selectadult).addOption("1", "1" );   
	   	    	$(selectadult).addOption("2", "2" );   
	   	    	$(selectadult).addOption("3", "3" );
	   	    	$(selectkid).addOption("1", "1" ); 
	   	    	$(selectkid).addOption("2", "2" );
	   	    	if(adultValFormCanvi == '3'){
	       			kidValFormCanvi = '0';
	       		}   
	        } 
		}
	    $(selectadult).selectOptions( adultValFormCanvi );
	    $(selectkid).selectOptions( kidValFormCanvi );
	    $(selectbabie).selectOptions( babieValFormCanvi );
	    i = i+1;
	    formularis = document.forms[i];
	}
}

function validarDates(){
	var path = $('#path').val();
	var hotel = $("select[name='hotel']").val();
	var location = $("select[name='location']").val();
	var fechallegada = $("#startdate").val();
	var fechasalida = $("#finishdate").val();
	if((hotel != null && hotel != '') || (location != null  && location != '')){
		if(fechallegada != null && fechallegada != '' && fechasalida != null && fechasalida != ''){
			if(checkdate(fechallegada) && checkdate(fechasalida)){
				if(compruebaFechas(fechallegada, fechasalida)){
					return true;
				}else{
					$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechaSalidaPosterior"},
					function(data){
					alert(data.message);
					})
					//alert("La fecha de salida debe ser posterior a la fecha de entrada.");
					return false;
				}
			}else{
				$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechasIncorrectas"},
				function(data){
					alert(data.message);
				})
				return false;
			}
		}else if((fechallegada == null || fechallegada == '') && (fechasalida == null || fechasalida == '')){
			return true;
		}else{
			$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechasObligatorias"},
			function(data){
				alert(data.message);
			})
			//alert("Debe informar las fechas de entrada y salida");
			return false;
		}
	}else{
		$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "DestinoHotelObligatorias"},
		function(data){
			alert(data.message);
		})
		//alert("Para poder realizar una bï¿½squeda es necesario informar el destino o el hotel");
		return false;
	}
}

function validarFormularioColectivos(){
	var path = $('#path').val();
	var hotel = $("select[name='hotel']").val();
	var location = $("select[name='location']").val();
	var fechallegada = $("#startdate").val();
	var fechasalida = $("#finishdate").val();
	if((hotel != null && hotel != '') || (location != null  && location != '')){
		if((fechallegada == null || fechallegada == '') && (fechasalida == null || fechasalida == '')){
			$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechasObligatorias"},
			function(data){
				alert(data.message);
			})
			//alert("Debe informar las fechas de entrada y salida");
			return false;
		}
	}else{
		$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "DestinoHotelObligatorias"},
		function(data){
			alert(data.message);
		})
		//alert("Para poder realizar una b�squeda es necesario informar el destino o el hotel");
		return false;
	}
	return true;
}

function validarSolDatesForm(form){ 
	var path = $('#path').val();
	var fechallegada = $("#"+form+" label.fechallegada input").val();
	var fechasalida = $("#"+form+" label.fechasalida input").val();
	if(fechallegada != null && fechallegada != '' && fechasalida != null && fechasalida != ''){
		if(checkdate(fechallegada) && checkdate(fechasalida)){
			if(compruebaFechas(fechallegada, fechasalida)){
				return true;
			}else{
				$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechaSalidaPosterior"},
				function(data){
				alert(data.message);
				})
				//alert("La fecha de salida debe ser posterior a la fecha de entrada.");
				return false;
			}
		}else{
			$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechasIncorrectas"},
			function(data){
				alert(data.message);
			})
			//alert("La fecha de salida debe ser posterior a la fecha de entrada.");
			return false;
		}
	}else if((fechallegada == null || fechallegada == '') && (fechasalida == null || fechasalida == '')){
		return true;
	}else{
		$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechasObligatorias"},
		function(data){
			alert(data.message);
		})
		//alert("Debe informar las fechas de entrada y salida");
		return false;
	}
}

function validarSolDatesFormMulti(form){ 
	var path = $('#path').val();
	var rooms = $("#"+form+" label.fechallegada input:visible").size();
	var fechallegada;
	var fechasalida;
	var returnValue;
	var i;
	for(i=0;i<rooms; i++){
		fechallegada = $("#"+form+" label.fechallegada input:visible:eq("+i+")").val();
		fechasalida = $("#"+form+" label.fechasalida input:visible:eq("+i+")").val();
		if(fechallegada != null && fechallegada != '' && fechasalida != null && fechasalida != ''){
			if(checkdate(fechallegada) && checkdate(fechasalida)){
				if(compruebaFechas(fechallegada, fechasalida)){
					returnValue = true;
				}else{
					$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechaSalidaPosterior"},
					function(data){
					alert(data.message);
					})
					//alert("La fecha de salida debe ser posterior a la fecha de entrada.");
					return false;
				}
			}else{
				$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechasIncorrectas"},
				function(data){
					alert(data.message);
				})
				//alert("La fecha de salida debe ser posterior a la fecha de entrada.");
				return false;
			}
		}else{
			$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechasObligatorias"},
			function(data){
				alert(data.message);
			})
			//alert("Debe informar las fechas de entrada y salida");
			return false;
		}
	}
	return returnValue;
}

function validarSolDates(){
	var path = $('#path').val();
	var fechallegada = $("#fechallegada").val();
	var fechasalida = $("#fechasalida").val();
	if(fechallegada != null && fechallegada != '' && fechasalida != null && fechasalida != ''){
		if(checkdate(fechallegada) && checkdate(fechasalida)){
			if(compruebaFechas(fechallegada, fechasalida)){
				return true;
			}else{
				$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechaSalidaPosterior"},
				function(data){
				alert(data.message);
				})
				//alert("La fecha de salida debe ser posterior a la fecha de entrada.");
				return false;
			}
		}else{
			$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechasIncorrectas"},
			function(data){
				alert(data.message);
			})
			//alert("La fecha de salida debe ser posterior a la fecha de entrada.");
			return false;
		}
	}else if((fechallegada == null || fechallegada == '') && (fechasalida == null || fechasalida == '')){
		return true;
	}else{
		$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechasObligatorias"},
			function(data){
				alert(data.message);
		})
		//alert("Debe informar las fechas de entrada y salida");
		return false;
	}
}

function validarSolDatesHorizontal(){
	var path = $('#path').val();
	var fechallegada = $("#fechallegadaHor").val();
	var fechasalida = $("#fechasalidaHor").val();
	if(fechallegada != null && fechallegada != '' && fechasalida != null && fechasalida != ''){
		if(checkdate(fechallegada) && checkdate(fechasalida)){
			if(compruebaFechas(fechallegada, fechasalida)){
				return true;
			}else{
				$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechaSalidaPosterior"},
				function(data){
				alert(data.message);
				})
				//alert("La fecha de salida debe ser posterior a la fecha de entrada.");
				return false;
			}
		}else{
			$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechasIncorrectas"},
			function(data){
				alert(data.message);
			})
			//alert("La fecha de salida debe ser posterior a la fecha de entrada.");
			return false;
		}
	}else if((fechallegada == null || fechallegada == '') && (fechasalida == null || fechasalida == '')){
		return true;
	}else{
		$.getJSON( path+"/ProcesoReserva/UtilsServlet", { action: "getMessage", messageKey: "FechasObligatorias"},
			function(data){
				alert(data.message);
		})
		//alert("Debe informar las fechas de entrada y salida");
		return false;
	}
}

function validarSolDatesB2B(){
	var fechallegada = $("#desde").val();
	var fechasalida = $("#hasta").val();
	if(fechallegada != null && fechallegada != '' && fechasalida != null && fechasalida != ''){
		if(checkdate(fechallegada) && checkdate(fechasalida)){
			if(compruebaFechas(fechallegada, fechasalida)){
				return true;
			}else{
				return false;
			}
		}else{
			return false;
		}
	}else if((fechallegada == null || fechallegada == '') && (fechasalida == null || fechasalida == '')){
		return true;
	}else{
		return false;
	}
}

function compruebaFechas(fechallegada, fechasalida){
	dia_inicio = parseInt(fechallegada.substr(0, 2),10);
	mes_inicio = parseInt(fechallegada.substr(3, 2),10);
	ano_inicio = parseInt(fechallegada.substr(6, 4));
	dia_fin = parseInt(fechasalida.substr(0, 2),10);
	mes_fin = parseInt(fechasalida.substr(3, 2),10);
	ano_fin = parseInt(fechasalida.substr(6, 4));
	if(dia_inicio > 0 && mes_inicio >0 && ano_inicio >0 && dia_fin >0 && mes_fin >0 && ano_fin >0){
		mi_fecha_inicio = new Date(ano_inicio,mes_inicio-1,dia_inicio,0,0,0);
		mi_fecha_fin = new Date(ano_fin,mes_fin-1,dia_fin,0,0,0);
		milisegundos_inicio = parseInt(mi_fecha_inicio.getTime()/1000);
		milisegundos_fin = parseInt(mi_fecha_fin.getTime()/1000);
		if(milisegundos_inicio > 0 && milisegundos_fin > 0){
			if(milisegundos_inicio >= milisegundos_fin){
				return false;
			}else{
				return true;
			}
		}else{
			return false;
		}
	}else{
		return false;
	}
}

function checkdate(input){
	var validformat=/^\d{2}\/\d{2}\/\d{4}$/;
	var returnval=false;
	if (validformat.test(input)){
		var dayfield=input.split("/")[0];
		var monthfield=input.split("/")[1];
		var yearfield=input.split("/")[2];
		var dayobj = new Date(yearfield, monthfield-1, dayfield);
		if ((dayobj.getMonth()+1==monthfield)&&(dayobj.getDate()==dayfield)&&(dayobj.getFullYear()==yearfield)){
			returnval=true
		}
	}
	//if (returnval==false){
	//	input.select();
	//}
	return returnval
}
