/*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
	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.click( function() {
			if ('div' == $panel.get(index).tagName.toLowerCase()) {
				$thisPanel.slideToggle('fast');
			} else if ($thisPanel.is(':visible')) {
				$thisPanel.fadeOut('fast');
			} else {
				$thisPanel.fadeIn('fast');
			}
			if ($hide.length) {
				$this.toggle();
				$hide.toggle();
			}
			return false;
		});
		$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,'../default.htm',mes,'../default.htm',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;
// 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);
					updateTotalsMulti();
				}
				return false;
			});
		});
	});
	
});


function refreshTotalPrice(t){
	tab=t;
	if(t[0].firstChild.nodeValue=="Tarifa web"){
		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(){

// recorremos los radios para saber cual es la opcion de tipo de hab elegida
var roomTypeRG;
if(tab!=null){
	if(tab[0].firstChild.nodeValue=="Tarifa web"){
		roomTypeRG = document.mainForm.room1Type;
		stayOptionsData = stay;
	}else{
		roomTypeRG = document.mainForm.room1TypeBIA;
		stayOptionsData = stayBIA;
	}
}else{
	roomTypeRG = document.mainForm.room1Type;
	stayOptionsData = stay;
}
var roomTypeCode = null;
var roomTypeIndex = 0;
var total = "";

roomTypeCode = roomTypeRG.value;

if( stayOptionsData != null ){
	
	if( roomTypeRG.tagName=="INPUT" ){
		roomTypeCode = roomTypeRG.value;
	} else {
		for(i=0; i < roomTypeRG.length; i++){
	    	if (roomTypeRG[i].checked == true) {
		        var radioValue = roomTypeRG[i].value;
		        //alert( radioValue + " - " + roomTypes[i] );
		        roomTypeCode = radioValue;
		        roomTypeIndex = i;
		        //sum += roomTypes[i];
		        break;
	    	}
		}
	}
	var mealPlansRG;
	if(tab!=null){
		if(tab[0].firstChild.nodeValue=="Tarifa web"){
			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];
		        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(){

// recorremos los radios para saber cual es la opcion de tipo de hab elegida
var roomTypeRG;
var sufix;
if(tab!=null){
	if(tab[0].firstChild.nodeValue=="Tarifa web"){
		roomTypeRG = document.mainForm.room1Type;
		stayOptionsData = stay;
		sufix='';
	}else{
		roomTypeRG = document.mainForm.room1TypeBIA;
		stayOptionsData = stayBIA;
		sufix='BIA';
	}
}else{
	stayOptionsData = stay;
	sufix='';
}
var roomTypeCode = null;
var roomTypeIndex = 0;
var total = 0;

if( stayOptionsData != null ){
	
	for( k=1; k<(stayOptionsData.rooms.length+1); k++ ){
		roomTypeRG = document.mainForm.elements["room" + k + "Type"];
		roomTypeCode = roomTypeRG.value;
		
		if( roomTypeRG.tagName=="INPUT" ){
			roomTypeCode = roomTypeRG.value;
		} else {
			for(i=0; i < roomTypeRG.length; i++){
		    	if (roomTypeRG[i].checked == true) {
			        var radioValue = roomTypeRG[i].value;
			        //alert( radioValue + " - " + roomTypes[i] );
			        roomTypeCode = radioValue;
			        roomTypeIndex = i;
			        //sum += roomTypes[i];
			        break;
		    	}
			}
		}
		var mealPlansRG;
		if(tab!=null){
			if(tab[0].firstChild.nodeValue=="Tarifa web"){
				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];
			        $('#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;
			    }
			}			
		}
		
	//$('#total').html( sum + ' &euro;' );
	//$('#stayprice').val(sum)
	}
	total = total.toFixed(2);
	$('#total').html( total + ' ' + stayOptionsData.currency );
	$('#stayprice').val(total);
}
}

// 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(){
	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)){
		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 != '0')){
		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 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 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,dia_inicio,0,0,0);
		mi_fecha_fin = new Date(ano_fin,mes_fin,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
}