/**
* @author	Javelin Group
* @version	1.0
*
* @info		JS events for the site
*
* @contents
*/

/* Cam object to hold functions */
var cam = {

	// Text resources set in resources.jsp
	resources:{}
};


/**
* =x: Form field manipulation
**/
function formDisable(formId) {
	$("#" + formId + " input, #" + formId + " select").each(function(i) { this.disabled = "disabled"; });
}

function formEnable(formId) {
	$("#" + formId + " input, #" + formId + " select").each(function(i) { $(this).removeAttr("disabled"); });
}

function setPayment(paymentMethod) {
	switch (paymentMethod) {
		case "paypal":
			formDisable("payDets");
			formDisable("savedCard");
			break;
		case "savedCard":
			formDisable("payDets");
			formEnable("savedCard");
			break;
		case "newCard":
			formDisable("savedCard");
			formEnable("payDets");
			break;
		default:
			return;
	}
}

/* blocks multiple clicks on forms */
function blockMultipleClicks(form) {
	if (form.getAttribute('submitted')) { return false; }
	form.setAttribute('submitted','true');
}

/* removes values from search boxes on click *if* it is the default text */
function inputTextRemove() {
	$("#searchInput").focus(function() { if (this.value == cam.resources["FREE_TEXT_SEARCH_HINT"]) { this.value = ""; } }).blur(function() { if (this.value == "") { this.value = cam.resources["FREE_TEXT_SEARCH_HINT"]; } });
	$("#emailAddress").focus(function() { if (this.value == cam.resources["NEWSLETTER_SIGNUP_HINT"]) { this.value = ""; } }).blur(function() { if (this.value == "") { this.value = cam.resources["NEWSLETTER_SIGNUP_HINT"]; } });
	$("#queryField").focus(function() { if (this.value == cam.resources["STORE_LOCATOR_HINT"]) { this.value = ""; } }).blur(function() { if (this.value == "") { this.value = cam.resources["STORE_LOCATOR_HINT"]; } });
}

/* merch list (de)select all */
function merchSelectToggle() {
	$(".selectAllLink").css("display", "block");
	$("#selectAll").toggle(
		function() {
			$(".productList input[type='checkbox']").each(function() { $(this).attr("checked", "checked"); });
			$("#selectAll").attr("title", cam.resources["MERCHANDISEDLIST_DESELECTALL"]).html(cam.resources["MERCHANDISEDLIST_DESELECTALL"]);
		},
		function() {
			$(".productList input[type='checkbox']").each(function() { $(this).attr("checked", ""); });
			$("#selectAll").attr("title", cam.resources["MERCHANDISEDLIST_SELECTALL"]).html(cam.resources["MERCHANDISEDLIST_SELECTALL"]);
		}
	);
}

/**
* =x: Password Strength Indicator
**/
function passwordTest() {
	if (passwordInput = document.getElementById("password").value) {
		passwordMsg = document.getElementById("passwordStrength");

		// reset variables
		lengthScore = 0;
		typeScore = 0;

		// test for length
		if (passwordInput.length < 6) { lengthScore = 0; }
		else if (passwordInput.length < 8) {lengthScore = 1; }
        else if (passwordInput.length > 7) { lengthScore = 2; }
        else if (passwordInput.length > 8) { lengthScore = 3; }

		// test for content
		if (passwordInput.match(/[a-z]/)) { typeScore += 1; }
		if (passwordInput.match(/[A-Z]/)) { typeScore += 1; }
		if (passwordInput.match(/\d+/)) { typeScore += 1; }
		if (passwordInput.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) { typeScore += 1; }

		// set classes/text from score
		switch (lengthScore) {
			case 0:
				break;
			case 1:
				if (typeScore > 1) { passwordMsg.className = "strength2"; }
				else { passwordMsg.className = "strength1"; }
				break;
            case 2:
                if (typeScore > 2) { passwordMsg.className = "strength3"; }
                else if (typeScore > 1) { passwordMsg.className = "strength2"; }
                break;
            case 3:
                if (typeScore > 3) { passwordMsg.className = "strength4"; }
                else if (typeScore > 2) { passwordMsg.className = "strength3"; }
                break;
			default:
				passwordMsg.className = "strength1";
		}

		// if the field has been cleared then reset indicator
		if (passwordInput.length < 2) { passwordMsg.className = ""; }
	}
}

/**
* =x: Product Image Switcher
**/
var pos = 0; // tracks which image is shown - for prod zoom viewer
function prodImgSwitch() {
	$("#relatedImages a").click(function() {
		$("#primaryImage").attr("src", this.href);
		//pos = $(this).parent().prevAll().length;
		return false;
	});
}


/**
* =x: Auto Submit Dropdowns
**/

function dropdownSubmit() {
	$("#productFm select").change(function() { $("#productFm").submit(); });
    $("#giftVoucherProductFm select.denomination").change(function() { $("#giftVoucherProductFm").submit(); });
	$("#CategoryResultSort select#sortKey1").change(function() {
	        $("#CategoryResultSort").submit();
	     });
	$("#CategoryResultSort select#sortKey").change(function() {
	    var option_val = $('#sortKey option:selected').val();
        $('#sortKey1 option[value=' + option_val + ']').attr('selected', 'selected');
        $("#CategoryResultSort").submit();
	});
    $("#TabbedResultSort select#sortKey").change(function() {
        $("#TabbedResultSort").submit();
    });
    $("#TabbedResultSort select#sortKey2").change(function() {
        var option_val = $('#sortKey2 option:selected').val();
        $('#sortKey option[value=' + option_val + ']').attr('selected', 'selected');
        $("#TabbedResultSort").submit();
    });

}
/** Filter search results per page. Show and hide "showall" option */
function filterResults(selectComp, productCountStr, allResultsLimit, showAllLink, formComp){
	showAllLink.click(
			function(){
				selectComp.selectOptions(productCountStr);
				formComp.submit();
				return false;
			;}
	);

	var productCount = parseInt(productCountStr);
	if(productCount < 10)
	{
        showAllLink.hide();
	} else {
		showAllLink.show();
	}
	if(productCount > allResultsLimit){
		showAllLink.hide();
	}
}

/**
* =x: Animated basket with AJAX data load
**/
var ajaxBasket = false;
var itemsHeight = 0;

// if js is on, add ajax basket link
function addBasketLink() {
	$("<a href='#' id='toggleBasket'>" + cam.resources["BASKET_EXPAND"] + "</a>").toggle(
		function() {
			// create basket id not created already
			if (!ajaxBasket) { initBasket();
            $("#basketContentsMask").fadeIn();
			}
			else {
				$("#basketContents").fadeIn();
	            $("#basketContentsMask").fadeIn();
				$("#toggleBasket").html(cam.resources["BASKET_HIDE"]).css("background", "url(/images/icons/link-btn-mini-basket-hide.png) no-repeat left top");
			}
		},
		function() {
			$("#basketContents").fadeOut();
			$("#basketContentsMask").fadeOut();
			$("#toggleBasket").html(cam.resources["BASKET_EXPAND"]).css("background", "url(/images/icons/link-btn-mini-basket-expand.png) no-repeat left top");
		}
	).insertBefore("span.basketInfo a");
	$("#basketContentsMask").fadeOut();
}



// set up contents of basket
function initBasket() {

	if(window.parent.document.location.protocol == 'https:'){
		basketAction = globalURLPrefix + "SecBasketAjax.action"
		updateBasketAction = globalURLPrefix + "SecUpdateBasketAjax.action"
	}else{
		basketAction = globalURLPrefix + "BasketAjax.action"
		updateBasketAction = globalURLPrefix + "UpdateBasketAjax.action"
	}
	$.getJSON(basketAction, processData);
}

function processData(data){

	$("#basketItems").remove();
	$("#basketMbSubtotals").remove();
	prodList = $("<ul id='basketItems'></ul>");
	basketBtns = $("<span id='mbBtns'></span>")

	basketBtns.append(
			$("<a href='#' id='toggleBasket'>" + cam.resources["BASKET_EXPAND"] + "</a>")

	);

	if ((data.entries).length > 0) {
		for (i=0; i<(data.entries).length; i++) {
			if (data.entries[i].quantity != "") {
				attributesStr = "";
				for (j=0; j<(data.entries[i].variantAttributes).length; j++) {
				    if (data.entries[i].variantAttributes[j].variantAttributeName == 'colour'){
					attributesStr = attributesStr + " <span class='mbQuantity'>" + data.entries[i].variantAttributes[j].variantAttributeValue + "</span>"
				    } else {
				        attributesStr = attributesStr + " <span class='mbQuantity'>" + data.entries[i].variantAttributes[j].variantAttributeName + ": " + data.entries[i].variantAttributes[j].variantAttributeValue + "</span>"
				    }
				}
				wasPriceStr = "";
				if (data.entries[i].wasPriceSubTotal != "") {
					wasPriceStr = "<span class='mbWasPrice'>Was: " + data.entries[i].wasPriceSubTotal + "</span>";
				}
				prodList.append(
				   $("<li>" + "<img src='" + data.entries[i].productImages + "'/>" + "<span class='mbProdName'>" + "<strong>" + data.entries[i].productName + "</strong></span><span class='mbProductDetails'>" + attributesStr + "<span class='mbQuantity'>" + cam.resources["QUANTITY"] + ": " + data.entries[i].quantity + "</span>" + "<span class='mbPrice'>" + data.entries[i].subTotal + "</span>" + wasPriceStr + "<input type='button' class='removeFromMBBasketButton' onclick='$.getJSON(\"" + updateBasketAction + "?button.RemoveEntry[" + data.entries[i].entryId + "]=submit\", processData);'/></span></li>")
				  );

			}
		}
		// Mini Basket Subtotal, showing at the bottom
		totalSub = $("<span id='basketMbSubtotals' class='mbSubtotals'></span>");
		totalSub.append(
							 $("<strong>" + cam.resources["BASKET_SUBTOTAL"] + ": " + data.subtotal + "</strong>")
							);
		prodList.insertBefore("#basketLinks");
		totalSub.insertBefore("#basketLinks");
	} else {
		prodList.append( $("<li>" + cam.resources["BASKET_EMPTY"] + "</li>") );
		prodList.addClass("mbOnlyItem");
		prodList.insertBefore("#basketLinks");
	}

	$("#basketTotalItems").empty();
	if(data.totalItems == ""){
	    $("#basketTotalItems").append("0");
	} else {
	    $("#basketTotalItems").append(data.totalItems);
	}
	$("#basketSubTotal").empty();
	$("#basketSubTotal").append(data.subtotal);


	itemsHeight = $("#basketContents").height() - 0;
	$("#basketContents").css("top", -itemsHeight + "px");

	$("#basketContents").animate({top: "0"}, 1000);
	$("#toggleBasket").html(cam.resources["BASKET_HIDE"]).css("background", "url(/images/icons/link-btn-mini-basket-hide.png) no-repeat left top");

    $('#basketLinks').fadeIn();
	$('.mbBanner').fadeIn();

	ajaxBasket = true;
}

/**
* =x; Tooltips
**/
function initTooltips() {
	$("a.tooltip").click(function() { return false; }).attr("title", "").mouseover(function(e) {
		tooltip = $(this).parent().next();
		tooltip.css({
			left: ($(this).position().left + ($(this).width() / 2)) - (tooltip.width() / 2) + "px",
			top: ($(this).position().top - (tooltip.height() + 10)) + "px"
		})
	}).mouseout(function(e) { tooltip.css("left", "-1000em"); });
}

/**
* =x: Product Carousel
**/
(function(i){i.fn.jcarousel=function(a){if(typeof a=="string"){var c=i(this).data("jcarousel"),b=Array.prototype.slice.call(arguments,1);return c[a].apply(c,b)}else return this.each(function(){i(this).data("jcarousel",new h(this,a))})};var p={vertical:false,rtl:false,start:1,offset:1,size:null,scroll:3,visible:null,animation:"normal",easing:"swing",auto:0,wrap:null,initCallback:null,reloadCallback:null,itemLoadCallback:null,itemFirstInCallback:null,itemFirstOutCallback:null,itemLastInCallback:null, itemLastOutCallback:null,itemVisibleInCallback:null,itemVisibleOutCallback:null,buttonNextHTML:"<div></div>",buttonPrevHTML:"<div></div>",buttonNextEvent:"click",buttonPrevEvent:"click",buttonNextCallback:null,buttonPrevCallback:null,itemFallbackDimension:null},q=false;i(window).bind("load.jcarousel",function(){q=true});i.jcarousel=function(a,c){this.options=i.extend({},p,c||{});this.locked=false;this.buttonPrev=this.buttonNext=this.list=this.clip=this.container=null;if(!c||c.rtl===undefined)this.options.rtl= (i(a).attr("dir")||i("html").attr("dir")||"").toLowerCase()=="rtl";this.wh=!this.options.vertical?"width":"height";this.lt=!this.options.vertical?this.options.rtl?"right":"left":"top";for(var b="",d=a.className.split(" "),e=0;e<d.length;e++)if(d[e].indexOf("jcarousel-skin")!=-1){i(a).removeClass(d[e]);b=d[e];break}if(a.nodeName.toUpperCase()=="UL"||a.nodeName.toUpperCase()=="OL"){this.list=i(a);this.container=this.list.parent();if(this.container.hasClass("jcarousel-clip")){if(!this.container.parent().hasClass("jcarousel-container"))this.container= this.container.wrap("<div></div>");this.container=this.container.parent()}else if(!this.container.hasClass("jcarousel-container"))this.container=this.list.wrap("<div></div>").parent()}else{this.container=i(a);this.list=this.container.find("ul,ol").eq(0)}b!=""&&this.container.parent()[0].className.indexOf("jcarousel-skin")==-1&&this.container.wrap('<div class=" '+b+'"></div>');this.clip=this.list.parent();if(!this.clip.length||!this.clip.hasClass("jcarousel-clip"))this.clip=this.list.wrap("<div></div>").parent(); this.buttonNext=i(".jcarousel-next",this.container);if(this.buttonNext.size()==0&&this.options.buttonNextHTML!=null)this.buttonNext=this.clip.after(this.options.buttonNextHTML).next();this.buttonNext.addClass(this.className("jcarousel-next"));this.buttonPrev=i(".jcarousel-prev",this.container);if(this.buttonPrev.size()==0&&this.options.buttonPrevHTML!=null)this.buttonPrev=this.clip.after(this.options.buttonPrevHTML).next();this.buttonPrev.addClass(this.className("jcarousel-prev"));this.clip.addClass(this.className("jcarousel-clip")).css({overflow:"hidden", position:"relative"});this.list.addClass(this.className("jcarousel-list")).css({overflow:"hidden",position:"relative",top:0,margin:0,padding:0}).css(this.options.rtl?"right":"left",0);this.container.addClass(this.className("jcarousel-container")).css({position:"relative"});!this.options.vertical&&this.options.rtl&&this.container.addClass("jcarousel-direction-rtl").attr("dir","rtl");var f=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null;b=this.list.children("li");var g= this;if(b.size()>0){var j=0;e=this.options.offset;b.each(function(){g.format(this,e++);j+=g.dimension(this,f)});this.list.css(this.wh,j+100+"px");if(!c||c.size===undefined)this.options.size=b.size()}this.container.css("display","block");this.buttonNext.css("display","block");this.buttonPrev.css("display","block");this.funcNext=function(){g.next()};this.funcPrev=function(){g.prev()};this.funcResize=function(){g.reload()};this.options.initCallback!=null&&this.options.initCallback(this,"init");if(!q&& i.browser.safari){this.buttons(false,false);i(window).bind("load.jcarousel",function(){g.setup()})}else this.setup()};var h=i.jcarousel;h.fn=h.prototype={jcarousel:"0.2.5"};h.fn.extend=h.extend=i.extend;h.fn.extend({setup:function(){this.prevLast=this.prevFirst=this.last=this.first=null;this.animating=false;this.tail=this.timer=null;this.inTail=false;if(!this.locked){this.list.css(this.lt,this.pos(this.options.offset)+"px");var a=this.pos(this.options.start);this.prevFirst=this.prevLast=null;this.animate(a, false);i(window).unbind("resize.jcarousel",this.funcResize).bind("resize.jcarousel",this.funcResize)}},reset:function(){this.list.empty();this.list.css(this.lt,"0px");this.list.css(this.wh,"10px");this.options.initCallback!=null&&this.options.initCallback(this,"reset");this.setup()},reload:function(){this.tail!=null&&this.inTail&&this.list.css(this.lt,h.intval(this.list.css(this.lt))+this.tail);this.tail=null;this.inTail=false;this.options.reloadCallback!=null&&this.options.reloadCallback(this);if(this.options.visible!= null){var a=this,c=Math.ceil(this.clipping()/this.options.visible),b=0,d=0;this.list.children("li").each(function(e){b+=a.dimension(this,c);if(e+1<a.first)d=b});this.list.css(this.wh,b+"px");this.list.css(this.lt,-d+"px")}this.scroll(this.first,false)},lock:function(){this.locked=true;this.buttons()},unlock:function(){this.locked=false;this.buttons()},size:function(a){if(a!=undefined){this.options.size=a;this.locked||this.buttons()}return this.options.size},has:function(a,c){if(c==undefined||!c)c= a;if(this.options.size!==null&&c>this.options.size)c=this.options.size;for(var b=a;b<=c;b++){var d=this.get(b);if(!d.length||d.hasClass("jcarousel-item-placeholder"))return false}return true},get:function(a){return i(".jcarousel-item-"+a,this.list)},add:function(a,c){var b=this.get(a),d=0,e=i(c);if(b.length==0){var f;b=this.create(a);for(var g=h.intval(a);f=this.get(--g);)if(g<=0||f.length){g<=0?this.list.prepend(b):f.after(b);break}}else d=this.dimension(b);if(e.get(0).nodeName.toUpperCase()=="LI"){b.replaceWith(e); b=e}else b.empty().append(c);this.format(b.removeClass(this.className("jcarousel-item-placeholder")),a);e=this.options.visible!=null?Math.ceil(this.clipping()/this.options.visible):null;d=this.dimension(b,e)-d;a>0&&a<this.first&&this.list.css(this.lt,h.intval(this.list.css(this.lt))-d+"px");this.list.css(this.wh,h.intval(this.list.css(this.wh))+d+"px");return b},remove:function(a){var c=this.get(a);if(!(!c.length||a>=this.first&&a<=this.last)){var b=this.dimension(c);a<this.first&&this.list.css(this.lt, h.intval(this.list.css(this.lt))+b+"px");c.remove();this.list.css(this.wh,h.intval(this.list.css(this.wh))-b+"px")}},next:function(){this.stopAuto();this.tail!=null&&!this.inTail?this.scrollTail(false):this.scroll((this.options.wrap=="both"||this.options.wrap=="last")&&this.options.size!=null&&this.last==this.options.size?1:this.first+this.options.scroll)},prev:function(){this.stopAuto();this.tail!=null&&this.inTail?this.scrollTail(true):this.scroll((this.options.wrap=="both"||this.options.wrap== "first")&&this.options.size!=null&&this.first==1?this.options.size:this.first-this.options.scroll)},scrollTail:function(a){if(!(this.locked||this.animating||!this.tail)){var c=h.intval(this.list.css(this.lt));!a?c-=this.tail:c+=this.tail;this.inTail=!a;this.prevFirst=this.first;this.prevLast=this.last;this.animate(c)}},scroll:function(a,c){this.locked||this.animating||this.animate(this.pos(a),c)},pos:function(a){var c=h.intval(this.list.css(this.lt));if(this.locked||this.animating)return c;if(this.options.wrap!= "circular")a=a<1?1:this.options.size&&a>this.options.size?this.options.size:a;for(var b=this.first>a,d=this.options.wrap!="circular"&&this.first<=1?1:this.first,e=b?this.get(d):this.get(this.last),f=b?d:d-1,g=null,j=0,l=false,k=0;b?--f>=a:++f<a;){g=this.get(f);l=!g.length;if(g.length==0){g=this.create(f).addClass(this.className("jcarousel-item-placeholder"));e[b?"before":"after"](g);if(this.first!=null&&this.options.wrap=="circular"&&this.options.size!==null&&(f<=0||f>this.options.size)){e=this.get(this.index(f)); if(e.length)g=this.add(f,e.clone(true))}}e=g;k=this.dimension(g);if(l)j+=k;if(this.first!=null&&(this.options.wrap=="circular"||f>=1&&(this.options.size==null||f<=this.options.size)))c=b?c+k:c-k}d=this.clipping();var o=[],n=0;f=a;var m=0;for(e=this.get(a-1);++n;){g=this.get(f);l=!g.length;if(g.length==0){g=this.create(f).addClass(this.className("jcarousel-item-placeholder"));e.length==0?this.list.prepend(g):e[b?"before":"after"](g);if(this.first!=null&&this.options.wrap=="circular"&&this.options.size!== null&&(f<=0||f>this.options.size)){e=this.get(this.index(f));if(e.length)g=this.add(f,e.clone(true))}}e=g;k=this.dimension(g);if(k==0)throw Error("jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...");if(this.options.wrap!="circular"&&this.options.size!==null&&f>this.options.size)o.push(g);else if(l)j+=k;m+=k;if(m>=d)break;f++}for(g=0;g<o.length;g++)o[g].remove();if(j>0){this.list.css(this.wh,this.dimension(this.list)+j+"px");if(b){c-=j;this.list.css(this.lt,h.intval(this.list.css(this.lt))- j+"px")}}j=a+n-1;if(this.options.wrap!="circular"&&this.options.size&&j>this.options.size)j=this.options.size;if(f>j){n=0;f=j;for(m=0;++n;){g=this.get(f--);if(!g.length)break;m+=this.dimension(g);if(m>=d)break}}f=j-n+1;if(this.options.wrap!="circular"&&f<1)f=1;if(this.inTail&&b){c+=this.tail;this.inTail=false}this.tail=null;if(this.options.wrap!="circular"&&j==this.options.size&&j-n+1>=1){b=h.margin(this.get(j),!this.options.vertical?"marginRight":"marginBottom");if(m-b>d)this.tail=m-d-b}for(;a-- > f;)c+=this.dimension(this.get(a));this.prevFirst=this.first;this.prevLast=this.last;this.first=f;this.last=j;return c},animate:function(a,c){if(!(this.locked||this.animating)){this.animating=true;var b=this,d=function(){b.animating=false;a==0&&b.list.css(b.lt,0);if(b.options.wrap=="circular"||b.options.wrap=="both"||b.options.wrap=="last"||b.options.size==null||b.last<b.options.size)b.startAuto();b.buttons();b.notify("onAfterAnimation");if(b.options.wrap=="circular"&&b.options.size!==null)for(var e= b.prevFirst;e<=b.prevLast;e++)if(e!==null&&!(e>=b.first&&e<=b.last)&&(e<1||e>b.options.size))b.remove(e)};this.notify("onBeforeAnimation");if(!this.options.animation||c==false){this.list.css(this.lt,a+"px");d()}else this.list.animate(!this.options.vertical?this.options.rtl?{right:a}:{left:a}:{top:a},this.options.animation,this.options.easing,d)}},startAuto:function(a){if(a!=undefined)this.options.auto=a;if(this.options.auto==0)return this.stopAuto();if(this.timer==null){var c=this;this.timer=setTimeout(function(){c.next()}, this.options.auto*1E3)}},stopAuto:function(){if(this.timer!=null){clearTimeout(this.timer);this.timer=null}},buttons:function(a,c){if(a==undefined||a==null){a=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="first"||this.options.size==null||this.last<this.options.size);if(!this.locked&&(!this.options.wrap||this.options.wrap=="first")&&this.options.size!=null&&this.last>=this.options.size)a=this.tail!=null&&!this.inTail}if(c==undefined||c==null){c=!this.locked&&this.options.size!== 0&&(this.options.wrap&&this.options.wrap!="last"||this.first>1);if(!this.locked&&(!this.options.wrap||this.options.wrap=="last")&&this.options.size!=null&&this.first==1)c=this.tail!=null&&this.inTail}var b=this;this.buttonNext[a?"bind":"unbind"](this.options.buttonNextEvent+".jcarousel",this.funcNext)[a?"removeClass":"addClass"](this.className("jcarousel-next-disabled")).attr("disabled",a?false:true);this.buttonPrev[c?"bind":"unbind"](this.options.buttonPrevEvent+".jcarousel",this.funcPrev)[c?"removeClass": "addClass"](this.className("jcarousel-prev-disabled")).attr("disabled",c?false:true);this.options.buttonNextCallback!=null&&this.buttonNext.data("jcarouselstate")!=a&&this.buttonNext.each(function(){b.options.buttonNextCallback(b,this,a)}).data("jcarouselstate",a);this.options.buttonPrevCallback!=null&&this.buttonPrev.data("jcarouselstate")!=c&&this.buttonPrev.each(function(){b.options.buttonPrevCallback(b,this,c)}).data("jcarouselstate",c)},notify:function(a){var c=this.prevFirst==null?"init":this.prevFirst< this.first?"next":"prev";this.callback("itemLoadCallback",a,c);if(this.prevFirst!==this.first){this.callback("itemFirstInCallback",a,c,this.first);this.callback("itemFirstOutCallback",a,c,this.prevFirst)}if(this.prevLast!==this.last){this.callback("itemLastInCallback",a,c,this.last);this.callback("itemLastOutCallback",a,c,this.prevLast)}this.callback("itemVisibleInCallback",a,c,this.first,this.last,this.prevFirst,this.prevLast);this.callback("itemVisibleOutCallback",a,c,this.prevFirst,this.prevLast, this.first,this.last)},callback:function(a,c,b,d,e,f,g){if(!(this.options[a]==undefined||typeof this.options[a]!="object"&&c!="onAfterAnimation")){var j=typeof this.options[a]=="object"?this.options[a][c]:this.options[a];if(i.isFunction(j)){var l=this;if(d===undefined)j(l,b,c);else if(e===undefined)this.get(d).each(function(){j(l,this,d,b,c)});else for(var k=d;k<=e;k++)k!==null&&!(k>=f&&k<=g)&&this.get(k).each(function(){j(l,this,k,b,c)})}}},create:function(a){return this.format("<li></li>",a)},format:function(a, c){a=i(a);for(var b=a.get(0).className.split(" "),d=0;d<b.length;d++)b[d].indexOf("jcarousel-")!=-1&&a.removeClass(b[d]);a.addClass(this.className("jcarousel-item")).addClass(this.className("jcarousel-item-"+c)).css({"float":this.options.rtl?"right":"left","list-style":"none"}).attr("jcarouselindex",c);return a},className:function(a){return a+" "+a+(!this.options.vertical?"-horizontal":"-vertical")},dimension:function(a,c){var b=a.jquery!=undefined?a[0]:a,d=!this.options.vertical?(b.offsetWidth|| h.intval(this.options.itemFallbackDimension))+h.margin(b,"marginLeft")+h.margin(b,"marginRight"):(b.offsetHeight||h.intval(this.options.itemFallbackDimension))+h.margin(b,"marginTop")+h.margin(b,"marginBottom");if(c==undefined||d==c)return d;d=!this.options.vertical?c-h.margin(b,"marginLeft")-h.margin(b,"marginRight"):c-h.margin(b,"marginTop")-h.margin(b,"marginBottom");i(b).css(this.wh,d+"px");return this.dimension(b)},clipping:function(){return!this.options.vertical?this.clip[0].offsetWidth-h.intval(this.clip.css("borderLeftWidth"))- h.intval(this.clip.css("borderRightWidth")):this.clip[0].offsetHeight-h.intval(this.clip.css("borderTopWidth"))-h.intval(this.clip.css("borderBottomWidth"))},index:function(a,c){if(c==undefined)c=this.options.size;return Math.round(((a-1)/c-Math.floor((a-1)/c))*c)+1}});h.extend({defaults:function(a){return i.extend(p,a||{})},margin:function(a,c){if(!a)return 0;var b=a.jquery!=undefined?a[0]:a;if(c=="marginRight"&&i.browser.safari){var d={display:"block","float":"none",width:"auto"},e,f;i.swap(b,d, function(){e=b.offsetWidth});d.marginRight=0;i.swap(b,d,function(){f=b.offsetWidth});return f-e}return h.intval(i.css(b,c))},intval:function(a){a=parseInt(a);return isNaN(a)?0:a}})})(jQuery);


/**
* =x: Product Zoom
**/
function addZoomLink() {
	if($(".productImage").length > 0) {
        $(".zoomPrimaryImgBtn").append('<a href="#" onclick="launchZoom(); return false;">' + cam.resources["PRODUCT_DETAIL_ZOOM"] + '</a>');
        $(".zoomOnlyImgBtn").append('<a href="#" onclick="launchZoom(); return false;">' + cam.resources["PRODUCT_DETAIL_ZOOM"] + '</a>');
		$(document.body).append( $("<div class='imageZoomOverlay' style='display: none; width: " + $(document).width() + "px; height: " + $(document).height() + "px;'> </div><div class='imageZoomWindow'><h2 class='imageZoomTitle'>ZOOM VIEWER - <span>Mouseover large image to zoom and pan</span></h2><span class='overlayButton'><a href='javascript:void(0);' class='closeButton' onclick='hideZoom(); return false;'>" + cam.resources["PRODUCT_DETAIL_ZOOM_CLOSE"] + "</a></span><div class='zoomHolder'><div class='zoomedImage'><img src='' alt='' /></div></div><p id='status'></p></div>") );

		// set alt images if applicable
		relImages = $("#relatedImages").clone().attr("id", "zoomRelatedImages");
		$(".zoomHolder").append(relImages);
		$("#zoomRelatedImages a").each(function(i) {
			this.href = imageLinks[i+1];
		});
		swapZoomedImage();

		$(".imageZoomOverlay, .imageZoomWindow").css("opacity", "0");
	}
}

function hideZoomLink() {
    $(".zoomPrimaryImgBtn").hide();
    $(".zoomOnlyImgBtn").hide();
}

function launchZoom() {
	$(".imageZoomOverlay").css("display", "block").fadeTo("def", 0.6);
	$(".imageZoomWindow").css("display", "block").fadeTo("def", 1);
	$(".zoomedImage").css('zIndex', 900);
    $(".zoomedImage img").attr("src", imageLinks[pos]).css("width", $(".zoomedImage").width()/1.4);
    $(".zoomedImage img").attr("src", imageLinks[pos]).css("height", $(".zoomedImage").height());
    $(".zoomedImage img").css({
        "top": "0",
        "left": "80px",
        "width": $(".zoomedImage").width()/1.4,
        "height": $(".zoomedImage").height()
    });
    if ($("#relatedImages").length == 0) {
       $(".imageZoomWindow").css({
           "display": "block",
           "width": "707px",
           "margin-left": "-345px"
       });
       $(".imageZoomWindow .zoomHolder").css({
           "width": "707px",
           "display": "block"
       });

   }

	// set offsets to work out the 0,0 of the container
	leftOffset = $(".imageZoomWindow").position().left - ($(".imageZoomWindow").width()/2);
    topOffset = $(".imageZoomWindow").position().top + $(".zoomedImage").position().top;

	// set offset level relative to hmc defined zoom level
	if (zoomLevel == null || zoomLevel < 2) { zoomLevel = 2; }
	var offsetLevel = zoomLevel - 1;
	$(".zoomedImage").mousemove(function(e) {
		// mouse pos and img pos debug
		//$("#status").html("x: " + (e.pageX - leftOffset) + ", y: " + (e.pageY - topOffset) + ", top: " + $(".zoomedImage img").css("top") + ", left: " + $(".zoomedImage img").css("left"));

		// set position of larger image in .zoomedImage using the x/y points and -ive abs. pos.
		// offset level req'd for hmc configured zoom level
		$(".zoomedImage img").css({
			"top": -(e.pageY - topOffset) * offsetLevel,
            "left": -(e.pageX - (leftOffset*1.5)) * offsetLevel
		});
	}).mouseover(function() {
		// show larger image in place of small
        $(".zoomedImage img").css("width", $(".zoomedImage").width() * 1.5);
        $(".zoomedImage img").css("height", $(".zoomedImage").height() * zoomLevel);
	}).mouseout(function() {
		// change image back to normal size on mouseout
			// need to change position to be top left again
		$(".zoomedImage img").css({
			"top": "0",
			"left": "80px",
			"width": $(".zoomedImage").width()/1.4,
			"height": $(".zoomedImage").height()
		});
	});
}

function hideZoom() {
	$(".imageZoomOverlay, .imageZoomWindow").fadeTo("def", 0, function() {
		$(".imageZoomOverlay, .imageZoomWindow").css("display", "none");
	});
}

function swapZoomedImage() {
	$("#zoomRelatedImages a").click(function() {
		$(".zoomedImage img").attr("src", this.href);
		return false;
	});
}

/**
* =x: Auto-completion of input fields
**/
function initAutoCompleteSearch()
{
	$("#searchInput").autocomplete( globalURLPrefix + "AutoCompleteProductSearch.action", {
		width: 260,
		minChars: 3,
		delay: 300,
		max: 100,
		selectFirst: false
	});

	$("#searchInput").result(function(event, data, formatted) {
		if (data) {
			location.href = globalURLPrefix + "RedirectAutoCompleteSearch.action?value=" + data[0] + "&id=" + data[1];
		}
	});
}
function resitrctTextArea(className, maxCount)
{
    $(className).keyup(function(){
        var len = this.value.length;
        if (len >= maxCount) {
            this.value = this.value.substring(0, maxCount);
        }
    });
}

/**
 * =x: Initialise recommend a friend
 */
function initRaf() {
    if ($("input#recommendationType_1:checked").attr("value") == 'EMail'){
        $('.rafpost').hide();
		$('label[for=addressBean.email]').append("<em>*</em>");
    } else {
        $('.rafpost').show();
    };

    $("input#recommendationType_1").click(function(){
		if($("input#recommendationType_1").attr('checked') != true){
			$('input[type!=radio]').attr('value','');
			$('.actionerror').remove();
			$('.errorMessage').remove();
			$('label[for=addressBean.email]').append("<em>*</em>");
            $('.mediumInput').getSetSSValue("Please select");
			$('.rafpost').hide();
		}
    });

    $("input#recommendationType_0").click(function(){
		if($("input#recommendationType_0").attr('checked') != true){
			var originalURL = window.location.href;
			window.location.assign(originalURL.split("#",1));
		}
    });	
};

/**
 * Initialise gift vouchers
 */
function initGv() {
	if ($("input#deliveryMethodEmail:checked").attr("value") == 'email'){
	    $('.gvemail').show();
	    $('.gvpost').hide();
	} else {
	    $('.gvemail').hide();
	    $('.gvpost').show();
	};
	$("input#deliveryMethodEmail").click(function(){
	    if ($("input#deliveryMethodEmail").attr("checked") != true){
	        $('.gvemail').show();
	        $('.gvpost').hide();
	    }
	});
	$("input#deliveryMethodPost").click(function(){
	    if ($("input#deliveryMethodPost").attr("checked") != true){
	        $('.gvemail').hide();
	        $('.gvpost').show();
	        $('.mediumInput').getSetSSValue("Please select");
	    }
	});
    
    /* sorting options in select box */
    //get the select
	var $dd = $('#select-id');

	if ($dd.length > 0) { // make sure we found the select we were looking for
		// save the selected value
		var selectedVal = $dd.val();
	
		//get the options and loop through them
		var $options = $('option', $dd);
		var arrVals = [];
		$options.each(function(){
			// push each option value and text into an array
			arrVals.push({
				val: $(this).val(),
				text: $(this).text()
			});
		});
	  
		// sort the array by the value (change val to text to sort by text instead)
		arrVals.sort(function(a, b){
			if(a.val>b.val){
				return 1;
			}
			else if (a.val==b.val){
				return 0;
			}
			else {
				return -1;
			}
		});
	
		//loop through the sorted array and set the text/values to the options
		for (var i = 0, l = arrVals.length; i < l; i++) {
			$($options[i]).val(arrVals[i].val).text(arrVals[i].text);
		}
	
		//set the selected value back
		$dd.val(selectedVal);
	}
};


/**
* =x: Functions to perform on DOM load
**/

$(document).ready(function() {
	
    $('#basketContents').click(function() {
      $('#basketContents').scroll();
    });
		
    $('#productQuickBox .overlayButton a.closeButton').click(function(){
        $('#productQuickBox').hide();
        return false;
    });

    $('.jsvisible').each(
            function(){
               $(this).show();
            }
        );

	$("select option:not([value])").attr("value", "");
		
	// functions
	addBasketLink();
	inputTextRemove();
    prodImgSwitch();
	dropdownSubmit();
	initTooltips();
	merchSelectToggle();
	addZoomLink();
	initAutoCompleteSearch();
    checkBoxesStyled();
	styledDropDown();
	styledToolTips();
	basketTableLastRow();
    submitOrderBtn();
    resitrctTextArea('#review\\.comments',450);
    initRaf();
    initGv();

  //sorting option on subcategory page (fix for lower select box)

    //$('#sortKey').change(function(){
      //  var option_val = $('#sortKey option:selected').val();
       // var str = $('select.sortKey2 option:selected').text();
        //alert(str)
    //nothing is fixed yet
    //});

	// turn on passwird strength indicator
	$("#pwordStrengthIndicator").css("display", "block");

	// set atb overlay size
	$(".atbPopupOverlay").css({
		"height": $(document).height() + "px",
		"width": $(document).width() + "px"
	});

	if ($(".atbPopupContent").length > 0) {
		$(".atbPopupOverlay").css({
			"display": "block",
			"opacity": "0.6"
		});
	}

    $('input.jsenabled').each(
        function(){
            $(this).removeAttr("disabled");
        }
    );
    $('#topNavItems li').hover(function () {
        var result = $(this).offset().left - $('.topNav').offset().left;
        var mainNav = $('.topNav').width();
        var dropDownWidth = $(this).find('span.colsWrapper').width();
        if ((result + dropDownWidth) > mainNav ){
            $(this).find('span.colsWrapper').removeClass('colsWrapper').addClass('colsWrapperRight');
        }
    });
    
});


function variantSwitchManual(oform,productid, actionName) {
    if(!actionName) { oform.action += '#bundles' + productid; }
    else { oform.action = actionName + '#bundles' + productid; }
    oform.submit();
}

function productQuickBox(url) {
    $('#ajaxtargetProductQuickBox').empty();
    $('#ajaxtargetProductQuickBox').load(url);
    $('#productQuickBox').toggle();
}

function productVideoQuickBox(url) {
    $('#ajaxtargetVideoQuickBox').empty();
    $('#ajaxtargetVideoQuickBox').load(url);
    $('#videoQuickBox').toggle();
}

function productSizeGuideQuickBox(url) {
    $('#ajaxtargetSizeGuideQuickBox').empty();
    $('#ajaxtargetSizeGuideQuickBox').load(url);
    $('#sizeGuideQuickBox').toggle();
}

function emailafriendQuickBox(url) {
    $('#ajaxtargetEmailafriendQuickBox').load(url);
    $('#emailafriendQuickBox').toggle();
}

// submitOrder button styled and disabled

function submitOrderBtn() {
    $('.OrderSummarySbmt').click(function() {
       $(document.body).append( $("<div class='popUpWhite' style='width: " + $(document).width() + "px; height: " + $(document).height() + "px;'><div id='clock' style='display: block; top: " + $(document).height() / 2 + "px;'></div></div>") );
        $(this).removeClass("OrderSummarySbmt");
        $(this).addClass("OrderSummarySbmtDisabled");
 });
}

//------------------------------ hiding facets if more than 10
function checkBoxesStyled() {
    $('input:checkbox').checkbox({cls:'jquery-safari-checkbox'});
    $('input:radio').checkbox({cls:'jquery-safari-checkbox'});
}

// styling of select boxes
function styledDropDown(){
    if (navigator.userAgent.match(/iPhone|iPod|iPad|Phone/)) {
      $('.birthdayDrop').css({
          "width":"50px"
      });
      $('.smallDrop, .denomination').css({
          "width":"100px"
      });
    } else {
        $('#quantity').sSelect();
        $('.styledSD').sSelect();
        $('#source').sSelect();
        $('.sortKey2').sSelect({containerClass: 'zdravko'});
        $('.sortSelectBox').sSelect();
        $('.denomination').sSelect();
        $('.sortKey').sSelect();
        $('.mediumInput').sSelect({ddMaxHeight: '300px'});
        $('.smallDrop').sSelect();
        $('.birthdayDrop').sSelect({ddMaxHeight: '300px'});
        $('.countryInput').sSelect({ddMaxHeight: '300px'});
    }
}

// tool tips
function styledToolTips(){
    $('.tTip').tipTip();
}


/* removing background image from each last table row */
function basketTableLastRow() {
    $('table').find('tr:last').css({'background' : 'none'});
    $('table.basketTable').find('tbody tr:last').css({'background' : 'none !important'});
    $('table.paymentTable').find('tbody tr:first td').css({'padding-top' : '4px !important'});
    //$('table.addressTable').find('td').css({'padding-bottom' : '40px !important'});
    //$('.OrderSummary table.basketTable tbody tr:last').css({'background' : 'none !important'});
    //$('.OrderConfirmation table.basketTable tbody tr:last').each().css({'background' : 'none !important'});
}

// LHN and content equal heights (fix for all IE versions)
function contentHeight() {
    var productsHeight = $('#content').height();
    var LHNHeight = $('#LHN').height();
    if (LHNHeight > productsHeight){
        $('.cont2').css({
            "height": LHNHeight + "px"
            });
        } else  {
           $('.cont2').css({
               "height": productsHeight + "px"
               });
        }
}



