var LightBoxHomeDeliveryStockCheck = {};

var old_pagename = "";
var old_prop4 = "";
var old_prop5 = "";
var old_channel = "";
var old_events = "";
var old_products = "";

$(document).ready(function(){

	var IE6 = ($.browser.msie && parseInt($.browser.version) == 6);
	var IE7 = ($.browser.msie && parseInt($.browser.version) == 7);
	var FF = ($.browser.mozilla); //needs work to not do it for FF3 etc
	

	var dialogue = $("#lightBox")[0];
	var	overlay = $("#overlay")[0];	
	//next toggle used on trolley lister only
	
	LightBoxHomeDeliveryStockCheck = new (function(){
		var OVERLAY_TOOLTIP = "To close the stock availability box click on the 'Close X' link";

		$("input.pdpbutton, input.btnbuyreserve").bind("click", trolleyButton_onClick);
	
	    /*
	     * This will call an AJAX request and show a lightbox
	     * partnumber to be displayed is called via the rel value on the link
	     * @param void
	     * @return false (to stop default action)
	     */
	    this.trolleyButton_onClick = trolleyButton_onClick;
	    
	    
	    
	    function trolleyButton_onClick() { 
	    	
    	    var primaryPartNumber = document.getElementById("productId").value;
    	    var storeId = document.getElementById("storeId").value;
    	    var langId = document.getElementById("langId").value;
    	    var allAlternativeItems = document.getElementById("allAlternativeItems").value;
    	   
    	    var quantity = $("#catEntryQty_0").val();

		    var relatedItemsSelected = "";
		    
	    	var relatedItemsSelected = "";
			$("input[type=checkbox][name^=catEntryId_][@checked]").each(
				function(){
					relatedItemsSelected +=$(this).val()+"|";
				}
			);
			//now handle bundles type B which will pass all items in together
			$("input[type=checkbox][name^=soB][@checked]").each(
				function(){
					relatedItemsSelected +=$(this).val()+"|";
				}
			);

		
			var data = "storeId="+storeId+"&langId="+langId;
			data += "&primaryProductId="+primaryPartNumber;
			data += "&relatedItemsSelected="+relatedItemsSelected;
			data += "&allAlternativeItems="+allAlternativeItems;
			data += "&quantity="+quantity;
	    	//data = preprocessData(data);	
			LightBox.setHTML(LightBox.loadingHTML);
			LightBox.showOverlay();
	        LightBox.setOverlayTooltip(LightBoxHomeDeliveryStockCheck.OVERLAY_TOOLTIP) 
	     	LightBox.showLightBox();
		
			var ajax = $.ajax({
				url: window.location.protocol + "//" + window.location.host + "/webapp/wcs/stores/servlet/HomeDeliveryStockCheckURL",
				dataType: "json",
				type: "post",
				data: data,
				success:showStockAvailabilityLightBox,
				error: showRequestError
			});
		
		    return false;
	    }
	   	
	   	this.showStockAvailabilityLightBox = showStockAvailabilityLightBox;
	   		
		function showStockAvailabilityLightBox(json) {
			LightBox.hideOverlay();
			if(typeof json.status === "string") {
				LightBox.setOverlayTooltip("");	
			}
			else {
				LightBox.setOverlayTooltip(OVERLAY_TOOLTIP);
			}
			LightBox.showOverlay();		
			LightBox.hideLightBox();
			LightBox.setHTML(json.html);
			LightBox.showLightBox();
			LightBoxHomeDeliveryStockCheckPage.init();
			
			//Update Persistent trolley
			//alert(json.trolleyTotalQuantity+" - "+json.trolleyTotalValue);			
			if(json.trolleyTotalQuantity !=null && json.trolleyTotalValue != null){
				homebase.page.saveTrolley({quantity : json.trolleyTotalQuantity, total : json.trolleyTotalValue});
				homebase.page.displayPersistentTrolley();
			}

			
			if(old_pagename==""){
				old_pagename = s.pageName;
			}
			if(old_prop4==""){
				old_prop4 = s.prop4;
			}
			if(old_prop5==""){
				old_prop5 = s.prop5;
			}
			if(old_channel==""){
				old_channel = s.channel;
			}
			if(old_events==""){
				old_events = s.events;
			}
			if(old_products==""){
				old_products = s.products;
			}
				
			/* Start of tagging code */
			/* SiteCatalyst code version: H.9. Copyright 1997-2007 Omniture, Inc. More info available at http://www.omniture.com */
			if(json.status == 'OK')
			{
				s.pageName="trolley:buy:additemlightbox:availability:";
				s.prop4="trolley:buy:additemlightbox:availability:";
				s.products=null;
				s.events=null;
				s.eVar7=null;
				s.eVar14=null;
				s.prop5=null;
				s.linkTrackEvents ="";
				s.linkTrackVars = "";				
				
			}
			else if(json.status == 'OOS')
			{
				s.pageName="trolley:buy:additemlightbox:outofstock:";
				s.prop4="trolley:buy:additemlightbox:outofstock:";
				s.events="event11, event12";
				s.products=json.sproduct;
				s.linkTrackEvents ="event11,event12";
				s.linkTrackVars = "products";				
			}
			else
			{
				s.pageName="trolley:buy:additemlightbox:postcode:";
				s.prop4="trolley:buy:additemlightbox:postcode:";
				s.products=null;
				s.events=null;
				s.eVar7=null;
				s.eVar14=null;
				s.prop5=null;
				s.linkTrackEvents ="";
				s.linkTrackVars = "";								
			}
			s.channel="trolley:";
			s.currencyCode="GBP";
			s.visitorNamespace="homebase";
			s.dc="112";
			/* You may give each page an identifying name, server, and channel on the next lines. */
			/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
			var s_code=s.t();
			
			/* End SiteCatalyst code version: H.9. */
		} 

	    /*
	     * Shows an AJAX request error in a lightbox
	     * @param XMLHttpRequest as object
	     * @param textStatus as string
	     * @param errorThrown as string
	     * @return void
	     */
	    this.showRequestError = showRequestError;
	    function showRequestError(XMLHttpRequest, textStatus, errorThrown) {
	    	
	    	var html = '';
	    	html += '<div id="lightBoxError">';
	    	html +=		'<div class="heading"><h2>An error occured</h2><a href="#" class="closeLightBox">Close</a></div>'
	    	html +=		'<div class="details">';
	    	html +=			'<p>Request: '+XMLHttpRequest+'</p>';
	    	html +=			'<p>Status: '+textStatus+'</p>';
	    	html +=			'<p>Code: '+XMLHttpRequest.status+'</p>';
	    	html +=			'<p>Error: '+errorThrown+'</p>';
	    	html +=		'</div>';
	    	html += '</div>';
	    	LightBox.hideLightBox();
	    	LightBox.setHTML(html);
	       	LightBox.showLightBox();
			/*lightBoxFormFocus();*/
	    }	
		
	}); 
});

var LightBoxHomeDeliveryStockCheckPage = new (function() {
	
	this.init = init;
	function init() {
		var closeButton = $("#lightBox div.stockCheck .closeLightBox")[0] || null;
		if(closeButton) {
			closeButton.onclick = closeLightBox_onClick;
		}
		$("#lightBox a.newpostcode").bind("click", fShowHidePostcodeInput);
		$("#lightBox div.stockCheck .closeLightBox").bind("click", closeLightBox_onClick);
		$("#lightBox div.stockCheck .continueShopping").bind("click", closeLightBox_onClick);
		

		//$("#lightBox").css("top",120);
			
		$("#homeDeliveryStockCheckForm").bind("submit",submitStockAvailForm_onClick);
	}
	this.closeLightBox_onClick = closeLightBox_onClick;
	function closeLightBox_onClick() {
		//LightBoxHomeDeliveryStockCheck.trackLightboxEvents(this, LightBoxHomeDeliveryStockCheck.TRK_EVENTS.lightboxclose);
		LightBox.hideLightBox();
		LightBox.hideOverlay();
		
		s.pageName=old_pagename;
		s.channel=old_channel;
		/* Start of tagging code */
		/* SiteCatalyst code version: H.9. Copyright 1997-2007 Omniture, Inc. More info available at http://www.omniture.com */	
		s.pageName=old_pagename;
		s.prop4=old_prop4;
		if(old_events.indexOf("event21")>=0)
			s.events=old_events;
		else
			s.events=old_events + ",event21";
		s.linkTrackEvents ="event21";
		s.linkTrackVars = "products";		
		s.prop5=old_prop5;
		s.channel=old_channel;
		s.products=old_products;
		s.currencyCode="GBP";
		s.visitorNamespace="homebase";
		s.dc="112";
		/* You may give each page an identifying name, server, and channel on the next lines. */
		/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
		var s_code=s.t();
		
		/* End SiteCatalyst code version: H.9. */
		
		return false;
	}
	
	function submitStockAvailForm_onClick(){
		var primaryPartNumber = $("input#primaryProductId").val();
    	var relatedItemsSelected = $("input#relatedItemsSelected").val();
		var postCode = $("input#postCode").val();
		var allAlternativeItems = document.getElementById("allAlternativeItems").value;		
		var quantity = $("input#quantity").val();
		var storeId = document.getElementById("storeId").value;
	    var langId = document.getElementById("langId").value;
		
		var data = "primaryProductId="+primaryPartNumber;
		data += "&relatedItemsSelected="+relatedItemsSelected;
		data += "&postCode="+postCode;
		data += "&storeId="+storeId;
		data += "&langId="+langId;
		data += "&flowInd=flowPostCodeSubmit";
		data += "&allAlternativeItems="+allAlternativeItems;
		data += "&quantity="+quantity;
				  	
    	//data = preprocessData(data);	
		LightBox.setHTML(LightBox.loadingHTML);
		LightBox.showOverlay();
        LightBox.setOverlayTooltip(LightBoxHomeDeliveryStockCheck.OVERLAY_TOOLTIP) 
     	LightBox.showLightBox();
	
		var ajax = $.ajax({
			url: window.location.protocol + "//" + window.location.host + "/webapp/wcs/stores/servlet/HomeDeliveryStockCheckURL",
			dataType: "json",
			type: "post",
			data: data,
			success:reloadStockAvailabilityLightBox,
			error: LightBoxHomeDeliveryStockCheck.showRequestError
		});
			
		
		return false;
	}
	
	function fShowHidePostcodeInput () {
  			$('a.newpostcode').hide();
  			$('div.postcodeentry').show();
  		}
	
	function reloadStockAvailabilityLightBox(json){
		LightBoxHomeDeliveryStockCheck.showStockAvailabilityLightBox(json);
	}
	
	
});

