
var oClientCache = {};

/*
var addButtonEnabled = new Image;
addButtonEnabled.src = site.webPaths.images + 'button-green-add-to-shopping-basket.gif';

var addButtonDisabled = new Image;
addButtonDisabled.src = site.webPaths.images + 'button-green-add-to-shopping-basket-disabled.gif';

var addButtonChooseSize = new Image;
addButtonChooseSize.src = site.webPaths.images + 'button-green-choose-size.gif';
*/

var oSelected = {
	iSkuId: false,
	iProductId: false,
	oSizes: false,
	oImage: false,
	oColour: false,
	oSize: false,
	sSizeClass: false,
	oTab: false,
	oTabContent: false
};

function loadClientCache($) {
	oClientCache = {
		oRef: $('#ref-value'),
		oMf: $('#mfr-value'),
		oMaterial: $('#material-value'),
		oImageControls: {
			oSpin: $('#image-controls-spin'),
			oFront: $('#image-controls-front'),
			oBack: $('#image-controls-back'),
			oZoom: $('#image-controls-zoom')
		},
		oPrice: {
			oUnits: $('#price-units'),
			oDecimal: $('#price-decimal')
		},
		oOldPrice: {
			oUnits: $('#old-price-units'),
			oDecimal: $('#old-price-decimal'),
			oDiscount: $('#old-price-discount-value')
		},
		oSavingsContainer: $('#savings-container'),
		oSelectedSize: $('#selected-size-value'),
		oColourNames: {
			oFilter: $('#current-colour-value'),
			oMfr: $('#current-mfr-colour-value')
		},
		oAddButton: $('#add-button'),
		oNoStockHelpLink: $('#help-no-stock'),
		//************** Added By CM ********************
		oSpinFlashHolder: $('#image-spin-holder')
		//************** End ****************************
	};
	

	
};

function toggleAddButton(enable) {
	//console.debug(oClientCache.oAddButton.attr('disabled'));	
	if (!enable) {
		oClientCache.oAddButton.hide();
		oClientCache.oAddButton.attr('disabled', 'disabled');
		oClientCache.oAddButton.show();
		oClientCache.oAddButton.val('Choose Size');
		oClientCache.oNoStockHelpLink.show();
                return;
	}
	else
	{
		oClientCache.oAddButton.val('Add To Bag');
		oClientCache.oAddButton.attr('disabled', '');
		oClientCache.oNoStockHelpLink.hide();
	}
}


function updateBuySelect(oSkuData) {

	/**
	 * Enable or Disable the 'Add to Bag' button
	 */
       
        // Set max sku level stock level
 
	jQuery('#maxSkuStockLevel').val(oSkuData.stockLevel);

	toggleAddButton(oSkuData.stockLevel > 0);

	oQtySelect = document.getElementById('productQuantity');
	while(oQtySelect.options.length) {
		oQtySelect.remove(0);
	}
	
	var iMax = 10;
	
	if(oSkuData.stockLevel < 10) {
		iMax = oSkuData.stockLevel;
	}
	for(var i=1; i <= iMax; i++) {
		var oOption = document.createElement('option');
		oOption.value=i;
		oOption.text=i;
		try { // work around IE
			oQtySelect.add(oOption, null);
		} catch (oException) {
			oQtySelect.add(oOption);
		}
	}
}

function setSizeOption(el, caller) {
//     Added below if condition for resolving issue related to selection of color an size matrix
       if( el.attr('rel') != undefined ) {
	var aTmp = el.attr('rel').split(':');
	var iProductId = aTmp[0];
	var iSkuId = aTmp[1];
	var iStockScale = aTmp[2];
	var doSelect = true;
// 	console.debug("Clicked: iProductId " + iProductId + ", iSkuId " + iSkuId + ", iStockScale " + iStockScale);

	if (iStockScale == 1) {
		/**
		 * Set button to "Choose size"
		 */
		if (caller && caller == "colourClick") {
			toggleAddButton(false);
			oClientCache.oSelectedSize.empty().append("N/A");
			updateBuySelect({
				stockLevel: 0
			});
		}
		return false;
	};

	oSelected.iSkuId = iSkuId;
	oSelected.sSizeClass = el.attr('class').split(' ')[0];

	if (oSelected.oSize) {
		oSelected.oSize.removeClass('selected');
	};
	oSelected.oSize = el.parent();
	oSelected.oSize.addClass('selected');
	
	/**
	 * Set hidden form variable
	 */
	jQuery('#form_addToBasket_skuId').val(iSkuId);

	/**
	 * Get SKU data
	 */
	var oSkuData = uu.getSkuData('skuId', iSkuId, 'productId', iProductId);

	/**
	 * Show 'N/A' as selected size text
	 */
	if (oSkuData.stockLevel <= 0) {
		oClientCache.oSelectedSize.empty().append("N/A");
	}
	/**oClientCache.oImageControls
	 * Update price, ref, other product data
	 */
	if(oSkuData.backImageLocation!='' && oSkuData.backImageLocation !=null)
	{
		oClientCache.oImageControls.oBack.css('display', 'inline');
	}
	else
	{
		oClientCache.oImageControls.oBack.css('display', 'none');
	}
	updateBuySelect(oSkuData);

	/**
	 * Set Size name and ref
	 */
 //       alert( " size name "+oSkuData.sizeName);
	oClientCache.oSelectedSize.empty().append(oSkuData.sizeName);
	/**
	 * Set hidden form variable
	 */
	jQuery('#selected_Size').val(oSkuData.sizeName);
	oClientCache.oMf.empty().append(oSkuData.mfrColourName);
	oClientCache.oRef.empty().append(oSkuData.skuCode);

        var priceInc= oSkuData.priceInc;
	/**
	 * Set Old Price / Discount
	 */
       // alert( "oSkuData.discountPercentage ---> (1)"+oSkuData.discountPercentage);
	if((0.00 + oSkuData.discountPercentage) > 0.00) {
	        //ClientCache.oOldPrice.oUnits.empty().append(oSkuData.originalPriceInc.split('.')[0]);
		//oClientCache.oOldPrice.oDecimal.empty().append('.' + oSkuData.originalPriceInc.split('.')[1]);
		//ClientCache.oOldPrice.oUnits.empty().append(oSkuData.originalPriceInc);
		//alert( "oSkuData.priceInc ---- (1)"+oSkuData.priceInc);
		//ClientCache.oOldPrice.oUnits.empty().append(Math.round(oSkuData.priceInc));
                  
              
                oClientCache.oOldPrice.oUnits.empty().append(oSkuData.originalPriceInc);
		oClientCache.oOldPrice.oDiscount.empty().append(oSkuData.discountPercentage);

//  		alert( "oSkuData.discountPercentage ---- (1)"+oSkuData.discountPercentage);
// 		alert( "oSkuData.discountPercentage ---- (2)"+oSkuData.priceInc);

				

                if((0.00 +  oSkuData.priceInc) > 0.00) { 
                   var priceAfterDiscount=priceInc - ((priceInc *oSkuData.discountPercentage)/100);
                   if( (0.00 + priceAfterDiscount) > 0.00) {
                     priceInc =""+Math.round(priceAfterDiscount*100)/100;
                   }
                }
		oClientCache.oSavingsContainer.slideDown();
	} else {
		oClientCache.oSavingsContainer.slideUp();
	};

	/**
	 * Set Price
	 */
	var length = priceInc.split('.')[1].length
	if (typeof priceInc.split('.')[1] == "undefined")
		oClientCache.oPrice.oUnits.empty().append(priceInc.split('.')[0]+'.00');
	
	else{
		if(length==1)
			oClientCache.oPrice.oUnits.empty().append(priceInc.split('.')[0]+'.' + priceInc.split('.')[1]+"0");
		else 	
			oClientCache.oPrice.oUnits.empty().append(priceInc.split('.')[0]+'.' + priceInc.split('.')[1]);
	}
	/*oClientCache.oPrice.oDecimal.empty().append('.' + priceInc.split('.')[1]);*/
       }
	return false;
}

jQuery(document).ready(function($){

	/**
	 * Apply standard thickbox
	 */
	//tb_init('a.thickbox')/*.not('.nothickbox')*/;
	
	/**
	 * Store client-side state in this object
	 */
	oSelected = {
		iSkuId: false,
		iProductId: iProductId,
		oSizes: $('#product-sizes-' + iSelectedProductId),
		oImage: $('#image-front-' + iSelectedProductId),
		oBImage:$('#image-back-' + iSelectedProductId),
		oPackagingImage: $('#image-packaging-' + iSelectedProductId),
		oColour: $('#selected-colour'),
		oSize: false,
		sSizeClass: false,
		oTab: $('#selected-tab'),
		oTabContent: $('#tab-contents .selected')
	};

	/**
	 * Cache document objects
	 */
	loadClientCache($);
	
	var speed = 'fast';

	/**
	 * Image Control clicked
	 */
	for(sKey in oClientCache.oImageControls) {
		oClientCache.oImageControls[sKey].click(function() {
			var sImageType = $(this).attr('class').split(' ')[0];
			var iProductId = oSelected.iProductId;
			var oImage = $('#image-' + sImageType + '-' + iProductId);
			if (oImage[0] && oImage.attr('src') != oSelected.oImage.attr('src')) {
				/**
				* Hide,Show product Image
				*/
				if (oSelected.oImage) {
					uu.hideElement(oSelected.oImage, speed, function() {
						uu.showElement(oImage, speed);
					});
				} else {
					uu.showElement(oImage, speed);
				};
				for(sKey2 in oClientCache.oImageControls) {
					oClientCache.oImageControls[sKey2].removeClass('selected');
				};
				oSelected.oImage = oImage;
			};
			$(this).addClass('selected');
			
		    /**************** Added by Creative Made ************************/
		    if(oImage.attr('rel') != null)
		    {
		        //reset flash holder
		        var flashHolder = $('#image-flash-holder');
		        
		        flashHolder.empty();
		        flashHolder.removeClass('flash-replaced');
   			    
		        //insert new flash from dummy image-spin div's rel value
		        $('#image-flash-holder').flash(
		            {
		                src: oImage.attr('rel'),
		                width: 304,
		                height: 320
		            },
		            { version: 8 }
		        );
		        $('#image-flash-holder').css('display', 'block');
		    }
		    else
		    {
		        var flashHolder = $('#image-flash-holder');
		        flashHolder.empty();
		        flashHolder.removeClass('flash-replaced');
		        $('#image-flash-holder').css('display', 'none');
		    }
		    /**************** End *****************************************/
			
			return false;
		});
	};

	$('#image-controls a.disabled').click(function() {
// 		console.log('hi');
		return false;
	});
	
	/**
	 * Colour Swatch clicked
	 */
	$('#product-options-colours .link-swatch').click(function() {
		var iProductId = $(this).attr('rel');
		if (iProductId == oSelected.iProductId) return false;

		oSelected.iProductId = iProductId;
		var oNewlySelectedSizes = $('#product-sizes-' + iProductId);
		var oNewlySelectedImage = $('#image-front-' + iProductId);
		var oNewlySelectedPackagingImage = $('#image-packaging-' + iProductId);

		/**
		 * Change selected class on parent LI
		 */
		if (oSelected.oColour) {
			oSelected.oColour.removeClass('selected');
		};
		oSelected.oColour = $(this).parent();
		oSelected.oColour.addClass('selected');

		/**
		 * Hide,Show size options
		 */
		if (oSelected.oSizes) {
			uu.hideElement(oSelected.oSizes, speed, function() {
				uu.showElement(oNewlySelectedSizes, speed);
			});
		} else {
			uu.showElement(oNewlySelectedSizes, speed);
		};
		oSelected.oSizes = oNewlySelectedSizes;
		
		/**
		 * Hide, Show packaging image
		 */
		if (oSelected.oPackagingImage) {
			uu.hideElement(oSelected.oPackagingImage, speed, function() {
				uu.showElement(oNewlySelectedPackagingImage, speed);
			});
		} else {
			uu.showElement(oNewlySelectedPackagingImage, speed);
		};
		oSelected.oPackagingImage = oNewlySelectedPackagingImage;

		/**
		 * Show main product Image
		 */
		oClientCache.oImageControls.oFront.click();

		/*
		 * Get SKU data
		 */
		
		var oSkuData = uu.getSkuData('productId', iProductId);
		updateBuySelect(oSkuData);

		/**
		 * Re-select the last clicked size option
		 */
		if (oSelected.sSizeClass) {
			setSizeOption($('a.' + oSelected.sSizeClass, oNewlySelectedSizes), 'colourClick');
		} else {
			toggleAddButton(false);
		};

		/**
		 * Set Colour Names
		 */
		oClientCache.oColourNames.oFilter.empty().append(oSkuData.filterColourName);
		oClientCache.oColourNames.oMfr.empty().append(oSkuData.mfrColourName);
               // /*alert*/("filter colur name"+oSkuData.filterColourName);
		/**
		 * Set hidden form variable
		 */
		jQuery('#selected_Colour').val(oSkuData.filterColourName);

		/**
		 * Update state of Image Control buttons
		 */
		
		var oCompareMap = {
 			spinUrl: 'oSpin', // spinUrl is for a .swf
			frontImageUrl: 'oFront',
			backImageUrl: 'oBack',
			zoomUrl: 'oZoom'
 		};
		for(sKey in oCompareMap) {
			var sCacheKey = oCompareMap[sKey];
			//console.debug(sKey + ' ' + sCacheKey);
			//console.debug(oSkuData.images[sKey]);
// 			if (oSkuData.images[sKey]=='') {
				
	//			oClientCache.oImageControls[sCacheKey].addClass('disabled');
 		//	} else {
 			//	oClientCache.oImageControls[sCacheKey].removeClass('disabled');
 		//	};
			//if (sKey == 'backImageUrl') {
				//bBackEnabled=(oSkuData.images[sKey] != '');
			//}	
			//if (sKey == 'spinUrl') {
				//bSpinEnabled = (oSkuData.images[sKey] != '');
 			//};
 			//if (sKey == 'zoomUrl') {
 				//bZoomEnabled = (oSkuData.images[sKey] != '');
 			//};
		};

		/**
		 * Set text for Product "Reference"
		 */
		oClientCache.oMf.empty().append(oSkuData.mfrColourName); 
		oClientCache.oRef.empty().append(oSkuData.skuCode);
		return false;
	});



	/**
	 * Size Option clicked
	 */
	$('#product-options-sizes .link-size-option').click(function(event) {
		return setSizeOption($(this));
	});
	
	/**
	 * Product Tab Clicked
	 */
	$('#product-tab-container .link-tab').click(function() {
		var sId = $(this).attr('class').split(' ')[1];
		var oNewlySelectedTabContent = $('#' + sId);
		if (oSelected.oTabContent) {
			uu.hideElement(oSelected.oTabContent, speed, function() {
				$(this).parent().removeClass('selected');
				uu.showElement(oNewlySelectedTabContent, speed);
			});
		} else {
				uu.showElement(oNewlySelectedTabContent, speed);
		};
		oNewlySelectedTabContent.parent().addClass('selected');
		oSelected.oTabContent = oNewlySelectedTabContent;

		if (oSelected.oTab) {
			oSelected.oTab.removeClass('selected');
		}
		oSelected.oTab = $(this).parent();
		oSelected.oTab.addClass('selected');
		return false;
	});


	/**
	 * Auto-select on quantity focus
	 */
	$('#productQuantity').focus(function() {
		$(this).select();
	});

	/**
	 * Spin Flash replacement
	 */
	$('#spin-flash-container').flash({
		src: $('#spin-flash-container').attr('rel'),
	    width: 270,
		height: 380
	});

	/**
	 * Spin link clicked
	 */
	$(oClientCache.oImageControls.oSpin).click(function() {
		if (!bSpinEnabled) {
			return false;
		}
		var t = this.title || this.name || null;
		var a = this.href || this.alt;
		var g = this.rel || false;
		tb_show(t,a,g);
		this.blur();
		return false;
	});
	
/**
	 * Zoom  link clicked
	 */
	$(oClientCache.oImageControls.oZoom).click(function() {
		if (!bZoomEnabled) {
			return false;
		}
		window.open(this.href);
		return false;
		/*
		var t = this.title || this.name || null;
		var a = this.href || this.alt;
		var g = this.rel || false;
		tb_show(t,a,g);
		this.blur();
		return false;
		*/
	});
});