	// Rollover con precarga
	var imgPath = base;
	var menuImgPath = imgPath + '/img/';
	var itemButtonsImgPath = imgPath + '/img/items/';
	var sufix = '-over';
	var extension = '.jpg';
	var ini = false;
	var version = "";
	Event.observe( window, "load", inicio);
		
	buttonOut = new Image();

		
	// Hash con la relacion de imagenes
	var buttonList = $H(
			{'mas-informacion-button':[new Image(), itemButtonsImgPath],
			'ingresar-al-catalogo':[new Image(), menuImgPath]}
	);
			
	// Precarga de imagenes
	buttonList.each (function (elemento) {
  		elemento.value[0].src = elemento.value[1] + elemento.key + sufix + extension;
	});

	function rollOver(elementId, key){
		if($(elementId))
			$(elementId).src = buttonList[key][1] + key + sufix + extension;
	}
	
	function rollOut(elementId, key){
		
		if($(elementId))
			$(elementId).src = buttonList[key][1] + key + extension;
	}
	

	
	function inicio()
	{
		ini = true;
		BrowserDetect.init(); // Browser detection
		version = parseFloat(BrowserDetect.version + '');
	   
	}

	/* Activa el Hover en el Explorer... regresa inmediatamente 
	 * en caso de que no se detecte el 
	 * navegador de microsoft.
	 */

	function hover(rowClass)
	{
		if(!ini || !(BrowserDetect.browser == 'Explorer' && version<=6))
		{ 
			return; 
		}

		var element = $(rowClass);
		Element.addClassName(element, "prototypeHover");
		//window.alert(Element.classNames(element));
	}

	/* Activa finaliza elHover en el Explorer... regresa inmediatamente 
	 * en caso de que no se detecte el navegador de microsoft.
	 */

	function endHover(rowClass)
	{
		if(!ini || !(BrowserDetect.browser == 'Explorer' && version<=6))
		{ 
			return; 
		}
		var element = $(rowClass);
		Element.removeClassName(element, "prototypeHover");
	}
	
	function controllerFlashMsg()
	{
		if($('flashMessage'))
		{
			new Effect.Opacity('flashMessage', {duration:2, from:1.0, to:0,  afterFinish: esconde});
		}
	
	}
	

	/**
	 * Cambia los select de los destinos de acuerdo al hotel seleccionado 
	 * @param {Object} hotelId
	 */
	function cambiaSelect(hotelId){
	  
       if(typeof hotelList == "undefined") {
			//window.alert(typeof hotelList);
			return ;
	  }
	   var  ID_HOTEL = 0;
	   var   NOMBRE_HOTEL = 1; 
	   var mySelect = $('VoucherHotelId');
	   var myDestinoSelect = "";
       var someNodeList = mySelect.getElementsByTagName('option');
       var nodes = $A(someNodeList);
       var i=0;
       if($('VoucherDestino')) {
		   	myDestinoSelect = $('VoucherDestino').value;
	   }
	   // hotelSeleccionado =  mySelect.selectedIndex;
	   // Quitamos las opciones
	   /*
	    * mySelect = document.getElementById('mySelect')
		mySelect.remove(2) //removes the option with index 2
		
		$(mySelect) # calls Element.extend(element) <- the culprit
		mySelect.remove(2) //error because is calling prototype Element.remove()
	    */
       if(Prototype.Browser.IE)
	   {
	   	 nodes.each(function(node, index){ mySelect.options.remove(node);});
	   }else{
	   	 nodes.each(function(node, index){ node.remove();});
	   }
	  
       
       // 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']]}
        );*/
       //Accesamos al hash de la siguiente manera     hotelList[key] key=>nombreHotel
    
	   //if(hotelList[myDestinoSelect]) //en 1.5.1.1
       if(hotelList.get(myDestinoSelect))
       {
          //hotelList[myDestinoSelect].each(function(item) { 
    	   hotelList.get(myDestinoSelect).each(function(item) {
          //window.alert('item id-->' + item[ID_HOTEL] + ' nombre-->' + item[NOMBRE_HOTEL]);
		   var newElem = document.createElement("option");
           newElem.text = item[NOMBRE_HOTEL];
           newElem.value = item[ID_HOTEL];
           mySelect.options.add(newElem);
           newElem = null;
          });
       } 
	    if(hotelId != null)
		{
			someNodeList = mySelect.getElementsByTagName('option');
			nodes = $A(someNodeList);
			nodes.each(function(node){ 
				if(node.value == hotelId)
				{
					node.selected = true;
					
				}
			});
		}
	  	//window.alert(hotelSeleccionado)
		
 	
       // Recorremos los valores del hash 
	}
	
	
	/**
	 * Calcula el dia de salida en base a un d�a dado
	 * 
	 */
	function calculaDiaSalida()
	{
		if(!$('VoucherFechaIn')) return;
		if($('VoucherFechaIn').value == '') return;
		if($('VoucherNoches').value == '') return;
		 	var DIA = 0;
			var MES = 1;
			var ANIO = 2;
			var fechaIn;
			var fechaAux;
			var fechaOut;
			var dias = validNumber($('VoucherNoches').value);
			$('VoucherNoches').value = validNumber($('VoucherNoches').value);
			values = $('VoucherFechaIn').value.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 );
			if($('VoucherFechaOut'))
			{
				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())
				$('VoucherFechaOut').value = diaSalida + '/' + mesSalida + '/'  + fechaOut.getFullYear();
			}

	}
	/**
	 * Hace los calculos para la tabla de vouchers del formato y cupon
	 * 
	 */
	function calculosTablaVouchers()
	{
		//var sufijos = new Array('Sgl', 'Dbl', 'Tpl', 'Cpl', 'Otro', 'Menor');
		var voucherSub = 0;
		var voucherTotal = 0;
		var vGranTotal = 0;
		sufijos.each(function(sufijo){
			//window.alert($('VoucherTa' + sufijo).value);
			$('VoucherTa' + sufijo).value = formatoValido($('VoucherTa' + sufijo).value);
			$('VoucherNp' + sufijo).value = validNumber($('VoucherNp' + sufijo).value);
			$('VoucherNoches' + sufijo).value = validNumber($('VoucherNoches').value);

			voucherSub = validNumber($('VoucherTa' + sufijo).value) * validNumber($('VoucherNp' + sufijo).value);
			voucherTotal = voucherSub * $('VoucherNoches').value;
			$('VoucherSub' + sufijo).value  = formatoValido(voucherSub);
			$('VoucherTotal' + sufijo).value = formatoValido(voucherTotal);
			vGranTotal +=  voucherTotal;
		});
		$('VoucherGranTotal').value =formatoValido(vGranTotal);
		$('VoucherComision').value = formatoValido($('VoucherComision').value);
		$('VoucherTtlDep').value  = formatoValido(( vGranTotal - validNumber($('VoucherComision').value)));
	}
	

	/**
	 *  Verifica el estado del checkbox de aprobacion de condicion y muestra
	 *  el boton para aceptar el "formato de confirmacion"
	 * 
	 */
	function addSubmitButton()
	{
		// El checkbox no existe :(
		if(!$('VoucherCheck')) return;
		if($('confirmButton')){
				$('confirmButton').remove()
			}
		
		var myCheckBox = $('VoucherCheck');
		// Comprobamos estado del CheckBox
		if(myCheckBox.checked)
		{
			new Insertion.Top('confirmDiv' ,  '<input id="confirmButton" type="submit" value="'+buttonTag+'"/>' ); 
		}else{
			if($('confirmButton')){
				$('confirmButton').remove()
			}
		}
		
	
		
		
	}


/*
 //sample usage
	var d = new Date();
	var d2 = d.add("d", 32); //+3days
	var d3 = d.add("h", -3); //-3hours
	alert(d2);
	Date.prototype.add = function (sInterval, iNum){
		var dTemp = this;
		if (!sInterval || iNum == 0) return dTemp;
		switch (sInterval.toLowerCase()){
			case "ms":
				dTemp.setMilliseconds(dTemp.getMilliseconds() + iNum);
				break;
			case "s":
				dTemp.setSeconds(dTemp.getSeconds() + iNum);
				break;
			case "mi":
				dTemp.setMinutes(dTemp.getMinutes() + iNum);
				break;
			case "h":
				dTemp.setHours(dTemp.getHours() + iNum);
				break;
			case "d":
				dTemp.setDate(dTemp.getDate() + iNum);
				break;
			case "mo":
				dTemp.setMonth(dTemp.getMonth() + iNum);
				break;
			case "y":
				dTemp.setFullYear(dTemp.getFullYear() + iNum);
			break;
			}
		return dTemp;
	}


*/


/* 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 displayInfFiscal(event){
    var element = Event.element(event);
	var strElement = element.identify();
	if($(strElement + 'Cont')){
		$(strElement + 'Cont').toggleClassName('active');
		if($(strElement + 'Cont').hasClassName('active') && $(strElement + 'Cont').checked ){
			Effect.Appear( strElement + 'Cont', {delay: 0.5});
		}else{
			Effect.Fade( strElement + 'Cont', {delay: 0.5});
		}
		
	}
}*/

function checkInfFiscal(){
    var nombre = "";
	if($('AgencyFacturar')){
		nombre = 'AgencyFacturar';
	}else if($('HotelFacturar')){
		nombre = 'HotelFacturar';
	}
	
	if($( nombre  + 'Cont')){
		var elemento = $(nombre  + 'Cont');
		
		//alert($('AgencyFacturar').checked );
		
		if($(nombre+'').checked ){
			if(!elemento.hasClassName('active')){
				//alert("aparece");
				elemento.addClassName('active')
				Effect.BlindDown( elemento, {delay: 0.3,  queue: {
												                position: 'end',
												                scope: 'fact',
												                limit: 2 
											                }
				});
			}
		}else{
			elemento.removeClassName('active');
			Effect.BlindUp( elemento, {delay: 0.3,  queue: {
												                position: 'end',
												                scope: 'fact',
												                limit: 2 
												            }
			});
		}
		
		
	}
}

function checkMyBox(){
	
	 //new PeriodicalExecuter(checkInfFiscal, 0.3);
		

}


/**
 Calcula la comision a pagar a los hoteleros
**/
function calculaTPH(){
	var tph; // total a pagar hotel
	var granTotal = validNumber($F('VoucherGranTotal'));
	var comision = validNumber($F('VoucherComisionHotel'));
	
	//$('VoucherComisionHotel').value
	//$('VoucherComisionHotel').value = formatoValido(comision);
	tph = granTotal - (granTotal * (comision/100));
	if(tph <= 0){
		tph = 0;
	}
	$('VoucherTph').value = formatoValido(tph);
}


/**
 Calcula la comision a pagar a la agencia
**/
function calculaTPA(){
	var tph; // total a pagar hotel
	var totalADep = 0; // total a pagar hotel
	var granTotal = validNumber($F('VoucherGranTotal'));
	var comision = validNumber($F('VoucherComisionAgencia'));
	
	//$('VoucherComisionHotel').value
	//$('VoucherComisionHotel').value = formatoValido(comision);
	tph =  (granTotal * (comision/100));
	totalADep = granTotal - tph;
	if(tph <= 0){
		tph = 0;
	}
	$('VoucherComision').value = formatoValido(tph);
	$('VoucherTtlDep').value = formatoValido(totalADep);
}




function getCommRequest(request){  
	var valores = eval(  request.responseText ); 
	
	$('VoucherComisionHotel').value = valores.Hotel.comision;
	
    calculaTPH();
                     
} 

function getCommRequestAgency ( request){
	var valores = eval(  request.responseText ); 
	
	$('VoucherComisionAgencia').value = valores.Agency.comision;
	
    calculaTPA();
                     
} 

