//javascript document

  function initialize() {
   	// set form type
	//checkSearchType	();
	var britain = new google.maps.LatLng(54.5,-4);
	var mapOptions = {
      zoom: 4,

	  disableDefaultUI: true, 
	  scaleControl: true,
	  navigationControl : true,
	  center: britain,
	  mapTypeId: google.maps.MapTypeId.TERRAIN
    };
    map = new google.maps.Map(document.getElementById("map_canvas"),
        mapOptions);
	distanceWidget = new DistanceWidget(map);
	var sizerposition = new google.maps.LatLng(map.getCenter().lat(),map.getCenter().lng()+8.5);
	
	distanceWidget.set('sizer_position',sizerposition);
	
	addLatLng(distanceWidget);
	
	google.maps.event.addListener(distanceWidget, 'distance_changed', function() {
		addLatLng(distanceWidget);
		});
	google.maps.event.addListener(distanceWidget, 'position_changed', function() {
		addLatLng(distanceWidget);
		});
    //	searchLocations();
	//document.getElementById("paneltab").click(); 
	//document.getElementById("mappanel").click(); 
  }
  
function checkSearchType (){
	if (document.getElementById('searchtype_1').checked == true)
	{

		document.getElementById('duration').value = 15;		
		document.getElementById('duration').disabled = true;
		document.getElementById('daysspread').disabled = false;
		document.getElementById('daysspread').value = daysspread;
	}
	else {

		document.getElementById('duration').disabled = false;
		document.getElementById('duration').value = duration;
		document.getElementById('daysspread').disabled = true;
		document.getElementById('daysspread').value = 0;
	}
	daysspread = document.getElementById('daysspread').value;
	duration = document.getElementById('duration').value;
}
  
	function addLatLng(widget){
		var info = document.getElementById('info');
		var roundedlat = (Math.round(widget.get('position').lat()*1000)/1000);
		var roundedlng = Math.round(widget.get('position').lng()*1000)/1000;
		var distmiles = widget.get('distance')*5/8;
		var roundeddist = Math.round(distmiles*10)/10;
		info.innerHTML = 'Search Position: Lat: ' + roundedlat +' Lng: '+ roundedlng + '<br/>';
		document.getElementById ('dist').value = roundeddist;
		document.getElementById ('lat').value = roundedlat;
		document.getElementById ('lng').value = roundedlng;
		document.getElementById ('dist').disabled = true;
	}

function processDate(datestring, daysspread){
  	var spread = parseInt(daysspread);
	var today = new Date();
	var temp = new Date();
	var tomorrow = new Date();
	tomorrow.setDate(today.getDate()+1);
	var startdate = new Date();
	startdate.setDate(today.getDate()+1); //default start date
	var arDate=datestring.split("/");
	var chosen_date = new Date(arDate[2],arDate[1]-1,arDate[0]);
	var enddate = new Date(arDate[2],arDate[1]-1,arDate[0]);
	if ((temp.setDate(chosen_date.getDate() - spread)) > tomorrow){
		startdate.setDate(chosen_date.getDate()-spread);  // changed start date default on condition
	} 
	enddate.setDate(chosen_date.getDate()+spread);
}

function getStartDateStart (chosendate,daysspread){
	var spread = parseInt(daysspread);
	var today = new Date();
	var temp = new Date();
	var tomorrow = new Date();
	tomorrow.setDate(today.getDate()+1);
	var startdate = new Date();
	startdate.setDate(today.getDate()+1); //default start date
	startdate.setHours(0);
	startdate.setMinutes(0);
	startdate.setSeconds(0);
	startdate.setMilliseconds(0);
	var arDate=chosendate.split("/");
	var chosen_date = new Date(arDate[2],arDate[1]-1,arDate[0]);
	temp.setTime(chosen_date);
	temp.setDate(chosen_date.getDate()-spread);
	if (temp.getTime() > tomorrow.getTime()){
		
		startdate.setTime(chosen_date.getTime());
		startdate.setDate(chosen_date.getDate()-spread);

	} 

	return startdate;
	
}

function getStartDateEnd (chosendate,daysspread){
	var spread = parseInt(daysspread);
	var arDate=chosendate.split("/");
	var chosen_date = new Date(arDate[2],arDate[1]-1,arDate[0]);
	var enddate = new Date(arDate[2],arDate[1]-1,arDate[0]);
	enddate.setDate(chosen_date.getDate()+spread);
	return enddate;
}

function formatFormDate (chosendate){
	var arDate=chosendate.split("/");
	var chosen_date = new Date(arDate[2],arDate[1]-1,arDate[0]);
	return chosen_date;
}

function getUrlDateString (date){
	// takes a javascript date
	var urldatestring = date.getFullYear()+"%2F"+twoDigit(date.getMonth()+1)+"%2F"+twoDigit(date.getDay()+1);
	return urldatestring;
}

function javascriptDatetoMysql (date){

	var year = date.getFullYear();
	var month = date.getMonth();
	month = month + 1;
	month = twoDigit(month);
	var day = date.getDate();
	day = twoDigit (day);
	var mysqldate = year+'-'+month+'-'+day;
	return mysqldate;
}	

function mysqlDatetoJavascriptDate (datestring){ //date, splitting string e.g./ or -
	var mysqldate=datestring.split('-');
	var javascriptdate = new Date(mysqldate[0],mysqldate[1]-1,mysqldate[2]);
	return javascriptdate;
	}

function displayNumber (number){
	var displayNumber = number;
	if (parseInt(number)<= 9){
		displayNumber = " " + number;
	}
	return displayNumber;
}

function twoDigit (num){
	if (parseInt(num)<= 9){
		num = "0"+num;
		return num;
	}
	return num;
}

var popupWindow = null;

function centeredPopup(url,winName,w,h,scroll){
LeftPosition = (screen.width) ? (screen.width-w)/2 : 0;
TopPosition = (screen.height) ? (screen.height-h)/2 : 0;
settings =
'height='+h+',width='+w+',top='+TopPosition+',left='+LeftPosition+',scrollbars='+scroll+',resizable=yes,location=no,menubar=no,menubar=no,status=no';


popupWindow = window.open(url,winName,settings)
}




function truncate(n) { 
  return Math[n > 0 ? "floor" : "ceil"](n); 
} 

function searchLocations() {
	document.getElementById('results_header').style.display = 'block';
	document.getElementById('exactmatchheader').innerHTML="";
	document.getElementById('closematchheader').innerHTML="";
	document.getElementById('exactmatchdetails').innerHTML="";
	document.getElementById('closematchdetails').innerHTML="";
	document.getElementById('exactmatchfooter').innerHTML="";
	document.getElementById('closematchfooter').innerHTML="";

	var countresults = 0;
	var lat=document.getElementById('lat').value;
	var lng=document.getElementById('lng').value;
	var dist=document.getElementById('dist').value;
	var formdate=document.getElementById('chosen_date').value;
	var chosen_date=formatFormDate(formdate);
	var daysspread = document.getElementById('daysspread').value;
	var patt1=/[\s,]+/;
	//var keywords = document.getElementById('keyword').value.split(patt1);
	var startdate = new Date();
	var enddate = new Date();
	startdate = getStartDateStart(formdate,daysspread);
	enddate = getStartDateEnd(formdate,daysspread);
	var proximity_string = "";
	var start_date_start = "";
	var people_string = "";
	var keyword_string="";
	var location_string="";
	qs='start_date_start='+javascriptDatetoMysql(startdate)+'&start_date_end='+javascriptDatetoMysql(enddate)+'&search_date='+javascriptDatetoMysql(chosen_date);
	if (document.getElementById('use_map').checked==1) {
		proximity_string='&order=proximity&lat='+lat+'&long='+lng+'&geo_distance='+dist;
		qs=qs+proximity_string;
		}
	else {
		if (document.getElementById('location').value!='') {
			location_string='&location='+document.getElementById('location').value;
			qs=qs+location_string;
		}
	}
	if (document.getElementById('product').value!='Any') {
		keyword_string='&'+document.getElementById('product').value;
		qs=qs+keyword_string;
	}
	if (document.getElementById('adults').value!='') {
		var adults = '&adults='+document.getElementById('adults').value;
		qs=qs+adults;
	}
	if (document.getElementById('children').value!='') {
		var children ='&children='+document.getElementById('children').value;
		qs=qs+children;
	}
	if (document.getElementById('duration').value!='') {
		var duration ='&duration='+document.getElementById('duration').value;
		qs=qs+duration;
	}

	var searchUrl = "http://www.gocampinguk.co.uk/tourcms-calls/results.php?"+qs;
	
	document.getElementById("exactmatchheader").innerHTML='<div style="margin-left:auto; margin-right:auto; text-align: center; padding-top:10px;"><img src="http://www.gocampinguk.co.uk/tourcms-calls/ajax-loader.gif" alt="Searching..." /><br/>Searching for holidays...please wait</div>';
	downloadUrl(searchUrl, function(data) {
		var holidays = data.documentElement.getElementsByTagName("holiday");
		document.getElementById("exactmatchheader").innerHTML='';
		var exactHolidayDetails=new Array();
		var closeHolidayDetails=new Array();
		var exactmatches= 0;
		var closematches= 0;
		for (var i = 0; i < holidays.length; i++) {
			 //loop through entire XML file (all the holiday tags)
				var tour_name=holidays[i].getElementsByTagName("tour_name")[0].childNodes[0].nodeValue;
				var location=holidays[i].getElementsByTagName("location")[0].childNodes[0].nodeValue;
				var summary=holidays[i].getElementsByTagName("summary")[0].childNodes[0].nodeValue;
				var shortdesc=holidays[i].getElementsByTagName("shortdesc")[0].childNodes[0].nodeValue;
				var book_url=unescape(holidays[i].getElementsByTagName("book_url")[0].childNodes[0].nodeValue);
				
				var tour_url_tracked=unescape(holidays[i].getElementsByTagName("tour_url_tracked")[0].childNodes[0].nodeValue);
				var thumbnail_image=unescape(holidays[i].getElementsByTagName("thumbnail_image")[0].childNodes[0].nodeValue);
				
			//if exact holiday match do this...
			if (holidays[i].getAttribute('exact')=='yes'){
				var request_start_date=holidays[i].getElementsByTagName("request_start_date")[0].childNodes[0].nodeValue;
				var request_end_date=holidays[i].getElementsByTagName("request_end_date")[0].childNodes[0].nodeValue;
				var request_duration=holidays[i].getElementsByTagName("request_duration")[0].childNodes[0].nodeValue;
				var price_display=holidays[i].getElementsByTagName("price_display")[0].childNodes[0].nodeValue;
				
				exactHolidayDetails[exactmatches]='<div class="result_exactmatch">';
				exactHolidayDetails[exactmatches]+='<div id="results_exactmatch_details"><div class="results_exactmatch_image" ><img class="results_exactmatch_image" src="'+thumbnail_image+'" alt="image of '+summary+'"/></div><div class="results_exactmatch_tour_name"><h3>'+tour_name+'</h3></div><div class="results_exactmatch_location">'+location+'</div><div class="results_exactmatch_summary">'+shortdesc+'</div><table width="100%" class="exact_match_table"><tr><td width="50%">Arrival date: '+mysqlDatetoJavascriptDate(request_start_date).toDateString()+'</td><td width="50%">Duration: '+request_duration+' night(s)</td></tr><tr><td width="50%">Departure date: '+mysqlDatetoJavascriptDate(request_end_date).toDateString()+'</td><td width="50">&nbsp;</td></tr></table><div class = "results_exactmatch_price">Available for '+price_display+'</div><div class = "tour_details"><a class = "tour_details" href="'+tour_url_tracked+'" >Details</a></div><div class = "booking_details" ><a class = "booking_details" href="'+book_url+'" onclick="centeredPopup(this.href,\'Booking and Availability\',\'850\',\'500\',\'yes\');return false">Online Booking</a></div></div> </div>';
		
				exactmatches++;
				}
			else {
				//process inexact matches
				var from_price_display=holidays[i].getElementsByTagName("from_price_display")[0].childNodes[0].nodeValue;
				closeHolidayDetails[closematches]='<div class="result_closematch">';
				//get dates HTML (var html)
				var datesHTML='<div class="datestable"><p>The following dates indicate available arrival dates - various holiday durations may be possible.</p><table cellpadding="2">';
				for (var j = 0; j < holidays[i].getElementsByTagName("date").length; j++) {
					var availableDate=holidays[i].getElementsByTagName("date")[j].childNodes[0].nodeValue;
					var jsdate = mysqlDatetoJavascriptDate(availableDate);
					var urldatestring = twoDigit(jsdate.getDate())+"%2F"+twoDigit(jsdate.getMonth()+1)+"%2F"+jsdate.getFullYear();
					var bookingString = book_url+'&startdate='+urldatestring;
					datesHTML+='<tr><td>'+jsdate.toDateString()+'</td><td><a href="'+bookingString+'" onclick="centeredPopup(this.href,\'Booking and Availability\',\'850\',\'500\',\'yes\');return false">Check durations and book</a></td></tr>';
				}
				datesHTML+='</table></div>';
		
				closeHolidayDetails[closematches]+='<div id="results_closematch_details"><div class="results_closematch_image" style="float:left;"><img class="results_closematch_image" src="'+thumbnail_image+'" alt="image of '+summary+'"/></div><div class="results_closematch_tour_name"><h3>'+tour_name+'</h3></div><div class="results_closematch_location">'+location+'</div><div class="results_closematch_summary">'+summary+'</div><div class = "results_closematch_price">From '+from_price_display+'</div><div class = "tour_details"><a class = "tour_details" href="'+tour_url_tracked+'">Details</a></div><div class = "booking_details"><a class = "booking_details" href="'+book_url+'" onclick="centeredPopup(this.href,\'Booking and Availability\',\'850\',\'500\',\'yes\');return false">Online Booking</a></div><div class="slick-slide"><a id="slick-toggle'+closematches+'"  class="slick-slide" href="#">Show Availability</a></div><div id="slickbox'+closematches+'" class = "dates">'+datesHTML+'</div></div></div>';

				closematches++;
				
			}

			
		}
	
	closematchcurrentpage=1;
	exactmatchcurrentpage=1;
	document.getElementById("exactmatchheader").innerHTML="    <a class='info'><span>Click this title to show or hide results</span><h2  class='art-postmetadataheader tourresultsheader'>We have found "+exactmatches+ " holidays which match your search</h2></a>";
	document.getElementById("closematchheader").innerHTML="<a class='info'><span>Click this title to show or hide results</span><h2 class='art-postmetadataheader tourresultsheader'>We have found "+closematches+ " holidays close to your search</h2></a>";
	changePage (exactHolidayDetails, "exactmatch", exactmatchcurrentpage)
	changePage (closeHolidayDetails, "closematch", closematchcurrentpage)
	//populate the close matches details
		$("#exactmatchheader").click(function(event){
			event.stopImmediatePropagation();
			$("#exactmatchcontent").slideToggle("slow");
			return false;
		});
		$("#closematchheader").click(function(event){
			event.stopImmediatePropagation();
			$("#closematchcontent").slideToggle("slow");
			return false;
		});

$("#closematchcontent").hide();
	})
}			
			
function changePage (results, divsuffix, page){
	
	dispayResults(divsuffix, results, page);
	//populate the close matches footer
	
	createPagingHTML(results, divsuffix,page);
}

function createPagingHTML(results, divsuffix, currentpage){
	//var html="";
	//document.getElementById('hotelresults').appendChild(closeHolidayDetails);
	
	if (results.length==0){
		html="<p>Sorry we can't find any near date matches either</p><p>Try broadening your search criteria</p>"
	}
	else {
		var resultsperpage=5;
		pages = truncate((results.length-1)/resultsperpage)+1;  //pages is the total number of pages
		if (currentpage>1){
			var html='<div class="tour_page_nav"><p class="tour_page_p"><span><a class="pageNav" id="firstNav'+divsuffix+'" href="#">First</a></span>&nbsp;';
			html+='<span><a class="pageNav" id="prevNav'+divsuffix+'" href="#">Prev</a></span>&nbsp;';
		}
		else {
			var html='<div class="tour_page_nav"><p class="tour_page_p"><span class="pageNav" id="firstNav'+divsuffix+'">First</span>&nbsp;';
			html+='<span class="pageNav" id="prevNav'+divsuffix+'">Prev</span>&nbsp;';
		}
		lowestpage=1;
		if (currentpage-2>lowestpage){lowlimit=currentpage-2;}else{lowlimit=lowestpage;}
		if (currentpage+2<pages){highlimit=currentpage+2;}else{highlimit=pages;}
		
		for (var j = lowlimit; j <= highlimit; j++) {
			
			if (j==currentpage){
				html+='<span class="pageNav currentNav" id="Nav'+divsuffix+j+'">'+j+'</span>&nbsp;';}
			else {
				html+='<span><a class="pageNav currentNav" id="Nav'+divsuffix+j+'" href="#">'+j+'</a></span>&nbsp;';
			}
		}
		if (currentpage!=pages){
			html+='<span><a class="pageNav" id="nextNav'+divsuffix+'" href="#">Next</a></span>&nbsp;';
			html+='<span><a class="pageNav" id="lastNav'+divsuffix+'" href="#">Last</a></span></div>';
		}
		else {
			html+='<span class="pageNav" id="nextNav'+divsuffix+'">Next</span>&nbsp;';
			html+='<span class="pageNav" id="lastNav'+divsuffix+'">Last</span></p></div>';
		}

	}

	document.getElementById(divsuffix+"footer").innerHTML=html;
	//Make pages responsive to click events
		$("#firstNav"+divsuffix).click(function(event) {
		event.preventDefault();
		
		
		//$(this).closest("div").next().children("div").toggle("slow");
		currentpage= 1;
		changePage(results, divsuffix, currentpage);
	});

		$(document.getElementById("lastNav"+divsuffix)).css("visibility", "visible").click(function(event) {
		event.preventDefault();
		//$(this).closest("div").next().children("div").toggle("slow");
		currentpage=pages;
		changePage(results, divsuffix, currentpage);
	});
		$(document.getElementById("nextNav"+divsuffix)).css("visibility", "visible").click(function(event) {
		event.preventDefault();
		//$(this).closest("div").next().children("div").toggle("slow");
		if (currentpage<pages) currentpage = parseInt(currentpage)+1;
		changePage(results, divsuffix, currentpage);
	});
		$(document.getElementById("prevNav"+divsuffix)).css("visibility", "visible").click(function(event) {
		event.preventDefault();
		//$(this).closest("div").next().children("div").toggle("slow");
		if (currentpage>1) currentpage = parseInt(currentpage)-1;
		changePage(results, divsuffix, currentpage);
	});
		for (var j = lowlimit; j <= highlimit; j++) {
			$(document.getElementById("Nav"+divsuffix+j)).css("visibility", "visible").click(function(event) {
			event.preventDefault();
			//$(this).closest("div").next().children("div").toggle("slow");
			currentpage=$(this).html();
			//if($(this).html()=="Show Availability")
			changePage(results, divsuffix, currentpage);
		});			
	}
}

function dispayResults(divsuffix, resultsToDisplay, currentpage){
	var divToDisplayIn=divsuffix+"details";
	document.getElementById(divToDisplayIn).innerHTML="";
	var resultsperpage=5;
	var highlimit = currentpage*resultsperpage;
	var lowlimit = ((currentpage*resultsperpage)-resultsperpage);  //will return results 0-5 if resultperpage is 5 and currentpage is 1
	for (var j = lowlimit; j < highlimit; j++) {
	//alert ("lowl "+lowlimit+"  cur pg "+currentpage+"  j  "+j);	
	//alert (resultsToDisplay[j]);
		if (resultsToDisplay[j]!=null){
				//document.getElementById(divToDisplayIn).appendChild(resultsToDisplay[j-1]);
				var div = document.createElement('div');
				div.innerHTML = resultsToDisplay[j];
   				document.getElementById(divToDisplayIn).appendChild(div);
				}
		// Show the "Show Availability" links and add a click event
		
	}
	$("a.slick-slide").css("visibility", "visible").click(function(event) {
			event.preventDefault();
			//$(this).closest("div").next().children("div").toggle("slow");

			$(this).closest("div").next().toggle("slow");
			$(this).closest("div").next().addClass("dates");
			if($(this).html()=="Show Availability")
				$(this).html("Hide Availability");
			else
				$(this).html("Show Availability");
		});
		// Hide the availability - default position
		$("div.dates").hide();
		$("div.dates").css("clear","left");
		$("div.dates").css("padding","2px");
		$("div.dates tr:even").css("background-color", "#fefefe");
		$(".colorbox").colorbox({iframe:true, width:"80%", height:"80%", scrolling:true, opacity:0.5});
		$(".colorbox2").colorbox({iframe:true, width:"800px", height:"80%", scrolling:true, opacity:0.5});
		
		//create accordian
		
		
		
}

// toggles the slickbox on clicking the noted link  
/*			  $('.slick-slide').click(function() {
				$('div.dates').toggle(400);
				return false;
			  });
*/


$(document).ready(function() {

 // hides the slickbox as soon as the DOM is ready
  $('#slickbox').hide();
 // $(".colorbox").colorbox({iframe:true, width:"750px", height:"500px"});
 // shows the slickbox on clicking the noted link  
  $('#slick-show').click(function() {
    $('#slickbox').show('slow');
    return false;
  });
 // hides the slickbox on clicking the noted link  
  $('#slick-hide').click(function() {
    $('#slickbox').hide('fast');
    return false;
  });
 // toggles the slickbox on clicking the noted link  
  $('#slick-toggle').click(function() {
    $('#slickbox').toggle(400);
    return false;
  });

});
 
