

jQueryCode = function(){
	jQuery(document).ready(function($){

		if (jQuery('#widget-26152').length == 0){
			console.error("CampManager Widget DIV element not found (widget-26152).");
			return;
		}

		varCalendarTxtColour = $('#widget-26152').data("calendar_txt_colour");
		varCalendarBgColour = $('#widget-26152').data("calendar_bg_colour");
		
		varBookButtonTxtColour = $('#widget-26152').data("book_button_txt_colour");
		varBookButtonBgColour = $('#widget-26152').data("book_button_bg_colour");
		varBookButtonRadius = $('#widget-26152').data("book_button_radius");
		varLabelColour = $('#widget-26152').data("label_text_colour");		
		
		varString = "ctx=" + encodeURIComponent(varCalendarTxtColour) + "&cbg=" + encodeURIComponent(varCalendarBgColour) + "&btc=" + encodeURIComponent(varBookButtonTxtColour) + "&bbc=" + encodeURIComponent(varBookButtonBgColour) + "&br=" + encodeURIComponent(varBookButtonRadius) + "&lc=" + encodeURIComponent(varLabelColour);
		var css_link = jQuery("<link>", {rel: "stylesheet", type: "text/css", href: "https://bookings.campmanager.com/26152/External-Widget-Css/?" + varString});
	   	css_link.appendTo('head');  
		fnLoadWidget();
	});
	
	jQuery(document).on('mouseup touchend',function(e)
	{
		var container1 = jQuery("#widget-date-text");
		var container2 = jQuery("#idCalendarStartDate");
	
		if ((!container1.is(e.target) && container1.has(e.target).length === 0) && (!container2.is(e.target) && container2.has(e.target).length === 0))
		{
			container2.slideUp();
		}
	});
}
		
if(window.jQuery) jQueryCode();
else{   
    var script = document.createElement('script'); 
    document.head.appendChild(script);  
    script.type = 'text/javascript';
    script.src = "https://bookings.campmanager.com/Js/jquery-3.3.1.min.js";
    script.onload = jQueryCode;
}

var xmlHttpLoadWidget;
function fnLoadWidget()
{
	try{
		xmlHttpLoadWidget.abort();
	}catch(error){}

	if (jQuery('#widget-26152').length == 0){
		console.error("CampManager Widget DIV element not found (widget-26152).");
		return;
	}
	
	varDefaultBookingType = jQuery('#widget-26152').data("default_booking_type");
	varBookButtonText = jQuery('#widget-26152').data("book_button_text");
	
	try{xmlHttpLoadWidget.abort();}catch(error){}try{xmlHttpLoadWidget=new XMLHttpRequest();}catch (e){try{xmlHttpLoadWidget=new ActiveXObject("Msxml2.XMLHTTP");}catch (e){try{xmlHttpLoadWidget=new ActiveXObject("Microsoft.XMLHTTP");}catch (e){alert("Your browser does not support AJAX!");return false;}}}xmlHttpLoadWidget.onreadystatechange=function(){if(xmlHttpLoadWidget.readyState==4){
		document.getElementById('widget-26152').innerHTML 			= xmlHttpLoadWidget.responseText;
		fnSetAccommodation();
		fnLoadDurations();
	}}
	xmlHttpLoadWidget.open("GET","https://bookings.campmanager.com/26152/External-Widget/?type=" + varDefaultBookingType + "&bbt=" + encodeURIComponent(varBookButtonText) + "&btx=" + encodeURIComponent(varBookButtonTxtColour) + "&bbg=" + encodeURIComponent(varBookButtonBgColour) + "&d=" + Math.random(),true);
	xmlHttpLoadWidget.send(null); 
}

function fnSetAccommodation()
{
	fnCloseStartCalendar();
			
	try{
		document.getElementById('idBookingVehicleLength').style.display 			= 'none';
		document.getElementById('idtxtBookingVehicleLength').disabled 				= true; 
	}catch(e){}

	try{
		document.getElementById('idBookingAdults').style.display 					= 'none';
		document.getElementById('idtxtBookingAdults').disabled 						= true; 
	}catch(e){}

	try{
		document.getElementById('idBookingChildren').style.display 					= 'none';
		document.getElementById('idtxtBookingChildren').disabled 					= true; 
	}catch(e){}

	try{
		document.getElementById('idBookingInfants').style.display 					= 'none';
		document.getElementById('idtxtBookingInfants').disabled 					= true; 
	}catch(e){}

	try{
		document.getElementById('idBookingPets').style.display 						= 'none';
		document.getElementById('idtxtBookingPets').disabled 						= true; 
	}catch(e){}
	
	try{
		document.getElementById('idBookingCars').style.display 						= 'none';
		document.getElementById('idtxtBookingCars').disabled 						= true; 
	}catch(e){}

	try{
		document.getElementById('idBookingCars23').style.display 					= 'none';
		document.getElementById('idtxtBookingCars23').disabled 						= true; 
	}catch(e){}
	
	try{
		document.getElementById('idBookingAwning').style.display 					= 'none';
		document.getElementById('idtxtBookingAwning').disabled 						= true; 
	}catch(e){}
	
	try{
		document.getElementById('idBookingAwning23').style.display 					= 'none';
		document.getElementById('idtxtBookingAwning23').disabled 					= true; 
	}catch(e){}
	
	try{
		document.getElementById('idBookingElectric').style.display 					= 'none';
		document.getElementById('idtxtBookingElectric').disabled 					= true; 
	}catch(e){}
	
	try{
		document.getElementById('idBookingElectric23').style.display 				= 'none';
		document.getElementById('idtxtBookingElectric23').disabled 					= true; 
	}catch(e){}

	
	if(document.getElementById('idtxtBookingRentalTypeID').value.split(":")[0] == 23)
	{
		try{
			document.getElementById('idBookingAwning23').style.display 				= '';
			document.getElementById('idtxtBookingAwning23').disabled 				= false; 
		}catch(e){}
	
		try{
			document.getElementById('idBookingElectric23').style.display 			= '';
			document.getElementById('idtxtBookingElectric23').disabled 				= false; 
		}catch(e){}
		
		try{
			document.getElementById('idBookingAdults').style.display 				= '';
			document.getElementById('idtxtBookingAdults').disabled 					= false; 
		}catch(e){}
	
		try{
			document.getElementById('idBookingChildren').style.display 				= '';
			document.getElementById('idtxtBookingChildren').disabled 				= false; 
		}catch(e){}
	
		try{
			document.getElementById('idBookingInfants').style.display 				= '';
			document.getElementById('idtxtBookingInfants').disabled 				= false; 
		}catch(e){}

		try{
			document.getElementById('idBookingPets').style.display 					= '';
			document.getElementById('idtxtBookingPets').disabled 					= false; 
		}catch(e){}
		
		try{
			document.getElementById('idBookingCars23').style.display 				= '';
			document.getElementById('idtxtBookingCars23').disabled 					= false; 
		}catch(e){}
	}
	else if (document.getElementById('idtxtBookingRentalTypeID').value.split(":")[0] == 1)
	{		
		try{
			if (document.getElementById('idtxtBookingRentalTypeID').value.split(":")[1] != 5)
			{				
				document.getElementById('idBookingVehicleLength').style.display 		= '';
				document.getElementById('idtxtBookingVehicleLength').disabled 			= false; 
			}
		}catch(e){}

		try{
			document.getElementById('idBookingAwning').style.display 				= '';
			document.getElementById('idtxtBookingAwning').disabled 					= false; 
		}catch(e){}
	
		try{
			document.getElementById('idBookingElectric').style.display	 			= '';
			document.getElementById('idtxtBookingElectric').disabled 				= false; 
		}catch(e){}
		
		try{
			document.getElementById('idBookingAdults').style.display 				= '';
			document.getElementById('idtxtBookingAdults').disabled 					= false; 
		}catch(e){}
	
		try{
			document.getElementById('idBookingChildren').style.display 				= '';
			document.getElementById('idtxtBookingChildren').disabled 				= false; 
		}catch(e){}
	
		try{
			document.getElementById('idBookingInfants').style.display 				= '';
			document.getElementById('idtxtBookingInfants').disabled 				= false; 
		}catch(e){}

		try{
			document.getElementById('idBookingPets').style.display 					= '';
			document.getElementById('idtxtBookingPets').disabled 					= false; 
		}catch(e){}
		
		try{
			document.getElementById('idBookingCars').style.display 					= '';
			document.getElementById('idtxtBookingCars').disabled 					= false; 
		}catch(e){}
	}
	else
	{
		try{
			document.getElementById('idBookingAdults').style.display 				= '';
			document.getElementById('idtxtBookingAdults').disabled 					= false; 
		}catch(e){}
	
		try{
			document.getElementById('idBookingChildren').style.display 				= '';
			document.getElementById('idtxtBookingChildren').disabled 				= false; 
		}catch(e){}
	
		try{
			document.getElementById('idBookingInfants').style.display 				= '';
			document.getElementById('idtxtBookingInfants').disabled 				= false; 
		}catch(e){}
		
		try{
			document.getElementById('idBookingPets').style.display 					= '';
			document.getElementById('idtxtBookingPets').disabled 					= false; 
		}catch(e){}
	}	
}

function fnOpenStartCalendar()
{
	if(document.getElementById('idCalendarStartDate').style.display == 'none')
	{
		var strBookingStartDateDay 			= document.getElementById('idtxtBookingStartDateDay').value;
		var strBookingStartDateMonth 		= document.getElementById('idtxtBookingStartDateMonth').value;
		var strBookingStartDateYear 		= document.getElementById('idtxtBookingStartDateYear').value;

		fnStartCalendar(strBookingStartDateYear, strBookingStartDateMonth, strBookingStartDateDay, strBookingStartDateYear, strBookingStartDateMonth, strBookingStartDateDay);
	}
	else
	{
		jQuery('#idCalendarStartDate').slideUp(function(){
			try{
				fnPostDivHeight2();	    
			}catch(e){}	
		});			
	}
}

function fnCloseStartCalendar()
{
	document.getElementById('idCalendarStartDate').style.display = 'none';
}

function fnCalendarSelectStartDate(varDateYear, varDateMonth, varDateDay, varDateString)
{
	document.getElementById('idtxtBookingStartDateDay').value = varDateDay;
	document.getElementById('idtxtBookingStartDateMonth').value = varDateMonth;
	document.getElementById('idtxtBookingStartDateYear').value = varDateYear;
	document.getElementById('widget-date-text').innerHTML = varDateString
	
	fnCloseStartCalendar();
	fnLoadDurations(varDateYear, varDateMonth, varDateDay);
	
	try{
		fnPostDivHeight2();	    	
	}catch(e){}
}

function fnCalendarChangeStartDate(varDateYear, varDateMonth, varDateDay)
{
	var strBookingStartDateDay 			= document.getElementById('idtxtBookingStartDateDay').value;
	var strBookingStartDateMonth 		= document.getElementById('idtxtBookingStartDateMonth').value;
	var strBookingStartDateYear 		= document.getElementById('idtxtBookingStartDateYear').value;
	
	fnStartCalendar(strBookingStartDateYear, strBookingStartDateMonth, strBookingStartDateDay, varDateYear, varDateMonth);
}

var xmlHttpStartCalendar;
function fnStartCalendar(strBookingStartDateYear, strBookingStartDateMonth, strBookingStartDateDay, varDateYear, varDateMonth)
{
	try{
		xmlHttpStartCalendar.abort();
	}catch(error){}

	var strBookingStartDateYear 		= strBookingStartDateYear;
	var strBookingStartDateMonth 		= strBookingStartDateMonth;
	var strBookingStartDateDay 			= strBookingStartDateDay;
	var strCalendarStartDateYear		= varDateYear;
	var strCalendarStartDateMonth		= varDateMonth;
	
	try{xmlHttpStartCalendar.abort();}catch(error){}try{xmlHttpStartCalendar=new XMLHttpRequest();}catch (e){try{xmlHttpStartCalendar=new ActiveXObject("Msxml2.XMLHTTP");}catch (e){try{xmlHttpStartCalendar=new ActiveXObject("Microsoft.XMLHTTP");}catch (e){alert("Your browser does not support AJAX!");return false;}}}xmlHttpStartCalendar.onreadystatechange=function(){if(xmlHttpStartCalendar.readyState==4){

		document.getElementById('calendar-month-view').innerHTML 			= xmlHttpStartCalendar.responseText;
		document.getElementById('calendar-month-view').style.display 		= 'block';
		document.getElementById('calendar-year-view').style.display 		= 'none';
		 
		jQuery('#idCalendarStartDate').slideDown();
		try{
			fnPostDivHeight2();	    	
		}catch(e){}
	}}
	xmlHttpStartCalendar.open("GET","https://bookings.campmanager.com/26152/Widget-Calendar/?BookingStartDate=" + strBookingStartDateYear + "/" + strBookingStartDateMonth + "/" + strBookingStartDateDay + "&CalendarStartDate=" + strCalendarStartDateYear + "/" + strCalendarStartDateMonth + "/01&d=" + Math.random(),true);
	xmlHttpStartCalendar.send(null); 
}

var xmlHttpDurations;
function fnLoadDurations(varYear, varMonth, varDay)
{
	try{
		xmlHttpDurations.abort();
	}catch(error){}

	try{xmlHttpDurations.abort();}catch(error){}try{xmlHttpDurations=new XMLHttpRequest();}catch (e){try{xmlHttpDurations=new ActiveXObject("Msxml2.XMLHTTP");}catch (e){try{xmlHttpDurations=new ActiveXObject("Microsoft.XMLHTTP");}catch (e){alert("Your browser does not support AJAX!");return false;}}}xmlHttpDurations.onreadystatechange=function(){if(xmlHttpDurations.readyState==4){	

		document.getElementById('idBookingDurations').innerHTML 		= xmlHttpDurations.responseText;

	}}
	xmlHttpDurations.open("GET","https://bookings.campmanager.com/26152/Widget-Durations/?CalendarStartDate=" + varYear + "/" + varMonth + "/" + varDay + "&d=" + Math.random(),true);
	xmlHttpDurations.send(null);
}

function fnOpenSelectMonths(strYear)
{
	if (document.getElementById("calendar-year-view").style.display == 'block')
	{
		document.getElementById("calendar-year-view").style.display = 'none';
	}
	else{
		document.getElementById("calendar-year-view").style.display = 'block';
		fnCalendarChangeYear(strYear);
	}
}

function fnCalendarChangeYear(varYear)
{	
	try{xmlHttpStartCalendarYears.abort();}catch(error){}try{xmlHttpStartCalendarYears=new XMLHttpRequest();}catch (e){try{xmlHttpStartCalendarYears=new ActiveXObject("Msxml2.XMLHTTP");}catch (e){try{xmlHttpStartCalendarYears=new ActiveXObject("Microsoft.XMLHTTP");}catch (e){alert("Your browser does not support AJAX!");return false;}}}xmlHttpStartCalendarYears.onreadystatechange=function(){if(xmlHttpStartCalendarYears.readyState==4)
	{
		document.getElementById('calendar-year-view').innerHTML = xmlHttpStartCalendarYears.responseText;
	}}
    xmlHttpStartCalendarYears.open("GET","https://bookings.campmanager.com/26152/Widget-Years/?Year=" + varYear + "&d=" + Math.random());
    xmlHttpStartCalendarYears.send(null); 
}

function fnCalendarChangeMonth(varDateYear, varDateMonth){
	var strBookingStartDateDay 			= document.getElementById('idtxtBookingStartDateDay').value;
	var strBookingStartDateMonth 		= document.getElementById('idtxtBookingStartDateMonth').value;
	var strBookingStartDateYear 		= document.getElementById('idtxtBookingStartDateYear').value;
	
	fnStartCalendar(strBookingStartDateYear, strBookingStartDateMonth, strBookingStartDateDay, varDateYear, varDateMonth)
}

function fnValidateCheckAvailability()
{
	if(fnCheckAvailability())
	{
		jQuery('#overlay').css({'background-color':'rgba(200,200,200,0.3)'});
		jQuery('#overlay').show();
		jQuery('#booking-summary-loading-outer').show();

		document.getElementById('idButtonCheckAvailabiity').innerHTML 		= 'Please Wait...'
		document.getElementById('idButtonCheckAvailabiity').disabled		= true;
		
		GetLink2();
		
		document.forms['frmCheckAvailability'].submit();
	}
	else
	{
		jQuery('#overlay').hide();
		jQuery('#booking-summary-loading-outer').hide();
	}
}
		
function fnCheckAvailability()
{
	var varBookingDuration	 			= parseInt(document.getElementById('idtxtBookingDuration').value);
	var varBookingStartDateDay 			= parseInt(document.getElementById('idtxtBookingStartDateDay').value);
	var varBookingStartDateMonth 		= parseInt(document.getElementById('idtxtBookingStartDateMonth').value);
	var varBookingStartDateYear 		= parseInt(document.getElementById('idtxtBookingStartDateYear').value);
	
	var varBookingStartDate 			= new Date(varBookingStartDateYear,(varBookingStartDateMonth-1),varBookingStartDateDay,00,00,00);
	var varCurrentDate		 			= new Date(2021,8,10,00,00,00);	
	var varMinDaysInAdvance				= new Date(2021,8,11,00,00,00);		

	if(document.getElementById('idtxtBookingRentalTypeID').value == ""){
		alert('Please select a booking type');
		document.getElementById('idtxtBookingRentalTypeID').focus();
		return (false);
	}

	if (varBookingStartDate < varCurrentDate){
		alert('Date of arrival has already past.');
		document.getElementById('idStartDateDay').focus();
		return (false);
	}

	if ((+varBookingStartDate < +new Date(2021,8,1,00,00,00))){
		alert('Unfortunately we are closed for the dates you have entered. Please enter alternative dates and try again.');
		document.getElementById('idStartDateDay').focus();
		return (false);
	}

	if ((+varBookingStartDate >= +new Date(2023,8,1,00,00,00))){
		alert('Unfortunately we are closed for the dates you have entered. Please enter alternative dates and try again.');
		document.getElementById('idStartDateDay').focus();
		return (false);
	}

	if (varBookingDuration < 1 ||  document.getElementById('idtxtBookingDuration').value == ""){
		alert('Please select a duration');
		document.getElementById('idDuration').focus();
		return (false);  
	}
	
	if (document.getElementById('idtxtBookingStartDateDay').value == ""){
		alert('Please select a valid Departure Date');
		document.getElementById('idStartDateDay').focus();
		return (false);  
	}
	
	if (document.getElementById('idtxtBookingStartDateMonth').value == ""){
		alert('Please select a valid Departure Date');
		document.getElementById('idStartDateMonth').focus();
		return (false);  
	}
	
	if (document.getElementById('idtxtBookingStartDateYear').value == ""){
		alert('Please select a valid Departure Date');
		document.getElementById('idStartDateYear').focus();
		return (false);  
	}
	
	if (varBookingStartDate < varMinDaysInAdvance){
		alert('You must book at least 1 day(s) in advance.\n\nUnfortunately you cannot book online.\n\nPlease contact us to check availability and make a booking.');
		document.getElementById('idStartDateDay').focus();
		return (false);
	}
	
	if(document.getElementById('idtxtBookingRentalTypeID').value.split(":")[0] == 1){
		try{
			if(document.getElementById('idtxtBookingRentalTypeID').value.split(":")[1] != 5){
				if(!(Number(document.getElementById('idtxtBookingVehicleLength').value))){
					alert('Please enter vehicle length');
					document.getElementById('idtxtBookingVehicleLength').focus();
					return (false);
				}
			}
		}catch(e){}
	}
							
	switch(varBookingStartDateMonth){
		case (4): case (6): case (9): case (11):
			if (varBookingStartDateDay > 30){
				document.getElementById('idtxtBookingStartDateDay').focus();
				alert('There are only 30 days in the selected date of arrival month, not 31.');
				return (false);  	
			}
		break;    
		case (2):
			if (varBookingStartDateYear%4 == 0){
				if (document.getElementById('idtxtBookingStartDateDay').value > 29){
						alert('There are only 29 days in the selected date of arrival month.');
					document.getElementById('idStartDateDay').focus();
					return (false); 
				}
			}else{
				if (document.getElementById('idtxtBookingStartDateDay').value > 28){
					alert('There are only 28 days in the selected date of arrival month.');
					document.getElementById('idStartDateDay').focus();
					return (false); 
				}      	
			}
		break; 
	}
  			
	return (true);
}			

function GetLink2(){
  if(typeof ga !== 'undefined' && typeof ga.getAll === 'function') {
    trackers = ga.getAll();
    if(trackers.length) {
      uaLinker = new window.gaplugins.Linker(trackers[0]);      
	  document.getElementById('frmCheckAvailability').action = uaLinker.decorate(document.getElementById('frmCheckAvailability').action);
    } 
  }
  //alert(document.getElementById('frmCheckAvailability').action );
}

