var addthis_config = {
	services_compact: 'email,facebook,linkedin,print,google,favorites,digg,delicious,stumbleupon,messenger,twitter,more'
}


function SmoothScroll() {
	$('.scroll').click(function() {
		if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '')
	  && location.hostname == this.hostname) {
			var $target = $(this.hash);
			$target = $target.length && $target
		|| $('[name=' + this.hash.slice(1) + ']');
			if ($target.length) {
				var targetOffset = $target.offset().top;
				$('html,body')
		  .animate({ scrollTop: targetOffset }, 1000);
				return false;
			}
		}
	});
}

//Main nav drop down
function DropDownMenu() {

	var display_timeout = 0;
	$("li.has-subnav").hover(function() {
		$("li.has-subnav").removeClass('subnav-active');
		if (display_timeout != 0) { clearTimeout(display_timeout); }
		var this_element = this;
		$(this_element).addClass('subnav-active');
	},
	function() {
		if (display_timeout != 0) { clearTimeout(display_timeout); }
		var this_element = this;
		display_timeout = setTimeout(function() {
			display_timeout = 0;
			$(this_element).removeClass('subnav-active');
		}, 500);
	}
	);
}

$(function() {
	$("#slider-range").slider({
		range: true,
		min: 0,
		max: 35,
		values: [12, 23], /* Current year, Jan to Dec */
		slide: function(event, ui) {
			var fromDate = ui.values[0];
			var untilDate = ui.values[1];
			workOutDates(fromDate, untilDate, false);
		},
		stop: function(event, ui) {
			var fromDate = ui.values[0];
			var untilDate = ui.values[1];
			workOutDates(fromDate, untilDate, true);
		}
	});

	/* Set the values programatically, if specified in the querystring */
	/* The data will have been loaded by this point, this is just for setting the slider display */
	var currentDate = new Date();
	var currentYear = currentDate.getFullYear();
	var yearParam = getQueryStringParameterByName("year");
	var monthParam = getQueryStringParameterByName("month");

	if (yearParam.length > 0) {
		//QueryString value for year specified
		var vYear = parseInt(yearParam);
		if (vYear == currentYear) {
			$("#slider-range").slider('values', [12, 23]);
		}
		else if (vYear == currentYear - 1) {
			$("#slider-range").slider('values', [0, 11]);
		}
		else if (vYear == currentYear + 1) {
			$("#slider-range").slider('values', [24, 35]);
		}
	}
	else if (monthParam.length > 0) {
		//QueryString value for month-year specified
		var monthYearArr = monthParam.split('-');
		var monthString = monthYearArr[0];
		if (monthString.substr(0, 1) == '0') {
			monthString = monthString.substr(1, 1);
		}
		var vMonth = parseInt(monthString);
		var vYear = parseInt(monthYearArr[1]);
		if (vMonth > 0 && vMonth <= 12) {
			var startIndex = -1;
			if (vYear == currentYear) {
				startIndex = 12;
			}
			else if (vYear == currentYear + 1) {
				startIndex = 24;
			}
			else if (vYear == currentYear - 1) {
				startIndex = 0;
			}

			if (startIndex >= 0) {
				var sliderValue = startIndex + vMonth - 1;
				$("#slider-range").slider('values', [sliderValue, sliderValue]);
			}
		}
	}



	var fromDate = $("#slider-range").slider("values", 0)
	var untilDate = $("#slider-range").slider("values", 1)
	workOutDates(fromDate, untilDate, false)

});

function workOutDates(min, max, callAjax) {

	var currentDate = new Date();

	var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
	var years = [(currentDate.getFullYear() - 1).toString(), currentDate.getFullYear().toString(), (currentDate.getFullYear() + 1).toString()];
	var minYearCount = 0;
	var maxYearCount = 0;

	parseInt(min)

	if (min < 36) minYearCount = 2;
	if (min < 24) minYearCount = 1;
	if (min < 12) minYearCount = 0;
	if (max < 36) maxYearCount = 2;
	if (max < 24) maxYearCount = 1;
	if (max < 12) maxYearCount = 0;

	if (min > 36) {
		min -= 35;
	} else if (min > 23) {
		min -= 24;
	} else if (min > 11) {
		min -= 12;
	}
	if (max > 36) {
		max -= 35;
	} else if (max > 23) {
		max -= 24;
	} else if (max > 11) {
		max -= 12;
	}

	$("#amount").val(months[min] + ' ' + years[minYearCount] + " - " + months[max] + ' ' + years[maxYearCount])

	if (callAjax == true) {
		var rangeStart = (min + 1) + '-' + years[minYearCount];
		var rangeEnd = (max + 1) + '-' + years[maxYearCount];

		$.ajax({
			type: "GET",
			dataType: "json",
			url: '?ajaxmode=holidayFilter&start=' + rangeStart + '&end=' + rangeEnd,
			success: function(data) {
				$('#HolidayListingContainer').html('');
				if (data.HtmlResponse != null) {
					$('#HolidayListingContainer').html(data.HtmlResponse);
				}
			}
		});
	}

}

$(document).ready(function() {

	$(document).pngFix();
	SmoothScroll();
	DropDownMenu();
	$.addthis('Mondo Visione');
	$('input').customInput();

	$("a[rel*='external']").attr({ target: "_blank" });

	var volatileInput = $(".field input")
	volatileInput.focus(function(event) {
		if ($(this).val() == $(this).attr("title")) {
			$(this).val("");
		}
	}, volatileInput.blur(function(event) {
		if ($(this).val() == "") {
			$(this).val($(this).attr("title"));
		}
	}
    ));

	// Now get the font changed: http://cufon.shoqolate.com/generate/
	Cufon.replace('h1, .wysiwygBlock h2, .largeCol h2, .smallCol h2, #leftCol h2, #nav li a.top, #content .smallCol .latestRelease .title', { fontFamily: 'DINPro', hover: true });

	$('#sponsorSlider').codaSlider({
		autoSlide: true,
		autoSlideInterval: 5000,
		dynamicArrows: false,
		dynamicTabs: false
	});

	$('#associateSlider').codaSlider({
		autoSlide: true,
		autoSlideInterval: 5000,
		dynamicArrows: false,
		dynamicTabs: false
	});

	//Change border colour of focused input	
	$('#content .contact .text input, #content .contact .textarea textarea, #masthead .loginOverlay fieldset .text input').focus(function() {
		$(this).css("border-color", "#aee9f3");
	});

	$('#content .contact .text input, #content .contact .textarea textarea, #masthead .loginOverlay fieldset .text input').blur(function() {
		$(this).css("border-color", "#dedede");
	});

	$(".withoutJavascript").css("display", "none");
	$(".withJavascript").css("display", "block");

	$('#continueShopping').click(function() {
		$('#basketBubble').hide();
		return false;
	});


	jQuery.fn.fadeToggle = function(speed, easing, callback) {
		return this.animate({ opacity: 'toggle' }, speed, easing, callback);
	};

	var fadeToggler = $(".loginToggler")
	var fadeElement = $(".loginOverlay")

	$(fadeToggler).click(function(event) {
		event.preventDefault();
		fadeElement.fadeToggle("normal");
	});

	Shadowbox.init({
		players: ['swf', 'img', 'html', 'iframe'],
		overlayOpacity: 0.7
	});


	$('.sponsorFlip').bind("click", function() {
		var elem = $(this);
		if (elem.data('flipped')) {
			elem.revertFlip();
			elem.data('flipped', false)
		}
		else {
			elem.flip({
				direction: 'lr',
				speed: 300,
				onBefore: function() {
					elem.html(elem.siblings('.sponsorData').html());
				}
			});
			elem.data('flipped', true);
		}
	});

	$("#adSliderHor").carouFredSel({
		height: 60,
		items: 1,
		direction: "down",
		scroll: {
			items: 1,
			duration: 5000,
			pauseOnHover: true
		}
	});

	$("#adSliderVer").carouFredSel({
		height: 600,
		items: 1,
		direction: "left",
		scroll: {
			items: 1,
			duration: 5000,
			pauseOnHover: true
		}
	});

	if (!navigator.userAgent.match("iPhone") && !navigator.userAgent.match("iPod") && !navigator.userAgent.match("iPad")) {

		$('.flash').empty();

		$(".flash").each(function() {

			var rel = $(this).attr("rel");
			var rev = $(this).attr("rev");
			var dimensions = rev.split("x");

			var width = dimensions[0];
			var height = dimensions[1];

			$(this).flash({
				src: rel,
				width: dimensions[0],
				height: dimensions[1],
				WMODE: 'transparent'
			});

		});

	};


});

function getQueryStringParameterByName(name) {
	name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
	var regexS = "[\\?&]" + name + "=([^&#]*)";
	var regex = new RegExp(regexS);
	var results = regex.exec(window.location.href);
	if (results == null)
		return "";
	else
		return decodeURIComponent(results[1].replace(/\+/g, " "));
}


