/*  
 *  01/07/2008: Jordi, Modificado el codigo para que cargue la imagen siempre (aunque de error)
 */
 
var opt_enabled = false;
var cal1, cal2;    
var SwapText = ['Buscar s&#243;lo por destino', 'B&#250;squeda por disponibilidad', 'Buscar s&#243;lo por hotel'];
var lblNoches = 'noches';
//var blnMostrarListaHabitaciones = true;

var prefix = '';
function InitForm(p){
	if (p != null) {
		prefix = p;
	}
			 
	//Events
	$addHandler($get(prefix + 'drpNumHab01'), 'change', function(){ SRoomItems(this.value); });
	$addHandler($get(prefix + 'drpNinos01'), 'change', function(){ SChildItem(1, this.value); });
	$addHandler($get(prefix + 'drpNinos02'), 'change', function(){ SChildItem(2, this.value); });
	$addHandler($get(prefix + 'drpNinos03'), 'change', function(){ SChildItem(3, this.value); });
	$addHandler($get(prefix + 'drpAdultos01'), 'change', function(){ RecalcChildren(1); });
	$addHandler($get(prefix + 'drpAdultos02'), 'change', function(){ RecalcChildren(2); });
	$addHandler($get(prefix + 'drpAdultos03'), 'change', function(){ RecalcChildren(3); });
	$addHandler($get(prefix + 'drpChil011'), 'change', function(){ setValid(this); });
	$addHandler($get(prefix + 'drpChil012'), 'change', function(){ setValid(this); });
	$addHandler($get(prefix + 'drpChil021'), 'change', function(){ setValid(this); });
	$addHandler($get(prefix + 'drpChil022'), 'change', function(){ setValid(this); });
	$addHandler($get(prefix + 'drpChil031'), 'change', function(){ setValid(this); });
	$addHandler($get(prefix + 'drpChil032'), 'change', function(){ setValid(this); });
	
	HP.Suggest.add_suggestItemSelected(onSuggestItemSelected);
	//HP.Suggest.add_suggestSearchModeChanged(onSuggestSearchModeChanged);
	
	//Optimizer enabled
	if (opt_enabled) {
		HP.Suggest.set_searchMode(0);
	};
	
	$get(prefix + 'drpNumHab01').selectedIndex = 0;
	$get(prefix + 'drpAdultos01').selectedIndex = 1;
	$get(prefix + 'drpNinos01').selectedIndex = 0;

	SRoomItems(1);
	
	var lnkAdv = $get('lnkAdvanced');
	if (lnkAdv != null) {
		Sys.UI.DomElement.setPositionFromParent($get('lnkAdvanced'), HP.Suggest.get_textCtl());
		$addHandler(window, 'resize', function(){
			Sys.UI.DomElement.setPositionFromParent($get('lnkAdvanced'), HP.Suggest.get_textCtl());
		});
		Sys.UI.DomElement.show('lnkAdvanced');
	}
	var lnk = HP.Suggest.get_lnkSwapCtl();
	$addHandler(lnk, 'click', function(){ SwapView(this, 'recuadro-disponibilidad') });
}

function initDrops(obj){
	SRoomItems(obj.rn);
	setDropByValue($get(prefix + 'drpNumHab01'), obj.rn);
	if (obj.r.length > 0 && obj.r[0].an!=null) {
		setDropByValue($get(prefix + 'drpAdultos01'), obj.r[0].an);
		setDropByValue($get(prefix + 'drpNinos01'), obj.r[0].cn);
		setDropByIndex($get(prefix + 'drpChil011'), obj.r[0].ca[0]);
		setDropByIndex($get(prefix + 'drpChil012'), obj.r[0].ca[1]);
	}
	if (obj.r.length > 1 && obj.r[1].an!=null) {
		setDropByValue($get(prefix + 'drpAdultos02'), obj.r[1].an);
		setDropByValue($get(prefix + 'drpNinos02'), obj.r[1].cn);
		setDropByIndex($get(prefix + 'drpChil021'), obj.r[1].ca[0]);
		setDropByIndex($get(prefix + 'drpChil022'), obj.r[1].ca[1]);
	}
	if (obj.r.length > 2 && obj.r[2].an!=null) {
		setDropByValue($get(prefix + 'drpAdultos03'), obj.r[2].an);
		setDropByValue($get(prefix + 'drpNinos03'), obj.r[2].cn);
		setDropByIndex($get(prefix + 'drpChil031'), obj.r[2].ca[0]);
		setDropByIndex($get(prefix + 'drpChil032'), obj.r[2].ca[1]);
	}
}
function setDropByValue(drop, value){
	var i=0; var found = false;
	for(;i<drop.options.length;i++){
		if(drop.options[i].value == value){
			found = true;
			break;
		}
	}
	if (found) {
		drop.selectedIndex = i;
	}
}
function setDropByIndex(drop, index){
	if (index != -1) {
		drop.selectedIndex = index+1;
	}
}


function onSuggestItemSelected(txt){
	setValid(HP.Suggest.get_textCtl());
	GetHotelCount(HP.Suggest.get_searchItemID()+'|'+txt, 'context');
}

function ShowHotelCount(result){
	var el = $get('tdCountMsgSimple');
	if (result.length > 0) {
		Sys.UI.DomElement.show('trCountMsgSimple');
		el.innerHTML = result;
	} else {
		Sys.UI.DomElement.hide('trCountMsgSimple');
	}
}

function SRoomItems(val){
	//// Hay algunos servicios que no se mostrar� el listado de habitaciones.
	//	if(!blnMostrarListaHabitaciones)
	//		val = 0;

	val = parseInt(val);
	for (var rc = 1; rc <= val; rc++) {
		Sys.UI.DomElement.show('trRooms0' + rc);
	}
	for (var rc1 = (val + 1); rc1 <= 3; rc1++) {
		Sys.UI.DomElement.hide('trRooms0' + rc1);
		Sys.UI.DomElement.hide('trRooms0' + rc1 + '1');
		$get(prefix + 'drpAdultos0' + rc1).selectedIndex = 1;
		$get(prefix + 'drpNinos0' + rc1).selectedIndex = 0;
		$get(prefix + 'drpChil0' + rc1 + '1').selectedIndex = 0;
		$get(prefix + 'drpChil0' + rc1 + '2').selectedIndex = 0;
	}
}

function SChildItem(index, val){
	val = parseInt(val);
	for (var ci = 1; ci <= val; ci++) {
		Sys.UI.DomElement.show(prefix + 'drpChil0' + index + ci);
	}
	for (var ci1 = val + 1; ci1 <= 2; ci1++) {
		$get(prefix + 'drpChil0' + index + ci1).selectedIndex = 0;
		Sys.UI.DomElement.hide(prefix + 'drpChil0' + index + ci1);
	}
	
	if (val > 0) {
		Sys.UI.DomElement.show('trRooms0' + index + '1');
	} else {
		$get(prefix + 'drpChil0' + index + '1').selectedIndex = 0;
		$get(prefix + 'drpChil0' + index + '2').selectedIndex = 0;
		Sys.UI.DomElement.hide('trRooms0' + index + '1');
	}
}

function RecalcChildren(index){
	var selVal = parseInt($get(prefix + 'drpAdultos0' + index).value);
	var drp = $get(prefix + 'drpNinos0' + index);
	var _selectedIndex = drp.selectedIndex;
	if (selVal > 2) {
		for (idx = drp.options.length; idx >= 0; idx--) {
			drp.options[idx] = null;
		}
		
		for (rIdx = 4; rIdx >= selVal; rIdx--) {
			var opt = document.createElement("option");
			opt.value = 4 - rIdx;
			opt.text = 4 - rIdx;
			drp.options[4 - rIdx] = opt;
		}
		
		if (_selectedIndex < drp.options.length) {
			drp.selectedIndex = _selectedIndex;
		} else{
			drp.selectedIndex = 0;
		} 
		SChildItem(index, drp.value);
	} else {
		if (drp.options.length < 3) {
			for (rIdx = drp.options.length; rIdx < 3; rIdx++) {
				var opt = document.createElement("option");
				opt.value = rIdx;
				opt.text = rIdx;
				drp.options[rIdx] = opt;
			}
		}
	}
} 

function Validate(validateInOut, blnAssignComboValues){
	if(blnAssignComboValues){AssignComboValues();}
	if(validateInOut==null){validateInOut = false;}
	var valid = HP.Suggest.suggestOnSubmit();
	var formValid = ValidateForm(validateInOut);
	return valid && formValid;
}

function AssignComboValues(){
	var elCiudades = $get(prefix + 'cboCiudades');
	var text = elCiudades.options[elCiudades.selectedIndex].text;
	var id = elCiudades.options[elCiudades.selectedIndex].index;

	HP.Suggest.set_text(text);
	HP.Suggest.set_searchItemID(id);
	HP.Suggest.set_key(id, text);
}

function ClearValidation(){
	setValid(HP.Suggest.get_textCtl());
    setValid($get(prefix + 'drpNumHab01'));
    setValid($get(prefix + 'drpChil011'));
    setValid($get(prefix + 'drpChil012'));
	setValid($get(prefix + 'drpChil021'));
    setValid($get(prefix + 'drpChil022'));
    setValid($get(prefix + 'drpChil031'));
    setValid($get(prefix + 'drpChil032'));
	Sys.UI.DomElement.hide(prefix + 'lblErrorSmpl');
}
    
function ValidateForm(vInOut){
    ClearValidation();
	var ok = true;
	var okTxt = true;

	//Suggest box content validation
	var text = HP.Suggest.get_text().trim();
	okTxt = (text.length > 0);
	if(!okTxt){
		setInvalid(HP.Suggest.get_textCtl());
	}

	//Solo validaremos los combos en caso de que haya alguna cosa en las cajas de los dias entrada y salida.		
	var txtCheckInValue = $get(prefix + 'txtCheckinDay').value;
	var txtCheckOutValue = $get(prefix + 'txtCheckoutDay').value;

	if (txtCheckInValue && txtCheckInValue.length > 0)
	    txtCheckInValue = $get(prefix + 'txtCheckinDay').value;
	//txtCheckInValue = $get(prefix + 'txtCheckinDay_textBox').value;
	
	if (((txtCheckInValue.length > 0 || txtCheckOutValue.length > 0) && !vInOut) || vInOut) {
		if (txtCheckInValue.length > 0 && txtCheckOutValue.length == 0) {
			setInvalid($get(prefix + 'txtCheckoutDay'));
			ok = false;
		}else if (txtCheckInValue.length == 0 && txtCheckOutValue.length > 0) {
			setInvalid($get(prefix + 'txtCheckinDay'));
			ok = false;
		} else if(vInOut && txtCheckOutValue.length == 0 && txtCheckInValue.length == 0 ){
			setInvalid($get(prefix + 'txtCheckinDay'));
			setInvalid($get(prefix + 'txtCheckoutDay'))	
			ok = false;
		} else {
			setValid($get(prefix + 'txtCheckinDay'));
			setValid($get(prefix + 'txtCheckoutDay'))	
		}
		
		//Combos validation
		if ($get(prefix + 'drpNinos01').selectedIndex > 0) {
			var v = validateDropElement($get(prefix + 'drpChil011'));
			var v1 = validateDropElement($get(prefix + 'drpChil012'));
			ok = v && v1;
		}
		if ($get(prefix + 'drpNinos02').selectedIndex > 0) {
			var v = validateDropElement($get(prefix + 'drpChil021'));
			var v1 = validateDropElement($get(prefix + 'drpChil022'));
			ok = v && v1;
		}
		if ($get(prefix + 'drpNinos03').selectedIndex > 0) {
			var v = validateDropElement($get(prefix + 'drpChil031'));
			var v1 = validateDropElement($get(prefix + 'drpChil032'));
			ok = v && v1;
		}
	}
    if (!ok || !okTxt) {
		Sys.UI.DomElement.show(prefix + 'lblErrorSmpl');
	}
    return (ok && okTxt);
}

function validateDropElement(element){
	if (element.style.display != 'none' && element.selectedIndex == 0) {
		setInvalid(element);
		return false;
	} else {
		setValid(element);
		return true;
	}
}

function setInvalid(element){ element.style.backgroundColor = '#fc0'; }
function setValid(element){ element.style.backgroundColor = '#fff'; }

function ValidateChild(sender, args){
	var idx = sender.id.substring(sender.id.length - 2, sender.id.length - 1);
	var sidx = sender.id.substring(sender.id.length - 1, sender.id.length - 0);
	if ($get(prefix + 'drpChil0' + idx + '' + sidx).style.display != 'none') 
		if ($get(prefix + 'drpNinos0' + idx).selectedIndex > 0 && $get(prefix + 'drpChil0' + idx + '' + sidx).selectedIndex == 0) 
			args.IsValid = false;
}

function ValidateRooms(sender, args){
	if ($get(prefix + 'drpNumHab01').selectedIndex == 0) 
		args.IsValid = false;
}


 var startDate;
 var endDate;

 function resetDates(){
 	startDate = endDate = null;
 }
 
 function TestDateSpan(date1, date2){
 	return (((date2 - date1) / (1000 * 60 * 60 * 24)) < 16) && (((date2 - date1) / (1000 * 60 * 60 * 24)) > 0);
 }

function filterDates1(cal) {
    startDate = new Date(cal.date)
	startDate.setHours(0,0,0,0) 
     
    if ((endDate != null) && startDate > endDate){
        $get(prefix + 'txtCheckoutDay').value = '';
        endDate = null;
    }
    
    if(!TestDateSpan(startDate, endDate)){            
        $get(prefix + 'txtCheckoutDay').value = '';
        endDate = null;
    }        
    
	var lblWeekDayIn = $get("lblWeekDayCheckIn");
	if (lblWeekDayIn) {
		lblWeekDayIn.innerHTML = cal.currentDate.print("%A");
	}
    setValid($get(prefix + "txtCheckinDay"));
    
    if (endDate == null) {
         Zapatec.Calendar.setup({
         date : startDate, 
         inputField : prefix + 'txtCheckoutDay',
         button : "cal2", 
         ifFormat : "%d/%m/%Y", 
         showsTime : false, 
         dateStatusFunc : disallowDateBefore,
         onUpdate : filterDates2, 
         noHelp		   :	 true, 
         numberMonths   :     2, 
         weekNumbers	: false, 
         disableYearNav :true, 
         showOthers		:true, 
         disableDrag    :true
         /*,range			:[2010.09, 2011.09]*/
         });
     }
 }

 function filterDates2(cal){
 	var date = cal.date;
 	endDate = new Date(cal.date)
 	endDate.setHours(0, 0, 0, 0)
	var lblWeekDayOut = $get("lblWeekdayCheckOut");
	if (lblWeekDayOut) {
		lblWeekDayOut.innerHTML = cal.currentDate.print("%A") + ' (' + DayDiference() + ' ' + lblNoches + ')';
	}
 	setValid($get(prefix + "txtCheckoutDay"));
 }
 
 function disallowDateBefore(dateCheckOut){
 
 	dateCheckOut.setHours(0, 0, 0, 0)
 	if ((startDate != null) && startDate >= dateCheckOut) {
		return true;
	}
	if (!TestDateSpan(startDate, dateCheckOut)) 
			return true;
		
		var now = new Date()
		now.setDate(now.getDate() + 1);
		now.setHours(0, 0, 0, 0)
		if (dateCheckOut < now) 
			return true;
		
		return false;
	
}
 function disallowDateAfter(dateCheckIn) {

     var now = new Date();
     //now.setDate(now.getDate() + 1);
     //permitir reservas para el dia
     now.setDate(now.getDate());
     now.setHours(0, 0, 0, 0);

     if (dateCheckIn < now) return true;
     
  /*   var OneYearAfter = new Date(2011, 09-1, (new Date()).getDate()+1);
     OneYearAfter.setHours(0,0,0,0)
     
     if(dateCheckIn>OneYearAfter)
        return true;
   */     

     return false;
 }

 var formView = 1;
 
 function SwapView(sender, target, forceDisplay) {
    var bForce = false;
    if(forceDisplay)
        bForce = forceDisplay;
		
    ClearValidation(); 
	var el = $get(target);
    if(el.style.display=='none' || bForce)
    {
        sender.innerHTML = (HP.Suggest.get_searchOption() == '0' ? SwapText[0] : SwapText[2]);
        formView = 1;
		Sys.UI.DomElement.show(el);
		HP.Suggest.set_searchMode(1);
        Urchin('/home/eventos/disponibilidad');
    }
    else
    {
        sender.innerHTML = SwapText[1];
        formView = 0;
		Sys.UI.DomElement.hide(el);
		HP.Suggest.set_searchMode(0);
        Urchin('/home/eventos/sinDisponibilidad');
    }
 }
 
 function DayDiference(){
 	var sdate1 = $get(prefix + 'txtCheckinDay').value;
 	var sdate2 = $get(prefix + 'txtCheckoutDay').value;
 	var one_day = 1000 * 60 * 60 * 24
 	var date1 = new Date(sdate1.split('/')[2], (sdate1.split('/')[1]) - 1, sdate1.split('/')[0]);
 	var date2 = new Date(sdate2.split('/')[2], (sdate2.split('/')[1]) - 1, sdate2.split('/')[0]);
 	var dayCount = Math.ceil((date2.getTime() - date1.getTime()) / (one_day));
 	return dayCount;
 }
 
 function CheckCat(index){
        var ok=false;
        if(index=='0'){
            if($get(prefix +'chkCategories_0').checked){
                for(idxCat=1;idxCat<6;idxCat++)
                    $get(prefix + 'chkCategories_'+idxCat).checked=false;
            } else {
                for(idxCat=1;idxCat<6;idxCat++){
					if($get(prefix + 'chkCategories_'+idxCat).checked){ok=true;break;}}
                $get(prefix + 'chkCategories_0').checked=!ok;
            }
        }
        else
        {
            for(idxCat=1;idxCat<6;idxCat++){if($get(prefix + 'chkCategories_'+idxCat).checked){ok=true;break;}}
            $get(prefix + 'chkCategories_0').checked=!ok;
        }
     }    
     
     function shmore() {
        for(var i=1;i<4;i++)
            switchVisibility($get('trHide0'+i));
     }
     
     function switchVisibility(obj){
        if(obj){
            if(obj.style.display=='none'){
                obj.style.display = '';
            } else {
                obj.style.display = 'none';
            }
        }
     }
     
     
     
    function setImage(imgId, url){
        var img = document.getElementById(imgId);
        var reg = new RegExp ('/$');
        
        if(reg.test(url) || url.indexOf('null')>=0){
            img.src = '~/_aux_imagenes/hotel-nofoto.jpg';
        } else {
            var i = new Image();
            i.aI = imgId;
			i.onerror = function(){ 
			    var imgTag = document.getElementById(this.aI); 
			    //01.07.08: asignamos la url de la imagen, aunque no se cargue correctamente.
			    //imgTag.src = '/_aux_imagenes/hotel-nofoto.jpg';
			    imgTag.src = url;//'/_aux_imagenes/hotel-nofoto.jpg';
			}
            i.onload = function(){ 
                var imgTag = document.getElementById(this.aI);
                imgTag.src = this.src;
            }
            i.src = url;
        }
    }
    