	
/**
	 * Cambia los select de los destinos de acuerdo al hotel seleccionado 
	 * @param {Object} hotelId
	 */
	function updateSelect( idToUpdate, newElements, code){
	  //alert(newElements);
	   if(typeof newElements == "undefined") {
			return ;
	  }
	  var mySelect = $(idToUpdate);
	  var myDestinoSelect = "";
      var someNodeList = mySelect.getElementsByTagName('option');
      var nodes = $A(someNodeList);
      var i=0;
	  var selected = "";
       // Eliminamos las opciones actuales
       if(Prototype.Browser.IE)
	   {
	   	 nodes.each(function(node, index){ mySelect.options.remove(node);});
	   }else{
	   	 nodes.each(function(node, index){ node.remove();});
	   }
	  
       // var $elementHash = $H($newElements);
       // Hash con la relacion de destinos hoteles, se genera en add, edit director en el php
       /*  var hotelList = $H(
			{'cuba' : [['5','Habana Libre'], ['6', 'Gran Hotel Habana']],
			 'vallarta': [['1','Marriot'], ['2', 'Mayan Palace']]}
        );*/
       //
	   // [{"Code":"AUA","Name":"Aruba","Country":"AW"}].each(function(element, index){ alert(element['Code'])});
	   // eval({"ACA":[{"Code":10,"Name":"Zona Diamante"},{"Code":20,"Name":"Bahia"},{"Code":30,"Name":"Zona Dorada"}]})["ACA"].each(function(element, index){ alert(element['Code'])});
	   //Accesamos al hash de la siguiente manera     hotelList[key] key=>nombreHotel
       //window.alert(sectionList.get(myDestinoSelect));
	 
	   if(typeof  newElements != "undefined")
       {
        
		//alert("code-->" + code +" Tipo:" + typeof code);// eval(newElements).each(function(item) {
		$(idToUpdate).addSelectOption({text : "Seleccione Destino", value: "", cssclass: "empty"});
		if (typeof code == "undefined") {
			newElements.each(function(item){
				//window.alert('item id-->' + item["Code"] + ' nombre-->' + item["Name"]);
				$(idToUpdate).addSelectOption({text : item["Name"], value: item["Code"]});

			});
		}else{
			newElements[code].each(function(item){
				$(idToUpdate).addSelectOption({text : item["Name"], value: item["Code"]});
			});
		}
       } 
	    /*
	    if(selected != null)
		{
			someNodeList = mySelect.getElementsByTagName('option');
			nodes = $A(someNodeList);
			nodes.each(function(node){ 
				if(node.value == sectionId)
				{
					node.selected = true;
					
				}
			})
		}*/
		
	  	//window.alert(hotelSeleccionado)
		
 	
       // Recorremos los valores del hash 
	} 
	
	
	function updateZones(idToUpdate, newElements){
	   if(typeof newElements == "undefined") {
			return ;
	  }
	  var mySelect = $(idToUpdate);
	  var myDestinoSelect = "";
	  var ieSpacer = "";
      
      mySelect.eraseSelectOptions();
      
	  
	   if(Prototype.Browser.IE) {
	 		ieSpacer = " - ";
	   }
	   
	   if(typeof  newElements != "undefined")
       {
     			$(idToUpdate).addSelectOption({text : "Seleccione Zona", value: "", cssclass: "empty"});
				newElements.each(function(item){
					//window.alert('item id-->' + item["code"] + ' nombre-->' + item["name"]);
					$(idToUpdate).addSelectOption({text : item["name"], value: item["code"], cssclass: "zone"});
					item["zone"].each(function(item){
						
						
						$(idToUpdate).addSelectOption({text : ieSpacer + item["name"], value: item["code"], cssclass: "opt"});
					});
	
				});
				
			
				
			
	  	
       } 
	
	} 
	
	
	function hotelCountryLoading()
	{
		$('XmlHotelCountry').disable();
		$('XmlHotelDestination').disable();
		$('XmlHotelZone').disable();
		
		$('XmlHotelZone').eraseSelectOptions();
		$('XmlHotelDestination').eraseSelectOptions();
	}
	
	function hotelCountryLoaded()
	{
		$('XmlHotelCountry').enable();
		$('XmlHotelDestination').enable();
	}
	
	function hotelDestinationLoading()
	{
		$('XmlHotelDestination').disable();
		$('XmlHotelZone').disable();
		$('XmlHotelZone').eraseSelectOptions();
	}
	
	function hotelDestinationLoaded()
	{
		$('XmlHotelDestination').enable();
		$('XmlHotelZone').enable();
	}
	
	function eraseSelectOptions(selectId){
	  if ($(selectId)) {
	  	$(selectId).innerHTML = "";
		return true;
	  }
	  return false;
	}
	
	
	
	
	
	/**
	 * Calcula el dia de salida en base a un d�a dado
	 * 
	 */
	function calculaCheckOut(checkIn, dias)
	{
		 	var DIA = 0;
			var MES = 1;
			var ANIO = 2;
			var fechaIn;
			var fechaAux;
			var fechaOut;
			var salida;
			
			dias = validNumber(dias);
			values = checkIn.split('/', 3);
			
			if(values.length < 2) return;
			sDia = values[DIA];
			sMes = values[MES] - 1; // Los meses van de 0 a 11 en JS!!
			sAnio = values[ANIO];
			// Data(year, month, date, hour, minute, second)
			fechaIn = new Date(sAnio, sMes, sDia);
			fechaAux = new Date(sAnio, sMes, sDia);
			
			addFechas = fechaAux.setDate(fechaIn.getDate() + dias);
			fechaOut = new Date(addFechas);
			//window.alert('dias-->' + dias + '  sDia->' + sDia + ' sMes->' + sMes + ' sAnio->' + sAnio + '  fechaIn-->' + fechaIn + ' fecha Out-->' + fechaOut );
				diaSalida = (fechaOut.getDate() + '').length == 1 ? '0' + fechaOut.getDate() :  fechaOut.getDate() + '';
				mesSalida = ((fechaOut.getMonth()+1) + '').length == 1 ? '0' + (fechaOut.getMonth()+1) :  (fechaOut.getMonth()+1) + '';
				if (fechaOut.getDate()) {
					salida = diaSalida + '/' + mesSalida + '/' + fechaOut.getFullYear();
				}
		return salida;	
	}
	
	
	
	/* FORMATEO DE CADENAS */
	function validNumber(valor){
	 	  //window.alert('Antes de Parse->' + valor + ' Despues->' +  parseFloat(valor));
		  
		 valor += '';
		 valor = valor.toString().replace(/\$|\,/g,''); 
		 valor = parseFloat(valor);
	
	      if (isNaN(valor)) {
	            return  parseFloat('0');
	      }else{
	            return valor;
	      }
	}

	//----------------------------------------------------------
	//-- Manipula una cadena para el hacerlo formato moneda --
	//----------------------------------------------------------
	function formatCurrency(num) {
		num = num.toString().replace(/\$|\,/g,'');
		num = parseFloat(num,10);
		var signo = '';
		if(isNaN(num)) 
			return(false);
		if(num<0){
			signo = '-'
			num = Math.abs(num);
		}
		
		//cents = Math.floor((num*100+0.5)%100);
		cents =Math.ceil((num*100)%100);
		num = Math.floor((num*100+0.5)/100).toString();
		if(cents < 10) 
			cents = "0" + cents;
		for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
			num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
			num = num.replace(/-,/, '-');
		return (signo + '' + num + '.' + cents);
		
	}
	
	function formatoValido(valor)
	{
			return formatCurrency(validNumber(valor));
	}
	
	
	
	
	function addHotelRoom(){
		if(numPartida>=5){
			alert("Solo se permite reservar 5 habitaciones.");
			return false;
		}
		var itemTemplate;
		var selectMinorsAgeObserver = "Event.observe('minors#{numeroPartida}', 'change', function(event) { updateMinorsAgesField('#{numeroPartida}'); }, false);"
		itemTemplate = new Template(
			'<tr id="partida#{numeroPartida}" class="tr" >' +
					//'<th id="room#{numeroPartida}" class="room validacion" >'+
					//' 	#{numeroPartida}' + 		
					//'</th>' + 
					'<td class="adults">'+guestAdultsCodeBlock+'</td>' +
					'<td class="minors">'+guestMinorsCodeBlock+'<span id="minorsAge#{numeroPartida}"></span></td>' +
					'<td id="delete#{numeroPartida}" class="validacion removeRoom" >'+
                    '   <a onclick="return removePart(#{numeroPartida})" href="/bedsOn/wroot/-"><span>Eliminar Habitación</span></a>' +      
                    '</td>' + 
					'<script>'+
						selectObserver +
						selectMinorsAgeObserver + 
					'</script>' +
			'</tr>'
			);
		
		partidaItem = {numeroPartida: numPartida + 1};
		a = itemTemplate.evaluate(partidaItem);
		
		// Insertamos 
		new Insertion.Bottom('hotelRoomsBody',  a); 
		numPartida++;
		return false;
		//tableDecorator('tableBody' . focuss);
		//tableDecorator('tableBody');
		//window.alert(focuss);
	}
	
	function removePart(numeroPart){
		 if($('partida' + numeroPart)){
		 	$('partida' + numeroPart).remove();	
		 }
		 numPartida--;
		 return false;
	}
	
	
	
	
	function populateHotelRoom(nAdults, nChilds, cAges)
	{
		var partida = 0;
		
		addHotelRoom();
		partida = numPartida;
		// adults  + partida
		//updateMinors(partida);
		// minors1 + partida
		// updateMinorsAgesField(partida, cAges)
		if(!$('adults' + partida)) return;
		if(!$('minors' + partida)) return;
		
		$('adults' + partida).setOption(nAdults)
		updateMinors(partida);
		$('minors' + partida).setOption(nChilds)
		updateMinorsAgesField(partida, cAges);
		
	}
	
	function updateMinors(partida)
	{
		
		$('minors' + partida).eraseSelectOptions();
		$('minors' + partida).disable();
		if($F('adults' + partida) == "") { alert("Especifique el número de adultos"); return; } 
		minorsOptions[$F('adults' + partida)].each(
			  function(item, key){
				$('minors' + partida).addSelectOption({text:item,value:key})
			 
			 }
			
		);
		$('minors' + partida).enable();
	}
	
	function updateMinorsAgesField(partida, cAges){
		var nFields = $F('minors' + partida);
		var ageFields = "";
		var observeAgeFields = "";
		var fieldValue = "";
		$("minorsAge" + partida).update("");
		

		for(i=0; i<nFields; i++)
		{
			if(isDefined(cAges)) {
				if(isDefined(cAges[i])) {
					fieldValue = 'value="' + cAges[i] + '"';
				}
			}
        	ageFields += '<input '+fieldValue+' class="ageFields" type="text" id="mAgeP'+partida+'n'+i+'" name="data[XmlHotel][Rooms]['+partida+'][guests][minorsAges]['+i+']">';
			/*ageFields += '<select '+fieldValue+' class="ageFields" type="text" id="mAgeP'+partida+'n'+i+'" name="data[XmlHotel][Rooms]['+partida+'][guests][minorsAges]['+i+']">';
			ageFields += '<option value="1">1</option>';
			ageFields += '<option value="2">2</option>';
			ageFields += '<option value="3">3</option>';
			ageFields += '<option value="4">4</option>';
			ageFields += '<option value="5">5</option>';
			ageFields += '<option value="6">6</option>';
			ageFields += '<option value="7">7</option>';
			ageFields += '<option value="8">8</option>';
			ageFields += '<option value="9">6</option>';
			ageFields += '<option value="10">12</option>';
			ageFields += '<option value="11">11</option>';
			
			ageFields += '</select>';
			*/
			observeAgeFields +=	"Event.observe('mAgeP" + partida +"n"+ i + "', 'change', function(event) { $('mAgeP" + partida +"n"+ i + "').value = validNumber($F('mAgeP" + partida +"n"+ i + "')); }, false); ";
			fieldValue = "";
				
		}
		if(ageFields != ""){
		  ageFields = "<span class=\"edades\"> Edad(es):</span>" + ageFields;	
		}
		$("minorsAge" + partida).insert( { "bottom" :  ageFields + "<script>" + observeAgeFields + "</script>"});
		
	}
	
	
	function isDefined( variable)
	{
	    return (typeof(variable) == "undefined") ?  false: true;
	}

	
	/**
	 * 
	 * /
	 */
	var ClicUtils = {
	    eraseSelectOptions: function(element, html){
	       $(element).innerHTML = "";
		   return $(element);
	    },
		/** Añade una opcion con el tecto especificado a un select 
		 * ({text:"Zona Diamante",value:10})
		 * $('XmlHotelCountry').addSelectOption({text:"Zona Diamante",value:10});
		 * 
		 * @param {Object} element
		 * @param {Object} option
		 */
		addSelectOption: function(element, option){
	    
		  if(!element) return;
		  var className="";
		  if (typeof option.cssclass != "undefined") {
				className = 'class="'+option.cssclass+'"';
		  }
		  $(element).insert( { 'bottom': '<option '+className+' value="'+option.value+'">'+option.text+'</option>' })
		  $(element).selectedIndex = 0; // siempre selecciona el ultimo elemento
		  // $(element).options[0].selected = 0;
		  // alert( $(element).selectedIndex);
		  return $(element);
	    },
		
		// En Explorer el addClass lo traba
		addSelectOptionOld: function(element, option){
	    
		  if(!element) return;
		 
		  var newElem = document.createElement("option");
		  newElem.text = option.text;
		  newElem.value = option.value;
		  if (!Prototype.Browser.IE) {
		  	if (typeof option.cssclass != "undefined") {
		  		newElem.addClassName(option.cssclass);
		  	}
		  }
		  $(element).options.add(newElem);
		  return $(element);
	    },
		
		// SetSelectedIndex
		/*
		 * $('XmlHotelCountry').setOption('MX');
		 * $('XmlHotelDestination').setOption('ACA');
		 */
		setOption: function(element, option){
	      if(!element) $(element);
		 	if(option != null)
			{
				someNodeList = element.getElementsByTagName('option');
				nodes = $A(someNodeList);
				nodes.each(function(node, key){ 
					if(node.value == option)
					{
						node.selected = true;
						$(element).selectedIndex = key;
					}
				});
			}
		 	return $(element);
	    }
		
		
		
}

	Element.addMethods(ClicUtils);
 
	
	