$(document).ready(function() {
	//start search bar open
	$ ('.search-start-open #search-tab a span').click (function () {
		$ ('#search-bar').stop() .slideToggle ('normal') ;
		$(this).text($(this).text() == 'Close quick search' ? 'Open quick search' : 'Close quick search'); // this bit changes the text
		return false;
	});
	$ ('.search-start-open #search-tab a span').click (function () {
		$('#search-tab a').toggleClass('search-is-open');
		$('#search-tab a').toggleClass('search-is-closed');
	});
	
	//start search bar closed
	$ ('.search-start-closed #search-tab a span').click (function () {
		$ ('#search-bar').stop() .slideToggle ('normal') ;
		$(this).text($(this).text() == 'Open quick search' ? 'Close quick search' : 'Open quick search'); // this bit changes the text
		return false;
	});
	$ ('.search-start-closed #search-tab a span').click (function () {
		$('#search-tab a').toggleClass('search-is-open');
		$('#search-tab a').toggleClass('search-is-closed');
	});
	
	var today = new Date();
	today.setHours(0);
	today.setSeconds(0);
	today.setMinutes(0);
	today.setMilliseconds(0);
	
	var twoYears = new Date(today.valueOf());
	twoYears.dateAdd("yyyy",2);
	
 	$("#arrival").datepicker({
	 	dateFormat: 'd MM yy',
	 	minDate: today,
	 	maxDate: twoYears
	});
	
	$("#search-calendar").click(function(){
		$("#arrival").focus();
	});
	
	$("#search_f_date").datepicker({
	 	dateFormat: 'd MM yy',
	 	minDate: today,
	 	maxDate: twoYears
	});
	
	$("#search_f_trigger").click(function(){
		$("#search_f_date").focus();
	});
	
	
	
	
	var availabilityString = new String($("#availability .av").html());

	var avSt = new String($("#availability .startDate").html());
	var avStartDate = new Date();
	avStartDate.setYear(avSt.substr(0,4));
	
	switch(avSt.substr(5,2)){
		case '01':
			var mon = 0;
			break;
		case '02':
			var mon = 1;
			break;
		case '03':
			var mon = 2;
			break;
		case '04':
			var mon = 3;
			break;
		case '05':
			var mon = 4;
			break;
		case '06':
			var mon = 5;
			break;
		case '07':
			var mon = 6;
			break;
		case '08':
			var mon = 7;
			break;
		case '09':
			var mon = 8;
			break;
		case '10':
			var mon = 9;
			break;
		case '11':
			var mon = 10;
			break;
		case '12':
			var mon = 11;
			break;
	}
	
	avStartDate.setMonth(mon);
	avStartDate.setDate(avSt.substr(8,2));
	avStartDate.setHours(0);
	avStartDate.setSeconds(0);
	avStartDate.setMinutes(0);
	avStartDate.setMilliseconds(0);
	
	if(availabilityString.length>0){
		var lad = new Date(avStartDate.valueOf());
		lad.dateAdd("d",availabilityString.length-1);
 	}
 	
 	function isbooked(d){
		if(availabilityString.length>0 && d>=avStartDate && d<=lad){
			x = daysDifferent(avStartDate,d);				
	 		return parseInt(availabilityString.substr(x,1));
		}
	 	return 0;
 	}
 	
 	function nextBooking(sd){
 		var nb = new Date(sd.valueOf());
 		nb.dateAdd("m",3); //Max Three Months
 		
		if(availabilityString.length>0 && sd>=avStartDate && sd<=lad){
			var dd = new Date(avStartDate.valueOf());
			for (var x = daysDifferent(avStartDate,sd); dd<lad; x++){
				
				var dd = new Date(avStartDate.valueOf());
				dd.dateAdd("d",x+1);
				
				if(dd>sd){
			 		if(parseInt(availabilityString.substr(x,1)) > 0){
			 			return dd;
			 		}
				}
			}
		}
 		return nb;
 	}
 	
 	var selectEnd = false;
 	var StartDate = null;
 	var EndDate = null;
 	var nextBookingDate = null;
 	
	$("#availability").datepicker({
		dateFormat: 'd MM yy',
		minDate: today,
		maxDate: twoYears,
		beforeShowDay: function(d){
	 		if(d>=today){
				var tomorrow = new Date(d.valueOf());
				tomorrow.dateAdd("d",1);
				var yesterday = new Date(d.valueOf());
				yesterday.dateAdd("d",-1);
				
				var bookingClass = "";
				var selectable = true;
				var toolTip = "Select Arrival Date";
				if(!EndDate && StartDate){
					var toolTip = "Select Departure Date";
				}
	 		
				var ybooking = isbooked(yesterday)
			 	var booking = isbooked(d);
		 		if(booking == 0){
					if(ybooking == 1){
						selectable = true;
						bookingClass = "pending-end";
					}
					else if(ybooking == 2){
						selectable = true;
						bookingClass = "booking-end";
					}
					else if(ybooking == 3){
						selectable = true;
						bookingClass = "booking-owner-end";
					}
		 		}
				else if(booking == 1){
					if(yesterday >= today && ybooking == 0){
						bookingClass = "pending-start";
						if(selectEnd){
							selectable = true;
						}
						else{
							toolTip = "Pending Booking";
							selectable = false;
						}
					}
					else{
						toolTip = "Pending Booking";
						selectable = false;
						bookingClass = "pending";
					}
				}
				else if(booking == 2){
					if(yesterday >= today && ybooking == 0){
						bookingClass = "booking-start";
						if(selectEnd){
							selectable = true;
						}
						else{
							toolTip = "Unavailable";
							selectable = false;
						}
					}
					else{
						toolTip = "Unavailable";
						selectable = false;
						bookingClass = "booking";
					}
				}
				else if(booking == 3){
					if(yesterday >= today && ybooking == 0){
						bookingClass = "booking-owner-start";
						if(selectEnd){
							selectable = true;
						}
						else{
							toolTip = "Unavailable";
							selectable = false;
						}
					}
					else{
						toolTip = "Unavailable";
						selectable = false;
						bookingClass = "booking-owner";
					}
				}
				if(selectEnd){
					if(d<=StartDate || d>=nextBookingDate){
						selectable = false;
						toolTip = "Unavailable";
						if(d.valueOf()!=StartDate.valueOf()){
							bookingClass+= " fade-out";
						}
					}
				}
				if(StartDate){
					if(d.valueOf()==StartDate.valueOf()){
						bookingClass+= " booking-selected-start";
					}
					if(EndDate){
						if(d>StartDate && d<EndDate){
							bookingClass+= " booking-selected";
						}
						else if(d.valueOf()==EndDate.valueOf()){
							bookingClass+= " booking-selected-end";
						}
					}
				}
			}
			return [selectable,bookingClass,toolTip];
		},
		numberOfMonths: 3,
		onSelect:function(d){
			var d = new Date(d.valueOf());
			var bookingURL = new String($("#availability .booklink").attr("href"));
			bookingURL+= "&start_date=" + d.getFullYear() + "/" + (d.getMonth() + 1) + "/" + d.getDate();
			
			$("<a href=\"" + bookingURL + "\">SecureBookIt</a>").popupWindow({width:850}).click();

//			if(!selectEnd){
//				StartDate = new Date(d.valueOf());
//				EndDate = null;
//				nextBookingDate = nextBooking(StartDate);
//			}
//			else{
//				EndDate = new Date(d.valueOf());
//			}
//			selectEnd = !selectEnd;
		}
	});
	

});
