var luxairHotel=new Object();

/* //////////////////////////
* VALIDATE METHODS
////////////////////////// */

/*
* validate the form
*/
luxairHotel.checkForm=function(){
	var errors = [];
	var functions = [
		'Check'
	];
	
	//add the events to the form elements
	var functionName = "";
	var prefix="";
	for(var i=0; i< luxairHotel.form.elements.length; i++){
		//define the name of the element
		var begin = luxairHotel.form.elements[i].id.lastIndexOf(':');
		if(begin!=-1){
			//call standard functions
			for(var j=0; j<functions.length; j++){
				prefix =  luxairHotel.form.elements[i].id.substr(begin+1);		
				functionName = prefix + functions[j];
				if(luxairHotel[functionName] != null){
					//call the function
					var error = luxairHotel[functionName](prefix);
					if(error!=""){
						errors[errors.length] = error;  
					}
				}
			}
		}
	}	
		
	if(errors.length>0){
		var errMsg='';
		for(var i=0; i<errors.length; i++){
			errMsg+=errors[i]+'\n';
		}
		return(errMsg); 
	}
	return ''; 
}

/*
* validate country
* @param elemKey the element id
*/
luxairHotel.countryCheck=function(elemKey){
	if(!luxairHotel.checkMandatory(luxairHotel.getElementId(elemKey))){
		return hotel_searchMask_country_mandatory;
	}
	return '';
}

/*
* valide destination
* @param elemKey the element id
*/
luxairHotel.destinationCheck=function(elemKey){
	if(!luxairHotel.checkMandatory(luxairHotel.getElementId(elemKey))){
		return hotel_searchMask_destination_mandatory;
	}
	return '';
}

/*
* validate departure date
* @param elemKey the element id
*/
luxairHotel.departureDateCheck=function(elemKey){
	var elementFullKey=luxairHotel.getElementId(elemKey);
	if(!luxairHotel.checkMandatory(elementFullKey)){
		return hotel_searchMask_date_departure_mandatory;
	}
	return '';
}

/*
* validate return date
* @param elemKey the element id
*/
luxairHotel.returnDateCheck=function(elemKey){
	var elementFullKey=luxairHotel.getElementId(elemKey);
	if(!luxairHotel.checkMandatory(elementFullKey)){
		return hotel_searchMask_date_return_mandatory;
	}
	return '';
}

/*
* validate travellers
* @param elemKey the element id
*/
luxairHotel.travellersCheck=function(elemKey){
	if(!luxairHotel.checkMandatory(luxairHotel.getElementId(elemKey))){
		return hotel_searchMask_count_adults_mandatory;
	}
	return '';
}

/*
* validate children
* @param elemKey the element id
*/
luxairHotel.childrenCheck=function(elemKey){
	if(!luxairHotel.checkMandatory(luxairHotel.getElementId(elemKey))){
		return hotel_searchMask_count_children_mandatory;
	}
	return '';
}

/*
* validate child 1 birthdate
* @param elemKey the element id
*/
luxairHotel.child1BirthdayCheck=function(elemKey){
	if(luxairHotel.getChildrenNumber()>=1){
		if(!luxairHotel.checkMandatory(luxairHotel.getElementId(elemKey))){
			return child_1_birthday_mandatory;
		}
	}
	return '';
}

/*
* validate child 2 birthdate
* @param elemKey the element id
*/
luxairHotel.child2BirthdayCheck=function(elemKey){
	if(luxairHotel.getChildrenNumber()>=2){
		if(!luxairHotel.checkMandatory(luxairHotel.getElementId(elemKey))){
			return child_2_birthday_mandatory;
		}
	}
	return '';
}

/*
* validate child 3 birthdate
* @param elemKey the element id
*/
luxairHotel.child3BirthdayCheck=function(elemKey){
	if(luxairHotel.getChildrenNumber()>=3){
		if(!luxairHotel.checkMandatory(luxairHotel.getElementId(elemKey))){
			return child_3_birthday_mandatory;
		}
	}
	return '';
}

/*
* validate child 4 birthdate
* @param elemKey the element id
*/
luxairHotel.child4BirthdayCheck=function(elemKey){
	if(luxairHotel.getChildrenNumber()>=4){
		if(!luxairHotel.checkMandatory(luxairHotel.getElementId(elemKey))){
			return child_4_birthday_mandatory;
		}
	}
	return '';
}

/*
* validate child 5 birthdate
* @param elemKey the element id
*/
luxairHotel.child5BirthdayCheck=function(elemKey){
	if(luxairHotel.getChildrenNumber()>=5){
		if(!luxairHotel.checkMandatory(luxairHotel.getElementId(elemKey))){
			return child_5_birthday_mandatory;
		}
	}
	return '';
}

/*
* validate max price
* @param elemKey the element id
*/
luxairHotel.hotelMaxPriceCheck=function(elemKey){
	if(!luxairHotel.checkMandatory(luxairHotel.getElementId(elemKey))){
		return hotel_searchMask_price_mandatory;
	}
	return '';
}

/*
* validate category
* @param elemKey the element id
*/
luxairHotel.hotelCategoryCheck=function(elemKey){
if(!luxairHotel.checkMandatory(luxairHotel.getElementId(elemKey))){
	return hotel_searchMask_category_mandatory;
}
return '';
}

/*
* validate lang
* @param elemKey the element id
*/
luxairHotel.langCheck=function(elemKey){
	if(!luxairHotel.checkMandatory(luxairHotel.getElementId(elemKey))){
		return 'Language is mandatory';
	}
	return '';
}

/* //////////////////////////
* INIT METHODS
////////////////////////// */

/*
* init form
*/
luxairHotel.initForm=function(){
	 var language=$F(luxairHotel.getElementId('lang'));
//	 luxairHotel.initCountry(language);
	 luxairHotel.initTraveler(language);
	 luxairHotel.initChild(language);
	 luxairHotel.initPrice(language);
	 luxairHotel.initCategory(language);
}

/*
* init country
* @param language the language
*/
luxairHotel.initCountry=function(language){
	HotelManager.getCountryItems(language,{
	     callback:function(data){
			 var itemId=luxairHotel.getElementId('country');
	         luxairHotel.fillSelectItem(data,itemId);
	         $(itemId).selectedIndex = 0;
	     }
	 });
}

/*
* init traveler
* @param language the language
*/
luxairHotel.initTraveler=function(language){
	HotelManager.getTravelerItems(0,language,{
	     callback:function(data){
	    	 var itemId=luxairHotel.getElementId('travellers');
	         luxairHotel.fillSelectItem(data,itemId);
	         $(itemId).selectedIndex = 1;
	     }
	 });
}

/*
* init child
* @param language the language
*/
luxairHotel.initChild=function(language){
	HotelManager.getChildItems(2,language,{
	     callback:function(data){
	    	 var itemId=luxairHotel.getElementId('children');
	         luxairHotel.fillSelectItem(data,itemId);
	         $(itemId).selectedIndex = 0;
	     }
	 });
}

/*
* init price
* @param language the language
*/
luxairHotel.initPrice=function(language){
	HotelManager.getPriceItems(language,{
	     callback:function(data){
	    	 var itemId=luxairHotel.getElementId('hotelMaxPrice');
	         luxairHotel.fillSelectItem(data,itemId);
	         $(itemId).selectedIndex = 0;
	     }
	 });
}

/*
* init category
* @param language the language
*/
luxairHotel.initCategory=function(language){
	HotelManager.getCategoryItems(language,{
	     callback:function(data){
	    	 var itemId=luxairHotel.getElementId('hotelCategory');
	         luxairHotel.fillSelectItem(data,itemId);
	         $(itemId).selectedIndex = 0;
	     }
	 });
}

/* //////////////////////////
* UPDATE METHODS
////////////////////////// */

/*
* event manager
*/
luxairHotel.addElementEvents=function(){
    Event.observe(
        $('frmSearchHotel'), 
        'click',
        luxairHotel.searchLocation.bindAsEventListener(luxairHotel,hotel_locationList_introduction)
    );
    Event.observe(
	    $(luxairHotel.getElementId('travellers')), 
	    'change',
	    luxairHotel.updateTravelers.bindAsEventListener(luxairHotel)
    );
    Event.observe(
	    $(luxairHotel.getElementId('children')), 
	    'change',
	    luxairHotel.updateChildren.bindAsEventListener(luxairHotel)
    );
}

/*
* update traveler element
*/
luxairHotel.updateTravelers=function(event){	
	var travelerVal=luxairHotel.getTravelersNumber();
	var childVal=luxairHotel.getChildrenNumber();
	var language=$F(luxairHotel.getElementId('lang'));
	HotelManager.getChildItems(travelerVal,language,{
	     callback:function(data){
	    	 var itemId=luxairHotel.getElementId('children');
	         luxairHotel.fillSelectItem(data,itemId);
	         $(itemId).selectedIndex = childVal;	
	     }
	 });
}

/*
* update child element
*/
luxairHotel.updateChildren=function(event){
	var childVal=luxairHotel.getChildrenNumber();
	var travelerVal=luxairHotel.getTravelersNumber();
	for(var i=1;i<=childVal;i++){
		Element.show('labmSection1Child'+i);	
	}
	childVal++;
	for(var i=childVal;i<=5;i++){
		Element.hide('labmSection1Child'+i);
	}
	childVal=luxairHotel.getChildrenNumber();
	var language=$F(luxairHotel.getElementId('lang'));
	HotelManager.getTravelerItems(childVal,language,{
	     callback:function(data){
	    	 var itemId=luxairHotel.getElementId('travellers');
	         luxairHotel.fillSelectItem(data,itemId);
	         if(travelerVal>0){
	         	$(itemId).selectedIndex = travelerVal-1;
	         }else{
	         	$(itemId).selectedIndex = 0;
	         }
	     }
	 });
}

/* //////////////////////////
* SEARCH METHODS
////////////////////////// */

/*
* search location and display it
* @param title the title
*/
luxairHotel.searchLocation=function(event,title){
	var language=$F(luxairHotel.getElementId('lang'));
	var errMsg = luxairHotel.checkForm();
	if(errMsg!=''){
		alert(errMsg);
	}else{
		var country=$F(luxairHotel.getElementId('country'));
		var destination=$F(luxairHotel.getElementId('destination'));
		HotelManager.getDestinationItems(country,destination,language,{
		     callback:function(data){	
		        //switch visible div
		        if(data.length==1){
							$(luxairHotel.getElementId('destinationProviderInternalId')).value=data[0].providerInternalId;
							$(luxairHotel.getElementId('destinationProviderId')).value=data[0].providerId;
							luxairHotel.formSubmit();
		        }
		        else if(data.length>1){
					$('locations').innerHTML='';
		        	//fill locations div
			        var titleDiv=document.createElement("div");
			        titleDiv.innerHTML=title+'<br/><br/>';
			        $('locations').appendChild(titleDiv);
			        for(var i=0;i<data.length; i++){
			        		var newLocationDiv=document.createElement("div");
			        		newLocationDiv.innerHTML='<a style=\'cursor:pointer;line-height:25px;\' onclick=\'luxairHotel.searchHotels('+data[i].providerInternalId+','+data[i].providerId+');\'>'+data[i].translation+' >></a>';
			     				$('locations').appendChild(newLocationDiv);
			        }
		        	Element.hide('labmSection1');
		        	Element.hide('labmSection4');
	     			Element.show('locations');
		    	}else{
		    		//display alert message
		    		alert(error_no_cities);	
		    	}
		     }
		 });
	}
}

/*
* search hotel
* @param providerInternalId the provider internal id
* @param providerId the provider id
*/
luxairHotel.searchHotels=function(providerInternalId,providerId){
	$(luxairHotel.getElementId('destinationProviderInternalId')).value=providerInternalId;
	$(luxairHotel.getElementId('destinationProviderId')).value=providerId;
	luxairHotel.formSubmit();	
}

/* //////////////////////////
* UTILITY METHODS
////////////////////////// */

/*
* fill drop down
* @param data the drop down data
* @param id the drop down id
*/ 
luxairHotel.fillSelectItem=function(data,id){
	luxairHotel.clearSelectBox(id);
    for(var i=0;i<data.length; i++){
        var objOption = document.createElement("option");
        objOption.value=data[i].value;
        objOption.text=data[i].label;
        $(id).options.add(objOption);
    }
}

/*
* clear drop down
* @param id the drop down id
*/
luxairHotel.clearSelectBox=function(id){
	var htmlElement=$(id);
    for(i=htmlElement.options.length-1;i>=0;i--){
       htmlElement.remove(i);
    }
}

/*
* select drop down first item
* @param id the drop down id
*/
luxairHotel.selectBoxFirstElement=function(id){
    $(id).selectedIndex = 0;
}

/*
* Set form id
*/
luxairHotel.setFormId=function(formId){
	luxairHotel.formId = formId;
}

/*
* Get form id
*/
luxairHotel.getFormId=function(){
	return luxairHotel.formId;
}

/*
* get child count
*/
luxairHotel.getChildrenNumber=function() {
	return $F(luxairHotel.getElementId('children'));
}

/*
* get traveler count
*/
luxairHotel.getTravelersNumber=function() {
	return $F(luxairHotel.getElementId('travellers'));
}

/*
* submit form
*/
luxairHotel.formSubmit=function(){
	luxairHotel.form.submit();
}

/*
* Get elementID
* @param elemKey the key
*/
luxairHotel.getElementId=function(elemKey){
    return luxairHotel.getFormId() + ':' + elemKey; 
}

/*
* check for mandatory fields
* @param id the element id
*/
luxairHotel.checkMandatory=function(id) {
	if($(id) == null || $F(id)=='' || $F(id)==null){
		return false;
	}
	return true;
}

/* //////////////////////////
* MAIN
////////////////////////// */
/*
window.onload=function(){
	DWREngine.setMethod(DWREngine.ScriptTag);
	HotelManager._path = _path+"/dwr";
	luxairHotel.setFormId(_formID);
	luxairHotel.form=$(luxairHotel.getFormId());
	luxairHotel.initForm();
	luxairHotel.addElementEvents();
}
*/
