$(function(){
	$("#SlideShow").cycle({ 
	    fx:    	'fade', 
	    speed:  2000,
	    timeout:9000
	});
	 
	$(".feature span").css({opacity:0.7});
	 
	$(".feature, #property .photos a").hover(function(){ 
		$("img",this).animate({opacity: 0.6}, 200 );
	}, function(){
		$("img",this).animate({opacity: 1}, 200 );
	});
	 

	$("#property .photos").unbind().each(function(){
		$("a",this).lightBox();
	});
	
	//Map Code!
	var map = ".map";
	var address = $('.address').html() + " " + $('.address').attr("postcode");
	$(map).each(function(){
		if(point = $(map).attr("point")){
			point = point.split(",");
	   		placeMarkMap(map,address,[point[0],point[1]]);
		}
		else{
			//Get the address
			$("<div></div>").jmap('init', {
				'mapType':'map',
				"mapZoom":16,
				'mapShowjMapsIcon': false,
				'mapEnableType': true
			}).jmap('SearchAddress', {
		        'query': address,
		        'returnType': 'getLocations'
		    }, function(result, options){
		        var valid = Mapifies.SearchCode(result.Status.code);
		        if (valid.success) {
		       		$.each(result.Placemark, function(i, point){
		           		placeMarkMap(map,address,[point.Point.coordinates[1], point.Point.coordinates[0]]);
		                return false;
		            });
		        }
		    });
		}
	});
	
	$("#search select").change(function(e){
		$("#search form").submit();
	});
	
	
	//Menu Code
	$("#sideMenu").each(function(){
		$("li",this).hover(function(){ 
			$(">ul:not(:animated)", this).each(function(){
				$(this).show("fast");
				menuOpenCount++;
				selectCheck();
			}); 
		}, function(){
			$(">ul", this).each(function(){
				$(this).hide("fast");
				menuOpenCount--;
				selectCheck();
			}); 
		});
	});
	runLoop();
	
	
	
	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);
			
	function avcal (elemental){
		
		$(elemental).each(function(){
			
			var eleman = this;
			
		
		 	var availabilityString = new String($(".av",eleman).html());
		
			var avSt = new String($(".startDate",eleman).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;
		 	
		 	var numMonths = 3;
		 	
			$(eleman).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: numMonths,
				onSelect:function(d){
					var d = new Date(d.valueOf());
					var bookingURL = new String($(".booklink",eleman).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;
				}
			});
		
		});
	};

	avcal("#availability, .availability");
	
	
	
	
	$(".booknow").popupWindow({width:850});
	
});

function runLoop() {
	$(".photoarea").each(function(){
		
		//don't run if not enough photos
		if($(this).children().length < 3)
			return;
		
		var size = $('.photoarea *:first').outerHeight();
		var t = $(this).css('top');
		if(t){
			if(t == 'auto'){
				t = 0;
			}
			else {
				t = t.substring(0,t.length-2);
			}
			var pcThrough = Math.abs(t) / size * 100;
			var speed = 37 * (100-pcThrough) / 100 * size;	
			$('.photoarea:not(:animated)').animate({'top':'-'+ size +'px'}, speed, "linear", function(){
				$('*:first',this).appendTo(this);
				$(this).css({'top':'0px'});
				setTimeout(function(){ runLoop() }, 10);
			}).hover(function(e){
				$(this).stop();
			},function(e){
				setTimeout(function(){ runLoop() }, 10);
			});
			
			return false;
		}
	});
}

function printPage(){
	$(".photoarea").each(function(){
		$(this).css({'top':'0px'});
	});
	
	window.print();
}


var menuOpenCount = 0;

function selectCheck(){
	if ($.browser.msie && $.browser.version.substring(0,1) === '6') {
		if(menuOpenCount > 0){
			$("select").css("visibility","hidden");
		}
		else{
			$("select").css("visibility","visible");
		}
	}
}

function placeMarkMap(map,address,p){
	$(map).jmap('init', {
		'mapType':'map',
		"mapZoom":16,
		'mapShowjMapsIcon': false,
		'mapEnableType': true,
		'mapCenter':p
	}).jmap('AddMarker',{
        'pointLatLng':p,
        'pointHTML':address,
		'centerMap': true
    });
}

