$(document).ready(function(){
	/*buggy browsers detecting*/
	var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
	var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1 && navigator.appVersion.indexOf("MSIE 8.0") == -1);
	var ie7 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 7.0") != -1 && navigator.appVersion.indexOf("MSIE 8.0") == -1);
	var ie8 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 8.0") != -1);
	
	ratesPeriods = [];
	
	function changeDurations (timestamp, fields) {
		timestamp /= 1000;
		for (var i = 0; i < ratesPeriods.length; i++) {
			if (ratesPeriods [i].tStart <= timestamp && ratesPeriods[i].tFinish >= timestamp) {
				var list = getMinStayList (ratesPeriods [i]);
				var html = '';
				for (key in list) {
					period = list [key];
					html += '<option value="'+period.min_stay+'_'+period.period+'">'+period.min_stay+' '+period.pStr+'</option>';
					
				}
				for (j = 0; j < fields.length; j++) {
					$('#'+fields [j]).html (html);
				}
			}
		}
	}
	
	function getMinStayList (period) {
			var min_stay_period = period.stay_period;
			var min_stay = period.minstay;
			var periods = {
				1 : {'min_stay' : 1, 'period' : 0, 'pStr' : 'night'},
				2 : {'min_stay' : 2, 'period' : 0, 'pStr' : 'nights'},
				3 : {'min_stay' : 3, 'period' : 0, 'pStr' : 'nights'},
				4 : {'min_stay' : 4, 'period' : 0, 'pStr' : 'nights'},
				5 : {'min_stay' : 5, 'period' : 0, 'pStr' : 'nights'},
				6 : {'min_stay' : 6, 'period' : 0, 'pStr' : 'nights'},
				7 : {'min_stay' : 1, 'period' : 1, 'pStr' : 'week'},
				14: {'min_stay' : 2, 'period' : 1, 'pStr' : 'weeks'},
				21: {'min_stay' : 3, 'period' : 1, 'pStr' : 'weeks'},
				28: {'min_stay' : 4, 'period' : 1, 'pStr' : 'weeks'}
			};
			
			var res = [];
			
			if (min_stay_period < 2) {
				var days = min_stay*(min_stay_period == 0 ? 1 : 7);
				
				for (key in periods) {
					value = periods [key]; 
					if (key >= days) {
						res.push (value);
					}
				}
			}
			else {
				periods = {
					1 : {'min_stay' : 1, 'period' : 2, 'pStr' : 'month'},
					2 : {'min_stay' : 2, 'period' : 2, 'pStr' : 'months'},
					3 : {'min_stay' : 3, 'period' : 2, 'pStr' : 'months'},
					4 : {'min_stay' : 4, 'period' : 2, 'pStr' : 'months'}
				};
				
				for (key in periods) {
					value = periods [key];
					if (key >= min_stay) {
						res.push (value);
					}
				}
			}
			return res;
	}
	
	$.getJSON("/wp-content/themes/prop/getDurations.php", { }, function(json){
		
		ratesPeriods = json;
		changeDurations($("#calTimestamp").val(),["duration"]);
		
	});
	
	
	
	
	/* carousel init*/
	var carousel = {};
	
	function carouselInit(carousel){
		/* carousel main holder */
		var carouselHolder = ($(carousel.holder).length)?carousel.holder:$(".carousel");
		
		/* carousel innerHolder - to scroll it but not elements itself */
		var carouselInner = (carousel.innerHolder)?$(carousel.innerHolder,carouselHolder):$(".carousel_element_holder",carouselHolder);
		
		/* carousel items to scroll */
		var carouselItem = (carousel.item)?$(carousel.item,carouselHolder):$(".item",carouselHolder);
		
		/* carousel items scroll speed */
		var transSpeed = (carousel.transSpeed)?carousel.transSpeed:1200;
		
		/* carousel item width */
		var carouselItemWidth = carousel.itemWidth || carouselItem.width();
		
		/* carousel num items visible at the same time */
		var numItems = carousel.numItems || 1;

		/* carousel number of pages */
		var num_carousel_pages = Math.ceil(carouselItem.length / numItems);
		
		
		/* is set "each page" paging */
		var pages = (carousel.pagesClass)?$(carousel.pagesClass,carouselHolder):$('.pagingHolder a',carouselHolder);
		
		
		/* page to start with */
		var index_carousel = carousel.startPage || 0;
		
		if (pages.length){
			/* add click event to each page link */
			pages.click(function(e){
				e.preventDefault();
				pages.removeClass("active");
				$(this).addClass("active");
				index_carousel = pages.index($(this));
				$(carouselInner,carouselHolder).stop().animate({"left": (index_carousel * (-carouselItemWidth*numItems)) + "px"}, transSpeed);
			});
		}
		
		/* is set "next-previous" paging */
		var pageNext = (carousel.pageNext)?$(carousel.pageNext,carouselHolder):$(".carousel_nav",carouselHolder).filter(".left");
		var pagePrev = (carousel.pagePrev)?$(carousel.pagePrev,carouselHolder):$(".carousel_nav",carouselHolder).filter(".right");

		if (pageNext.length && pagePrev.length){
			var leftRightPages = [pageNext, pagePrev]; 
			/* add prev next events */
			$(leftRightPages).each(function(){
				var self = $(this);
				self.click(function(e){
					e.preventDefault();
					index_carousel = (pages.length)?pages.index($(".active",carouselHolder)):carouselItem.index($(".active",carouselHolder));
					if (index_carousel != (num_carousel_pages-1) && index_carousel != 0) {
						index_carousel = ($(this).hasClass("left"))?index_carousel-1:index_carousel+1;
					} else if (index_carousel == 0) {
						index_carousel = ($(this).hasClass("left"))?num_carousel_pages-1:index_carousel+1;
					} else {
						index_carousel = ($(this).hasClass("left"))?index_carousel-1:0;
					}
					if(pages.length){
						pages.removeClass("active");
						pages.eq(index_carousel).addClass("active");
					} else {
						carouselItem.removeClass("active");
						carouselItem.eq(index_carousel).addClass("active");
					}
					
					carouselInner.stop().animate({"left": (index_carousel * (-carouselItemWidth*numItems)) + "px"}, transSpeed);
				});
			})
		}
		
		/* is set "play-pause" button */
		var pagePlay = (carousel.pagePlay)?$(carousel.pagePlay,carouselHolder):$(".carousel_nav",carouselHolder).filter(".play");
		var playPeriod = (carousel.playPeriod)?carousel.playPeriod:5000;
		
		if (pagePlay.length){
			/* add play-pause events */
			var carouselNext = function(){
				var index_carousel_inner = pages.index($(".active",carouselHolder));
				if (index_carousel_inner != (num_carousel_pages-1)) {
					index_carousel_inner++;
				} else {
					index_carousel_inner = 0;
				}
				pages.eq(index_carousel_inner).click();
			} 
			
			var intervalCarousel = setInterval(carouselNext, playPeriod);
			
			pagePlay.click(function(e){
				e.preventDefault();
				$(this).toggleClass("pause");
				if ($(this).hasClass("pause")){
					clearInterval(intervalCarousel);
				} else {
					intervalCarousel = setInterval(carouselNext, playPeriod); 
				}
			})
			
		}
		
	}
	
	carousel = {
		holder : $(".carouselBlock"),
		itemWidth : "180",
		transSpeed : 1000,
		numItems: '3',
		startPage:1
	};
	
	carouselInit(carousel);
	
		
	$(".calendarItem .calendar td").not($(".empty")).not($(".unavailable")).click(function(){
		$(this).toggleClass("selected");
	});
	
	if($(".calendarHolderInner").length) {
		shift = 0;
		
		$.getJSON("/wp-content/themes/prop/getCalendar.php", { shift: shift }, function(json){
			$(".calendarHolderInner").empty().html(json.calendar);
		});
		
		$(".availCalendar .nav").click(function(e){
			e.preventDefault();
			var options = {};
			if ($(this).hasClass("left")){
				shift -= 6;
			} else {
				shift += 6;
			}
			$.getJSON("/wp-content/themes/prop/getCalendar.php", { shift: shift }, function(json){
				$(".calendarHolderInner").empty().html(json.calendar);
			});

		});
	}
	
	

	$('#availabilityButton').click(function(e){
		e.preventDefault();
		if (0 == $('#duration').val()) return; 
		checkAvailability ($('#start_date').val (), $('#duration').val ());
	})
	
	
	function CharsLeft(obj, dest) {
		var obj = obj;
		var dest = dest;
		$(obj).live("keyup", function(){	
			var max = $(obj).attr("maxlength");
			var left = max - $(obj).val().length;
			if (left < 0) {
				$(obj).attr ('value', $(obj).attr ('value').substr (0, max));
				left = "0"; 
			};
			$(dest).html(left); 
		});
	};
		
	
	CharsLeft($("#message"), $("#enqBodyCharsLeft"));
	
	$("#start").datepicker();
	$('#start').datepicker('option', 'dateFormat', 'M dd,yy');
		
	 jQuery("#bookForm").validate({
		submitHandler: function(form) {
			jQuery(form).ajaxSubmit({
				target: "#result",
				success: function(msg){
					if(msg == "Your message sent"){
						$('#bookForm').clearForm();
						$('#result').animate({height: '18px'}, 4000,function(){
							$(this).html('&nbsp;');
						}); 
					 }
			   }

			});
			
		}
	}); 
	
	function empty( str ) {
		return (typeof str == 'undefined' || null == str || 0 == str || '' == str || false == str );
	}
	
	currentPeriod = '1_0';

	
	function checkAvailability (date, period) {
		var url = '/wp-content/themes/prop/getCheck.php';
		
		if (empty (date)) return;
		
		$('#availabilityLoader').show ();
		$('#availabilityButton').hide ();
		$('#aLoader').show ();
		
		$.get (url, {'date': date, 'period': period}, function (data, status){
			$('#availabilityLoader').hide ();
			$('#aLoader').hide ();
			$('#availabilityButton').show ();
			
			$('#calendarContainer').html (data.calendar);
			
			currentShift = 0;
			currentDate = date;
			currentPeriod = period;
			
			$('#start_date').attr ('value', date);
			$('#duration').attr ('selectedIndex', $('#duration').attr ('selectedIndex'));
			
			$('#codValue').html (data.changeoverDay);
			$('#codContainer').show ();
			
			if (status == 'success') {
				$('#selectionPrice').html (data.price);
				$('#bArrival').html (data.arrival);
				$('#bDeparture').html (data.departure);
				$('#bPeriod').html (data.period);
				$('#priceInfo').show ();
				
				if (data.isAvailable) {
					if (data.changeover) {
						$('#selectionPrice').html (data.price);
						$('#bArrival').html (data.arrival);
						$('#bDeparture').html (data.departure);
						$('#bPeriod').html (data.period);
						$('#priceInfo').show ();
						$('#bookedPeriod').hide ();
						$('#wrongChangeover').hide ();
						$('#bookError').hide ();
					}
					else {
						$('#coDay').html (data.changeoverDay);
						$('#bookedPeriod').hide ();
						$('#wrongChangeover').show ();
						$('#nabPeriod').html (data.nearest);
						$('#bookError').show ();
					}
				}
				else {
					$('#nabPeriod').html (data.nearest);
					$('#bookedPeriod').show ();
					$('#wrongChangeover').hide ();
					$('#bookError').show ();
				}
			}
		}, 'json');
	}
	
	$("#start_date").datepicker({ dateFormat: "d M, yy", altField: '#calTimestamp', altFormat: '@', 'onSelect': function (dateText, ins) {

		if( 0 == $('#duration').val() ) return false;
		$('#start_date').attr ('value', dateText);
		changeDurations ($('#calTimestamp').val (), ['duration']);
	}});

	
	if(jQuery.browser.msie && (ie6 || ie7)) {

	}
	
	
})
