/*****************************************************************************************************/
/*                                                                                                   */
/*                                     'SEARCH BOX' 		                                         */          
/*                                                                                                   */
/*****************************************************************************************************/

function SEARCH_BOX(){
	
	var JSObject = this;
	
	this.form;
	this.DOMDoc;
	
	this.advanced_search_container = $("#advanced_search_container");
	this.advanced_search_arrow = $("#advanced_search_arrow");
	this.advanced_search_state = $("#advanced_search_state");

	this.init = function(){
		
		JSObject.form = this.DOMDoc.getElementById('search_arrivaldate').form;
		JSObject.advanced_search_open = false;
		
		//add event handler
		$("#advanced_search_display").click(
		
			function(){
				
				if(JSObject.advanced_search_open){
					
					//close advanced search
					JSObject.advanced_search_container.slideUp('slow',function(){});
					
					//replace arrow
					JSObject.advanced_search_arrow.get(0).src = JSInterface.localpath+'includes/images/bullets/down_arrow.gif';
									
					JSObject.advanced_search_open = false;
					
				}else{

					//open advanced search
					JSObject.advanced_search_container.slideDown('slow',function(){});
					
					//replace arrow
					JSObject.advanced_search_arrow.get(0).src = JSInterface.localpath+'includes/images/bullets/up_arrow.gif';
					
					JSObject.advanced_search_open = true;
				}

				return false;
			}
		);
		
		//add event handler
		$("#search_send_btn").click(

			function(){
				
				JSInterface.MultiLanguage.onLoad(//WAIT FOR MULILANGUAGE TO FINISH PARSING THE .CSV FILE

					function(){
				
						// ******************** SET CURRENT DATE ******************** //
						var currentDate = new Date();
							
						// ******************** VALIDATE ARRIVAL DATE ******************** //
						
						var arrivalDateObject =  $("#search_arrivaldate");
						var arrivalDate = new Date();
						
				    	if(arrivalDateObject.val()){
							
							var arrivalDateParts = arrivalDateObject.val().split('/');
		
							var arrivalYear = arrivalDateParts[2];
							var arrivalMonth = arrivalDateParts[1];
							var arrivalDay = arrivalDateParts[0];
		
							arrivalDate.setFullYear(arrivalYear,Math.abs(arrivalMonth - 1),arrivalDay);
							
							if(currentDate > arrivalDate){
			
								var message = JSInterface.MultiLanguage.translate("Please select a valid arrival date.");
								JSInterface.Loader.display({message: message});
								
								return;//prevent form submission
		
							}else{
								
								// ******************* VALIDATE DEPARTURE DATE ***************** //
						
								var departureDateObject =  $("#search_departuredate");
								var departureDate = new Date();
								
								if(departureDateObject.val()){
									
									var departureDateParts = departureDateObject.val().split('/');
				
									var departureYear = departureDateParts[2];
									var departureMonth = departureDateParts[1];
									var departureDay = departureDateParts[0];
					
									departureDate.setFullYear(departureYear,Math.abs(departureMonth - 1),departureDay);		
					
									if(departureDate <  arrivalDate){
									
										var message = JSInterface.MultiLanguage.translate("Please select a valid departure date.");
										JSInterface.Loader.display({message: message});
										
										return;//prevent form submission
									}
					
									minDepartureDate = new Date();
									minDepartureDate = minDepartureDate.setDate(arrivalDate.getDate()+4);
					
									if(departureDate <  minDepartureDate){
										
										var message = JSInterface.MultiLanguage.translate("The minimum reservation period is 4 nights.");
										JSInterface.Loader.display({message: message});
										
										return;//prevent form submission
									}
										
								}else{
									
									var message = JSInterface.MultiLanguage.translate("Please select the departure date.");
									JSInterface.Loader.display({message: message});
									
									return;//prevent form submission
								}
				
								// ************************************************************ //
							}
							
							/********************************************
							*											*
							* VALIDATE MAX 180 RESERVATION DAYS ALLOWED	*
							*											*
							********************************************/
							
							//GET ARRIVAL DATE
							arrivalDateObject = arrivalDateObject[0];
							
							var arrivalDate = new Date();
							var arrivalDateParts = arrivalDateObject.value.split('/');
							var arrivalYear = arrivalDateParts[2];
							var arrivalMonth = arrivalDateParts[1];
							var arrivalDay = arrivalDateParts[0];
							arrivalDate.setFullYear(arrivalYear,Math.abs(arrivalMonth - 1),arrivalDay);
							
							//GET DEPARTURE DATE
							departureDateObject = departureDateObject[0];
							
							var departureDate = new Date();
							var departureDateParts = departureDateObject.value.split('/');
							var departureYear = departureDateParts[2];
							var departureMonth = departureDateParts[1];
							var departureDay = departureDateParts[0];
							departureDate.setFullYear(departureYear,Math.abs(departureMonth - 1),departureDay);
							
							
							//GET MINIMUM DEPARTURE DATE (4 DAYS AHEAD)
							var minDepartureDate = new Date(arrivalDate.getTime());
							minDepartureDate.setDate(arrivalDate.getDate()+4);

							
							//THE MAXIMUM NUMBER OF RESERVATION DAYS IS 180
							var maxDepartureDate = new Date(arrivalDate.getTime());
							maxDepartureDate.setDate(arrivalDate.getDate()+180);
							
							//MAX 180 reservation days validation
							if(departureDate.getTime() >  maxDepartureDate.getTime()){//compare timestamps

								//show message
								var message = JSInterface.MultiLanguage.translate("For reservations that exceed 180 nights please contact us.");
								JSInterface.Loader.display({message: message});
								
								return;//prevent form submission
							}
							
						}
		
						// SUBMIT FORM
						JSObject.form.submit();
					}
				
				);
				
			}
		
		);
		
		//OPEN ADVANCED SEARCH
		if(JSObject.advanced_search_state.val() == 'true'){
						
			$("#advanced_search_display").trigger('click');
		}	
					
	}
	
}
