/*----------------------------------------------------

	JSONLOAD.JS

----------------------------------------------------*/

$(document).ready(function(){

	var bodyid = $('body').attr('id');
	
	// A. Input Hints
	//------------------------------------------------------------------------------------------	

	$('input[type="text"]').each(function(){
		if(!$(this).val()){
			this.value = $(this).attr('title');
		}
		$(this).focus(function(){
			if(this.value == $(this).attr('title')) {
				this.value = '';
			}
		});
		$(this).blur(function(){
			if(this.value == '') {
				this.value = $(this).attr('title');
			}
		});
	});
	$('textarea').each(function(){
		if(!$(this).val()){
			this.value = $(this).attr('title');
		}
		$(this).focus(function(){
			if(this.value == $(this).attr('title')) {
				this.value = '';
			}
		});
		$(this).blur(function(){
			if(this.value == '') {
				this.value = $(this).attr('title');
			}
		});
	});

	
	// B. Price Overlay
	//------------------------------------------------------------------------------------------
	
	$('#lowest-price-guarantee a').bind('click', function(){
		var text = "<h3>We Guarantee You Won't Find A Cheaper Price</h3><p>We're so confident that our prices are the lowest, <strong>we guarantee you won't find a cheaper price.</strong></p><p>UKkitchens.com is one of the country's biggest and kitchen websites. And because we buy in large quantities and only sell through our website, that means we can offer <strong>discounts of up to 35% compared to the high street</strong>.</p><p>We're so confident in our prices, we include a <strong>lowest price guarantee with everything we sell</strong>.</p><p>In the unlikely event that you find a product cheaper, we'll happily refund the difference. Just make sure that:</p><ul><li>The product is exactly the same (we only sell high quality products that we'd use ourselves).</li><li>The product is in stock (we ensure that virtually everything on our site is in stock/available within 3 days).</li><li>The cost includes VAT and delivery (all our prices include VAT, and delivery starts at just &pound;8 &ndash; and for many larger items, it's completely free)</li></ul><p>For the full terms and conditions, please <a href='/terms-price-guarantee.html' target='_blank'>click here</a>.</p>"

		$(this).parent().append('<div id="price-overlay"><div><a id="close-overlay">x</a>'+text+'</div></div>');
		$("#price-overlay").fadeIn();
		$('#close-overlay').bind('click', function(){
			$("#price-overlay").fadeOut();									   
		});									  
	});
	
	
	// C. Added to Basket
	//------------------------------------------------------------------------------------------
		
	$('#product-added').fadeIn('slow');
	$('#product-added').bind('click', function(){
		$(this).fadeOut('slow');
	});
	
	
	// D. Table Images
	//------------------------------------------------------------------------------------------
	
	$(".tbl-img").load(function() {
    $(this).wrap(function(){
    	return '<span class="' + $(this).attr('class') + '" style="background:url(' + $(this).attr('src') + ') no-repeat center center; width: ' + $(this).width() + 'px; height: ' + $(this).height() + 'px;" />';
    });
    $(this).css("opacity","0");
	
  });
	
	// E. Beat My Quote Tabs
	//------------------------------------------------------------------------------------------	
	$('.tab-container').hide();
	$('.tab-container h3').hide();
	$('.tab-container:first').show();
	$('.tab-container:first').before('<ul class="tabs"></ul>');
	$('.tab-container h3').each(function(){
		$('.tabs').append('<li><a id="nav-'+ $(this).parent().attr('id') +'">'+ $(this).html() +'</a></li>');
	});
	$('.tabs > li:first').addClass('current');
	$('.tabs a').bind('click', function(){
		$('.tab-container').hide();
		var navitem = $(this).attr('id');
		$('#'+navitem.replace("nav-","")).show();
		$('.tabs .current').removeClass('current');
		$(this).parent().addClass('current');
	});

	
	// F. Banner
	//------------------------------------------------------------------------------------------	
	if(bodyid == 'index'){
		$(function(){
			// run the code in the markup!
			eval($('#banner-container')
				.cycle({
					fx:    'scrollLeft',
					speed:  2500,
					timeout:  7000,
					pager:  '#pages',
					next:   '#next', 
					prev:   '#previous' 
			}));
		});	
	}
	


	// G. Shipping Address
	//------------------------------------------------------------------------------------------
	
	$('#shipping-address >  div').before('<p id="choose-shipping"><input name="alt_shipping" id="alt_shipping" type="checkbox" value="1" /><label for="alt_shipping">Please deliver my order to an alternate address</label></p>');
	if($('#hasshipping').val() != 'true'){
		$('#shipping-address > div').hide();
	}else{
		$('#alt_shipping').attr('checked', true);
	}
	
	$('#alt_shipping').bind('click', function(){
		if($('#shipping-address > div').is(':visible')){
			$('#shipping-address > div').fadeOut('slow');
			$('#hasshipping').val("");
		}else{
			$('#shipping-address > div').fadeIn('slow');
			$('#hasshipping').val("true");
		}
	});
	
	// H. Close Response Messages
	//------------------------------------------------------------------------------------------

	$('#msg-response').bind("click", function(){
		if(!$('#msg-response').find('a').length){
			if($('#msg-response').is(':visible')){
				$("#msg-response").slideUp();
			}
		}
	});
	if($('#msg-response').find('a').length){ $("#msg-response span").hide(); }
	
	var zIndexNumber = 100;
	$('.side-options li').each(function() {
		$(this).css('zIndex', zIndexNumber);
		zIndexNumber -= 1;
	});
	
	// I. Side Tabbed
	//------------------------------------------------------------------------------------------	
	$('#tabs-side > li').hide();
	$('#tabs-side h6').hide();
	$('#tabs-side > li:first').show();
	$('#tabs-side').before('<ul id="tabs-side-nav"></ul>');
	$('#tabs-side h6').each(function(){
		$('#tabs-side-nav').append('<li><a id="nav-'+ $(this).attr('id') +'">'+ $(this).html() +'</a></li>');
	});
	$('#tabs-side-nav > li:first').addClass('current');
	$('#tabs-side-nav a').bind('click', function(){
		$('#tabs-side > li').hide();
		var navitem = $(this).attr('id');
		$('#'+navitem.replace("nav-","")).parent().show();
		$('#tabs-side-nav .current').removeClass('current');
		$(this).parent().addClass('current');
	});

	// J. Image Enlarge
	//------------------------------------------------------------------------------------------		

	$('#product-list li').each(function(){
		var src = $(this).find('img').attr('src').replace('160/160','800/600');
		var enlarge = src.replace('?square=1','');
		var title = $(this).find('h2').html();
		$(this).append('<a href="'+enlarge+'" class="product-zoom colorbox" rel="products-category" title="'+title+'">here</a>');
	});
	
	// K. Side Tabbed
	//------------------------------------------------------------------------------------------	
	if(bodyid == 'shop-view-product' || bodyid == 'shop-display-category'){
		$(".colorbox").colorbox();		
		$(".colorbox-review").colorbox({innerWidth:500, innerHeight:450});	
		$(".colorbox-emailafriend").colorbox({innerWidth:500, innerHeight:400});	
	}	
	
	// L. Sub Navigation
	//------------------------------------------------------------------------------------------

	$('#nav > ul > li > a').bind('mouseover', ddm_open);
	$('#nav > ul > li > a').bind('mouseout',  ddm_timerclose);
	$('#nav > ul > li > ul').bind('mouseover', ddm_cancelall);
	$('#nav > ul > li > ul').bind('mouseout',  ddm_timerclose);
	$('body').bind('click', ddm_close);

	// M. Predictive Search
	//------------------------------------------------------------------------------------------
		
	$('body').bind('click', function(){
		$('#suggestions').fadeOut();
	});
	
});


// 1. Reviews
//------------------------------------------------------------------------------------------	

function reviewHover(num){
	$('#add-rating img').attr('src','/img/icon_nostar.jpg');
	for (i = 1; i<=num; i++){
		$('#star-'+i).attr('src','/img/icon_star.jpg');
	}		
}
function reviewOut2(){
	window.setTimeout('ratingOut()', 1000);
}
function reviewOut(){
	$('#add-rating img').attr('src','/img/icon_nostar.jpg');
	var selected = $('#rating-num').val();
	for (i = 1; i<=selected; i++){
		$('#star-'+i).attr('src','/img/icon_star.jpg');
	}
}
function reviewDown(num){
	$('#rating-num').val(num);
}

// 02. resetForm
//------------------------------------------------------------------------------------------

function resetForm(){

	$("input[type='text']").removeClass('input-warning');
	$('textarea').removeClass('input-warning');
	$('.warning').addClass('required');
	$('.warning').removeClass('warning');
	$('.hidden').show();
	$('#msg-response').remove();

}

// 03. inputValidator
//------------------------------------------------------------------------------------------

function inputValidator(id){
	if($('#'+id).val()=="" && id != 'security'){
		constructMessage(id);
	}else if($('#'+id).val()!="" && id == 'security'){
		if(empty == false){
			$('.new-form').prepend("<div id='msg-response'><div>Please ensure the hidden security field is empty</div></div>");
			$('#msg-response').addClass("msg-error");
			$('#msg-response').slideDown();
		}
		$('#'+id).addClass('input-warning');
		empty=true;
	}
	
}

// 04. emailValidator
//------------------------------------------------------------------------------------------

function emailValidator(obj){
	
	var emailStr = $('#'+obj).val()
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)!£$%^&*()+='#~?<>@,;:\\\\\\\"\\.\\[\\]";var validChars="\[^\\s" + specialChars + "\]";var quotedUser="(\"[^\"]*\")";var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+';var word="(" + atom + "|" + quotedUser + ")";var userPat=new RegExp("^" + word + "(\\." + word + ")*$");var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");var matchArray=emailStr.match(emailPat)
	if ((matchArray==null) && empty==false){constructMessage(obj,"Email address seems incorrect (check @ and .'s)")}
	if (empty==false){var user=matchArray [1];var domain=matchArray [2];if (user.match(userPat)==null){constructMessage(obj,"The username doesn't seem to be valid.")}}
	if (empty==false){var IPArray=domain.match(ipDomainPat);if (IPArray!=null){for (var j=1;j<=4;j++){if (IPArray[j]>255){constructMessage(obj,"Destination IP address is invalid!")}}}}
	if (empty==false){var domainArray=domain.match(domainPat);if (domainArray==null){constructMessage(obj,"The domain name doesn't seem to be valid.")}}
	if (empty==false){var atomPat=new RegExp(atom,"g");var domArr=domain.match(atomPat);var len=domArr.length;if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3){constructMessage(obj,"The address must end in a three-letter domain, or two letter country.")}}
	if ((len<2) && empty==false){constructMessage(obj,"This address is missing a hostname!")}
}

// 05. constructMessage
//------------------------------------------------------------------------------------------

function constructMessage(id,msg){

	if(!msg){
		msg = "Please ensure you have entered all the required information";
	}
	if(empty == false){
		$('.new-form').prepend("<div id='msg-response'><div>"+msg+"</div></div>");
		$('#msg-response div').addClass("msg-error");
		$('#msg-response').slideDown();
	}
	$('#'+id+' ~ span.required').addClass("warning");
	$('#'+id+' ~ span.hidden').hide();
	$('.warning').removeClass("required");
	$('#'+id).addClass('input-warning');
	empty=true;

}

// 06. formAddReview
//------------------------------------------------------------------------------------------

function formSubmitReview(){
	resetForm();
	empty = false;
	inputValidator('author');
	inputValidator('rating-num');
	inputValidator('review');
	inputValidator('security');
	if (empty == false){
		$('#review-form').submit();
	}
	
}

// 07. formEmailAFriend
//------------------------------------------------------------------------------------------

function formEmailAFriend(){
	resetForm();
	empty = false;
	inputValidator('from-name');
	inputValidator('to-name');
	inputValidator('to-email');
	emailValidator('to-email');
	inputValidator('security');
	if (empty == false){
		$('#friend-form').submit();
	}
}

// 08. Drop Down Menus
//------------------------------------------------------------------------------------------

var timein = 0;
var timeout = 500;
var opentimer = 0;
var closetimer = 0;
var current_item = 0;

function ddm_open(){
	var obj = $(this).parent();
	ddm_cancelclose();
	opentimer = setTimeout(function(){
		if(opentimer){
			ddm_close();
			current_item = $(obj).find('ul').css('display', 'block');
			if($(current_item).length > 0){
				$(obj).children('a').addClass("nav-hover");
			}
		}
	}, timein);
	timein = 500;
}

function ddm_close(){
	if(current_item) current_item.css('display', 'none');
	if(current_item) $('.nav-hover').removeClass("nav-hover");
}


function ddm_timerclose(){	
	closetimer = setTimeout(ddm_close, timeout);
}

function ddm_cancelall(){
	ddm_cancelopen()
	ddm_cancelclose()
}

function ddm_cancelclose(){
	if(closetimer){
		clearTimeout(closetimer);
		closetimer = null;
	}
}

function ddm_cancelopen(){
	if(opentimer){
		clearTimeout(opentimer);
		opentimer = null;
	}
}



// LEGACY
//------------------------------------------------------------------------------------------	
	
function show_image(img){
	var target = document.getElementById("proimg_main").getElementsByTagName("img");
	var linktarget = document.getElementById("proimg_main").getElementsByTagName("a");
	for (var i = 0; i < target.length; i++) {
		target[i].src = "/images/358/358/"+img+".jpg";
		linktarget[i].href = "/images/800/800/"+img+".jpg";
		//target[i].jqimg = img;
	}
}

function showImgHover(){
	document.getElementById("img_zoom").style.display = "block";
}
function hideImgHover(){
	document.getElementById("img_zoom").style.display = "none";
}

function checkboxRestrict(obj,num){
	var box = obj.name.substr(0,obj.name.lastIndexOf('_')+1);
	var k=0,i=1;
	while(obj.form[box+i]){
		k += obj.form[box+i].checked;
		i++;
	}
	if(k > num){
		obj.checked = false;
		alert('Only ' + num + ' '+box.substr(0,box.length-1) +' baskets can be comined at one time.\nTo pick this option please unselect one of the others.');
	}
}


function popup(mylink, windowname){
	if (! window.focus)return true;
	var href;
	if (typeof(mylink) == 'string')
	   href=mylink;
	else
	   href=mylink.href;
	window.open(href, windowname, 'width=800, height=450, scrollbars=yes');
	return false;
}

/*
 * jQuery Tooltip plugin 1.3
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-tooltip/
 * http://docs.jquery.com/Plugins/Tooltip
 *
 * Copyright (c) 2006 - 2008 J?rn Zaefferer
 *
 * $Id: jquery.tooltip.js 5741 2008-06-21 15:22:16Z joern.zaefferer $
 * 
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */;(function($){var helper={},current,title,tID,IE=$.browser.msie&&/MSIE\s(5\.5|6\.)/.test(navigator.userAgent),track=false;$.tooltip={blocked:false,defaults:{delay:200,fade:false,showURL:true,extraClass:"",top:15,left:15,id:"tooltip"},block:function(){$.tooltip.blocked=!$.tooltip.blocked;}};$.fn.extend({tooltip:function(settings){settings=$.extend({},$.tooltip.defaults,settings);createHelper(settings);return this.each(function(){$.data(this,"tooltip",settings);this.tOpacity=helper.parent.css("opacity");this.tooltipText=this.title;$(this).removeAttr("title");this.alt="";}).mouseover(save).mouseout(hide).click(hide);},fixPNG:IE?function(){return this.each(function(){var image=$(this).css('backgroundImage');if(image.match(/^url\(["']?(.*\.png)["']?\)$/i)){image=RegExp.$1;$(this).css({'backgroundImage':'none','filter':"progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='"+image+"')"}).each(function(){var position=$(this).css('position');if(position!='absolute'&&position!='relative')$(this).css('position','relative');});}});}:function(){return this;},unfixPNG:IE?function(){return this.each(function(){$(this).css({'filter':'',backgroundImage:''});});}:function(){return this;},hideWhenEmpty:function(){return this.each(function(){$(this)[$(this).html()?"show":"hide"]();});},url:function(){return this.attr('href')||this.attr('src');}});function createHelper(settings){if(helper.parent)return;helper.parent=$('<div id="'+settings.id+'"><p></p><div class="body"></div><div class="url"></div></div>').appendTo(document.body).hide();if($.fn.bgiframe)helper.parent.bgiframe();helper.title=$('p',helper.parent);helper.body=$('div.body',helper.parent);helper.url=$('div.url',helper.parent);}function settings(element){return $.data(element,"tooltip");}function handle(event){if(settings(this).delay)tID=setTimeout(show,settings(this).delay);else
show();track=!!settings(this).track;$(document.body).bind('mousemove',update);update(event);}function save(){if($.tooltip.blocked||this==current||(!this.tooltipText&&!settings(this).bodyHandler))return;current=this;title=this.tooltipText;if(settings(this).bodyHandler){helper.title.hide();var bodyContent=settings(this).bodyHandler.call(this);if(bodyContent.nodeType||bodyContent.jquery){helper.body.empty().append(bodyContent)}else{helper.body.html(bodyContent);}helper.body.show();}else if(settings(this).showBody){var parts=title.split(settings(this).showBody);helper.title.html(parts.shift()).show();helper.body.empty();for(var i=0,part;(part=parts[i]);i++){if(i>0)helper.body.append("<br/>");helper.body.append(part);}helper.body.hideWhenEmpty();}else{helper.title.html(title).show();helper.body.hide();}if(settings(this).showURL&&$(this).url())helper.url.html($(this).url().replace('http://','')).show();else
helper.url.hide();helper.parent.addClass(settings(this).extraClass);if(settings(this).fixPNG)helper.parent.fixPNG();handle.apply(this,arguments);}function show(){tID=null;if((!IE||!$.fn.bgiframe)&&settings(current).fade){if(helper.parent.is(":animated"))helper.parent.stop().show().fadeTo(settings(current).fade,current.tOpacity);else
helper.parent.is(':visible')?helper.parent.fadeTo(settings(current).fade,current.tOpacity):helper.parent.fadeIn(settings(current).fade);}else{helper.parent.show();}update();}function update(event){if($.tooltip.blocked)return;if(event&&event.target.tagName=="OPTION"){return;}if(!track&&helper.parent.is(":visible")){$(document.body).unbind('mousemove',update)}if(current==null){$(document.body).unbind('mousemove',update);return;}helper.parent.removeClass("viewport-right").removeClass("viewport-bottom");var left=helper.parent[0].offsetLeft;var top=helper.parent[0].offsetTop;if(event){left=event.pageX+settings(current).left;top=event.pageY+settings(current).top;var right='auto';if(settings(current).positionLeft){right=$(window).width()-left;left='auto';}helper.parent.css({left:left,right:right,top:top});}var v=viewport(),h=helper.parent[0];if(v.x+v.cx<h.offsetLeft+h.offsetWidth){left-=h.offsetWidth+20+settings(current).left;helper.parent.css({left:left+'px'}).addClass("viewport-right");}if(v.y+v.cy<h.offsetTop+h.offsetHeight){top-=h.offsetHeight+20+settings(current).top;helper.parent.css({top:top+'px'}).addClass("viewport-bottom");}}function viewport(){return{x:$(window).scrollLeft(),y:$(window).scrollTop(),cx:$(window).width(),cy:$(window).height()};}function hide(event){if($.tooltip.blocked)return;if(tID)clearTimeout(tID);current=null;var tsettings=settings(this);function complete(){helper.parent.removeClass(tsettings.extraClass).hide().css("opacity","");}if((!IE||!$.fn.bgiframe)&&tsettings.fade){if(helper.parent.is(':animated'))helper.parent.stop().fadeTo(tsettings.fade,0,complete);else
helper.parent.stop().fadeOut(tsettings.fade,complete);}else
complete();if(settings(this).fixPNG)helper.parent.unfixPNG();}})(jQuery);

$(function() {
	$('.help-point').tooltip({ 
		track: true, 
		delay:0,
		showURL: false
	});
});
