/* Globals */
var gridTO 			= false,
	tooltipTO 		= false,
 	cursorPositionX = 0,
 	cursorPositionY = 0,
	$toolTip		= false;


/**
 * DOM Load
 */

$(document).ready(function() {
	pageEnhance();	
});



function pageEnhance() {

	// .frame
	$(".frame").has("img").append('<div class="spinner"></div>')
	$(".frame img").imgpreload({
		each: function() {
			$(this).siblings(".spinner").fadeOut()
			$(this).hide().css({visibility:"visible"}).fadeIn(1000)
		}
	});

	//
	prepareScroller($(".scroller"),{itemWidth:127,itemsOnShow:5,maskWidth:625,maskHeight:90})
	$(".heroNav li").click(function(){
		
		var target = $(this).closest("ul").attr("data-parent");
	
		var large = $("#"+target+" img");
		large.fadeTo(300,"0.1");
		var largeSrc = $(this).attr('data-large');
		$.imgpreload(largeSrc,{
			all: function() {
				
				
				large.stop().attr("src",largeSrc).fadeTo(300,"1");								
			}
		});
	})
	
	// New windows
	newWindowLinks();
	
	// Default text
	defaultText();
	
	// Postcode lookup
	$("#deliverFBSmall button").click(function(){
		var postcode = $("#postcode").val();
		if(postcode=="") {
				$('#postcodeResultInner').html("<h2>Please enter a postcode and press send.</h2>");
				$("#postcodeResult").fadeIn()
		} else {
			$.ajax({
				type: "GET",
				url: "/cfapi/postcodesearch/",
				data: "postcode="+postcode,	
				dataType: "jsonp",			 
				success: function(json){
					$('#postcodeResultInner').html('<div><h2>' +  json.message + '</h2></div>');
					$("#postcodeResult").fadeIn()			
				}
			});
		}
		

		return false;
	})
	$("#deliverFBSmall .close").click(function(){
		$("#postcodeResult").hide()	
		return false;
	})
	
}





function defaultText() {
	$(".defaultText").unbind("focus,blur").focus(function () {		
		if ($(this).val() == $(this)[0].defaultValue) {
        	$(this).val("");
        }
	 }).blur(function() {
        if ($(this).val() == "") {
        	$(this).val($(this)[0].defaultValue);
     	}
	 });
}



/**	
 * Target new windows
 */
function newWindowLinks(){
	$('a[rel=external]').live("click",function(){
		window.open($(this).attr('href'));
		return false;
	});
}



function jsdebug(message) {
	try {
		if(window.console) {
			console.log(message);			
		}
	} catch(e) {}	
}


function prepareScroller(targetWrapperObj,settings) {
	
	var itemWidth 	= settings.itemWidth 	|| 500;
	var itemsOnShow = settings.itemsOnShow 	|| 5;
	var maskWidth 	= settings.maskWidth 	|| 500;
	var maskHeight	= settings.maskHeight 	|| 100;

	targetWrapperObj.each(function(){
		var count 		= $(this).find("li").size();
		targetWrapperObj.addClass("scrollerActive");
		
		
		var scrollWidth = count * itemWidth;
		var increment 	= itemsOnShow * itemWidth;
		var currentX	= 0;
		var maxScroll 	= -(scrollWidth-increment);

		var list 		= $(this).find("ul");
			list.wrap('<div class="scrollerMask" style="width:'+maskWidth+'px;height:'+maskHeight+'px;overflow:hidden;position: relative;" />');

		list.css({width:scrollWidth+"px"})
		if(count>itemsOnShow) {
			var prevButton 	= $('<span class="prevButton disabled">Prev</span>');
			var nextButton 	= $('<span class="nextButton">Next</span>');
			prevButton.click(function(){
				if((currentX+increment) > 0)	{
					var scrollTo = 0;
					$(this).addClass("disabled")
				} else {
					var scrollTo = currentX+increment;
				}				
				list.animate({left: scrollTo+"px"},1000,"easeOutCirc");
				currentX = scrollTo;
				nextButton.removeClass("disabled")
			})
			nextButton.click(function(){		
				if((currentX-increment)< maxScroll)	{
					var scrollTo = maxScroll;
					$(this).addClass("disabled")
				} else {
					var scrollTo = currentX-increment;
				}							
				list.animate({left: scrollTo+"px"},1000,"easeOutCirc");
				currentX = scrollTo;
				prevButton.removeClass("disabled")
			})
			$(this).prepend(nextButton).prepend(prevButton)
		}
	})
	
}

