// search.js

var total_pages=0;
var num_page=1;


function findNextPage(page_id){
	var link="requestManager?action=nextPageSearch&page_id="+page_id;
	var oXmlHttp = createXMLHttp();
    oXmlHttp.open("get", link+'&randomdata='+Date(), true);
    oXmlHttp.onreadystatechange = function () {
        if (oXmlHttp.readyState == 4) {
            if (oXmlHttp.status == 200) {
                document.getElementById("searchResults").innerHTML=oXmlHttp.responseText;
                num_page=page_id;
                
            } else {
                document.getElementById("searchResults").innerHTML="An error occurred: "+ oXmlHttp.statusText;
            }
        }
    };
    oXmlHttp.send(null);
    document.location.href="#Top";
}

function nextPage(){
    findNextPage(num_page+1);
}

function previousPage(){
	findNextPage(num_page-1);
}

function memberLogin(){
    document.location = "customerProfile.jsp";
}

function activateCottageTypeTable(){
   if(document.getElementById("cottageTypeSearch").checked==true)
		document.getElementById("cottageTypeSearchTable").style.display="";
   else
		document.getElementById("cottageTypeSearchTable").style.display="none";
}

function activateDatesTable(){
   if(document.getElementById("dateSearch").checked==true)
		document.getElementById("dateSearchTable").style.display="";
   else
		document.getElementById("dateSearchTable").style.display="none";
}

function flexible(){
   if(document.getElementById("flexibleCheckBox").checked==true){
		document.getElementById("flexibleTable1").style.display="";
		document.getElementById("flexibleTable2").style.display="";
		document.getElementById("flexible_start_label").innerHTML="Flexible ";
		document.getElementById("flexible_end_label").innerHTML="Flexible ";
		document.getElementById("hiddenDatesType").value="range";
   }
   else{
		document.getElementById("flexibleTable1").style.display="none";
		document.getElementById("flexibleTable2").style.display="none";
		document.getElementById("flexible_start_label").innerHTML="";
		document.getElementById("flexible_end_label").innerHTML="";
		document.getElementById("hiddenDatesType").value="exact";
   }
}

function activatePriceTable(){
   if(document.getElementById("priceSearch").checked==true)
		document.getElementById("priceSearchTable").style.display="";
   else
		document.getElementById("priceSearchTable").style.display="none";
}

function activateLocationTable(){
   if(document.getElementById("locationSearch").checked==true)
		document.getElementById("locationSearchTable").style.display="";
   else
		document.getElementById("locationSearchTable").style.display="none";
}

function activateActivitiesTable(){
   if(document.getElementById("activitiesSearch").checked==true)
		document.getElementById("activitiesSearchTable").style.display="";
   else
		document.getElementById("activitiesSearchTable").style.display="none";
}

function activateRestrictionsTable(){
   if(document.getElementById("restrictionsSearch").checked==true)
		document.getElementById("restrictionsSearchTable").style.display="";
   else
		document.getElementById("restrictionsSearchTable").style.display="none";
}

function activatePetsTable(){
   if(document.getElementById("petsSearch").checked==true)
		document.getElementById("petsSearchTable").style.display="";
   else
		document.getElementById("petsSearchTable").style.display="none";
}

function activateSmokingTable(){
   if(document.getElementById("smokingSearch").checked==true)
		document.getElementById("smokingSearchTable").style.display="";
   else
		document.getElementById("smokingSearchTable").style.display="none";
}

function activateExactDatesTable(){
    document.getElementById("exactDateSearchTable").style.display="";
	document.getElementById("rangeDateSearchTable").style.display="none";
	document.getElementById("hiddenDatesType").value="exact";
}

function activateRangeDatesTable(){
	document.getElementById("exactDateSearchTable").style.display="none";
	document.getElementById("rangeDateSearchTable").style.display="";
	document.getElementById("hiddenDatesType").value="range";
}

function activateTravelDistanceTable(){
	document.getElementById("travelDistanceSearchTable").style.display="";
	document.getElementById("locationSearchTable").style.display="none";
	document.getElementById("hiddenDistanceType").value="travelDistanceSearch";
}


function activateFeaturesTable(){
   if(document.getElementById("featuresSearch").checked==true)
		document.getElementById("featuresSearchTable").style.display="";
   else
		document.getElementById("featuresSearchTable").style.display="none";
}

function activateSummerActivitiesTable(){
    document.getElementById("summerActivitiesSearchTable").style.display="";
	document.getElementById("winterActivitiesSearchTable").style.display="none";
	document.getElementById("hiddenActivitiesType").value="summer";
}

function activateWinterActivitiesTable(){
	document.getElementById("winterActivitiesSearchTable").style.display="";
	document.getElementById("summerActivitiesSearchTable").style.display="none";
	document.getElementById("hiddenActivitiesType").value="winter";
}

function stringToDate(dateString){
  var outDate;
  if(dateString.substring(5,6)=="0")
     outDate = new Date(dateString.substring(0,4), parseInt(dateString.substring(6,7))-1, dateString.substring(8,10));
  else
  	 outDate = new Date(dateString.substring(0,4), parseInt(dateString.substring(5,7))-1, dateString.substring(8,10));
  return outDate;
}

function load(){
   document.getElementById("error_message").innerHTML="";
    document.getElementById("hiddenDatesType").value="exact";
    var today_date = new Date();
    var add_0_m="";
    if(parseInt(today_date.getUTCMonth()+1)<10)
    	add_0_m="0";
	var add_0_d="";
    if(parseInt(today_date.getUTCDate())<10)
    	add_0_d="0";
 
    //document.getElementById("from_exact_date").value=today_date.getUTCFullYear()+'-'+add_0_m+(today_date.getUTCMonth()+1)+'-'+add_0_d+today_date.getUTCDate();
    today_date.setMonth(today_date.getMonth()+3);
    if(parseInt(today_date.getUTCMonth()+1)<10)
    	add_0="0";
    //document.getElementById("to_exact_date").value=today_date.getUTCFullYear()+'-'+add_0_m+(today_date.getUTCMonth()+1)+'-'+add_0_d+today_date.getUTCDate();
}


function find3(search_type){
    var validate=true;
    var link="";
	document.getElementById("error_message").innerHTML="";
	
	if(search_type=='regular'){

	if(document.getElementById("locationSearch").checked==true){
		link=link+"&travelDistanceSearch=N&travelDurationSearch=N&locationSearch=Y";
				var province=document.getElementById("province").value;
				var region=document.getElementById("region").value;
				link=link+"&province="+province+"&region="+region;
				
				/*if(region==""){
					document.getElementById("error_message").innerHTML="Please select \"Region\"";
					validate=false;
				}
				*/
	}
	else
		link="&travelDistanceSearch=N&travelDurationSearch=N&locationSearch=N";
    }
    else{
        mgr.clearMarkers();
        link="&travelDistanceSearch=N&travelDurationSearch=N&locationSearch=Y&region=0&province="+document.getElementById("province").value;
    }
			
	if(document.getElementById("cottageTypeSearch").checked==false || (document.getElementById("private_cottage").checked==true && document.getElementById("semi_private_cottage").checked==true && document.getElementById("resort_cottage").checked==true))
		link=link+"&cottageTypeSearch=N";
	else{
		if(document.getElementById("private_cottage").checked==false && document.getElementById("semi_private_cottage").checked==false && document.getElementById("resort_cottage").checked==false){	
			document.getElementById("error_message").innerHTML="Please provide at least one cottage type<br>";
			validate=false;
		}
		else{
			link=link+"&cottageTypeSearch=Y";
			if(document.getElementById("private_cottage").checked==true)
				link=link+"&private_cottage=Y";	
			else
				link=link+"&private_cottage=N";
			if(document.getElementById("semi_private_cottage").checked==true)
				link=link+"&semi_private_cottage=Y";
			else
				link=link+"&semi_private_cottage=N";	
			if(document.getElementById("resort_cottage").checked==true)
				link=link+"&resort_cottage=Y";	
			else
				link=link+"&resort_cottage=N";	
		}		
	}
	
	if(document.getElementById("dateSearch").checked==true){
		if(document.getElementById("hiddenDatesType").value=="exact"){
			link=link+"&exactDateSearch=Y&rangeDateSearch=N";
			var from_exact_date=document.getElementById("from_exact_date").value;
			var to_exact_date=document.getElementById("to_exact_date").value;
			link=link+"&from_exact_date="+from_exact_date+"&to_exact_date="+to_exact_date;
			
			if(from_exact_date.length<1){
				document.getElementById("error_message").innerHTML="Please provide \"Start date\"<br>";
				validate=false;
			}
			else if(to_exact_date.length<1){
				document.getElementById("error_message").innerHTML="Please provide \"End date\"<br>";
				validate=false;
			}
			
		}
		else if(document.getElementById("hiddenDatesType").value=="range"){
			link=link+"&rangeDateSearch=Y&exactDateSearch=N";
			var from_range_date=document.getElementById("from_exact_date").value;
			var to_range_date=document.getElementById("to_exact_date").value;
			var number_of_days=document.getElementById("number_of_days").value;
			
			var from_range_date_Date = stringToDate(from_range_date);
			var to_range_date_Date = stringToDate(to_range_date);
			var days_between =Math.round(Math.abs((to_range_date_Date.getTime()-from_range_date_Date.getTime()))/(1000*60*60*24));
			 
			
			link=link+"&from_range_date="+from_range_date+"&to_range_date="+to_range_date+"&number_of_days="+number_of_days;
			
			if(from_range_date.length<1){
				document.getElementById("error_message").innerHTML="Please provide \"Range Start date\"<br>";
				validate=false;
			}
			else if(to_range_date.length<1){
				document.getElementById("error_message").innerHTML="Please provide \"Range End date\"<br>";
				validate=false;
			}
			else if(validateNumber(number_of_days)==false || parseInt(number_of_days.length)<1){
				document.getElementById("error_message").innerHTML="\"Min number of days\" should be positive number<br>";
				validate=false;
			}
			else if(days_between<parseInt(number_of_days)){
				document.getElementById("error_message").innerHTML="\"Min number of days\" should be less or equal to dates range<br>";
				validate=false;
			}
		}
		else{
			document.getElementById("error_message").innerHTML="Please select Exact or Range dates<br>";
			validate=false;		
		}
	}
	else
		link=link+"&rangeDateSearch=N&exactDateSearch=N";

	

	if(document.getElementById("priceSearch").checked==true){
		link=link+"&priceSearch=Y";
		var maximum_price=document.getElementById("maximum_price").value;
		var minimum_price=document.getElementById("minimum_price").value;
		link=link+"&maximum_price="+maximum_price+"&minimum_price="+minimum_price;
		
		if(maximum_price.length==0 && minimum_price.length==0){
			document.getElementById("error_message").innerHTML="Please provide Max or Min total price<br>";
			validate=false;
		}
		else if(maximum_price.length>0 && validateNumber(maximum_price)==false){
			document.getElementById("error_message").innerHTML="\"Max total price\" should be positive number<br>";
			validate=false;
		}		
		else if(minimum_price.length>0 && validateNumber(minimum_price)==false){
			document.getElementById("error_message").innerHTML="\"Min total price\" should be positive number<br>";
			validate=false;
		}
		else if(maximum_price.length>0 && minimum_price.length>0 && parseInt(maximum_price)<=parseInt(minimum_price)){
			document.getElementById("error_message").innerHTML="Max price should be greater than Min price<br>";
			validate=false;
		}
	}
	else
		link=link+"&priceSearch=N";

	if(document.getElementById("featuresSearch").checked==true){
		link=link+"&featuresSearch=Y";
		var private_waterfront="";
		if(document.getElementById("private_waterfront").checked==true)
			private_waterfront="Y";
		var deck="deck";
		if(document.getElementById("deck").checked==true)
			deck="Y";
		var fireplace = "";
		if(document.getElementById("fireplace").checked==true)
			fireplace="Y";
		var sand_beach="";
		if(document.getElementById("sand_beach").checked==true)
			sand_beach="Y";
		var hot_tab="";
		if(document.getElementById("hot_tab").checked==true)
			hot_tab="Y";
		var sauna="";
		if(document.getElementById("sauna").checked==true)
			sauna="Y";
		link=link+"&private_waterfront="+private_waterfront+"&deck="+deck+"&fireplace="+fireplace+"&sand_beach="+sand_beach+"&hot_tab="+hot_tab+"&sauna="+sauna;
	}
	else
		link=link+"&featuresSearch=N";
    
    if(search_type=='regular'){
	if(document.getElementById("activitiesSearch").checked==true){	
		if(document.getElementById("hiddenActivitiesType").value=="summer"){
			link=link+"&summerActivitiesSearch=Y&winterActivitiesSearch=N";

			var golfing="";
			if(document.getElementById("golfing").checked==true)
				golfing="Y";
			var fishing="";
			if(document.getElementById("fishing").checked==true)
				fishing="Y";
			var hunting="";
			if(document.getElementById("hunting").checked==true)
				hunting="Y";
			var canoeing="";
			if(document.getElementById("canoeing").checked==true)
				canoeing="Y";
			var kayaking="";
			if(document.getElementById("kayaking").checked==true)
				kayaking="Y";
			var boating="";
			if(document.getElementById("boating").checked==true)
				boating="Y";
			var mountain_biking="";
			if(document.getElementById("mountain_biking").checked==true)
				mountain_biking="Y";
			var atv="";
			if(document.getElementById("atv").checked==true)
				atv="Y";

			link=link+"&golfing="+golfing+"&fishing="+fishing+"&hunting="+hunting+"&canoeing="+canoeing+"&kayaking="+kayaking+"&boating="+boating+"&mountain_biking="+mountain_biking+"&atv="+atv;
		}
		else if(document.getElementById("hiddenActivitiesType").value=="winter"){
			link=link+"&winterActivitiesSearch=Y&summerActivitiesSearch=N";
			var downhill_sking="";
			if(document.getElementById("downhill_sking").checked==true)
				downhill_sking="Y";
			var country_sking="";
			if(document.getElementById("country_sking").checked==true)
				country_sking="Y";
			var snowmobiling="";
			if(document.getElementById("snowmobiling").checked==true)
				snowmobiling="Y";
			link=link+"&downhill_sking="+downhill_sking+"&country_sking="+country_sking+"&snowmobiling="+snowmobiling;
		}
		else{
			document.getElementById("error_message").innerHTML="Please select Summer or Winter Acitivities<br>";
			validate=false;
		}
	}
	else
		link=link+"&summerActivitiesSearch=N&winterActivitiesSearch=N";
	}
	else
	    link=link+"&summerActivitiesSearch=N&winterActivitiesSearch=N";
	
	if(document.getElementById("restrictionsSearch").checked==true){
		var max_people=document.getElementById("max_people").value;

		link=link+"&max_people="+max_people;
		if(validateNumber(max_people)==false){
			document.getElementById("error_message").innerHTML="\"Number of people\" should be positive number<br>";
			validate=false;
		}	
	}
	else 
		link=link+"&max_people=0";
	
	if(document.getElementById("petsSearch").checked==true){
		if(document.getElementById("pets_group").value!="Pets allowed" && document.getElementById("pets_group").value!="Pets not allowed"){
			document.getElementById("error_message").innerHTML="Please select Pets option<br>";
			validate=false;
		}
		else if(document.getElementById("pets_group").value=="Pets allowed")
			link=link+"&pets_allowed=Y";
		else if(document.getElementById("pets_group").value=="Pets not allowed")
			link=link+"&pets_allowed=N";	
	}
	else
		link=link+"&pets_allowed=D";
		
	if(document.getElementById("smokingSearch").checked==true){
		if(document.getElementById("smoking_group").value!="Smoking allowed" && document.getElementById("smoking_group").value!="Smoking not allowed"){
			document.getElementById("error_message").innerHTML="Please select Smoking option<br>";
			validate=false;
		}
		else if(document.getElementById("smoking_group").value=="Smoking allowed")
			link=link+"&smoking_allowed=Y";
		else if(document.getElementById("smoking_group").value=="Smoking not allowed")
			link=link+"&smoking_allowed=N";	
	}
	else
		link=link+"&smoking_allowed=D";

    if(search_type=='regular')
		link=link+"&sort="+document.getElementById("sort").value;
    else
		link=link+"&sort='random'";
	

	if(validate==true){	
	    var oXmlHttp = createXMLHttp();
	    if(search_type=='regular'){
		document.getElementById("searchResults").innerHTML="<div style='margin-left:200px;margin-top:170px'><IMG src='img/loading.gif' /></div>";	
		
    	oXmlHttp.open("get", 'requestManager?action=search'+link+'&randomdata='+Date(), true);
    	oXmlHttp.onreadystatechange = function () {
        	if (oXmlHttp.readyState == 4) {
           	 if (oXmlHttp.status == 200) {
           	 		var output = oXmlHttp.responseText;
            	    document.getElementById("searchResults").innerHTML=output;
            	} else {
             	   document.getElementById("searchResults").innerHTML="An error occurred: "+ oXmlHttp.statusText;
            	}
        	}
   	 	}
     }else{ 
        document.getElementById("loading").innerHTML="<IMG src='img/loading.gif'  />";
        var link_final='requestManager?action=displayCottagesOnMap'+link+'&randomdata='+Date();
    	oXmlHttp.open("get", link_final , true);
    	oXmlHttp.onreadystatechange = function () {
        	if (oXmlHttp.readyState == 4) {
           	 if (oXmlHttp.status == 200) {      
           	        batch = [];  	 
           	        //alert(oXmlHttp.responseText);
           	        //document.getElementById("output").value=oXmlHttp.responseText;
           	        if(oXmlHttp.responseText.indexOf("nocottageavailable")<0){
                    	eval(oXmlHttp.responseText);
                   		window.setTimeout(setupMap, 0);
                   		document.getElementById("loading").innerHTML="";
                    } else
                        document.getElementById("error_message").innerHTML="No cottage available for your search<br>";
                        document.getElementById("loading").innerHTML="";
            	} else {
             	   alert(oXmlHttp.statusText);
            	}
        	}
        	
   	 	};
    	
      }
      oXmlHttp.send(null);
    }
    else{
       if(search_type=='regular')
    	  location.href="#Top";
    }
   
}

