
var outOfStockForcedBonuses = "";
var outOfStockBonusSelects = "";
var outOfStockBuyTogethers = "";

var outOfStockForcedBonusesLMN = "";
var outOfStockBonusSelectsLMN = "";
var outOfStockBuyTogethersLMN = "";

function checkForOptionalPromoSelection(operation, url, product) {
	//Check if he has selected any Optional Promotion
	optionalPromotionsSize = document.getElementById('optionalPromotions_size');
	if(optionalPromotionsSize != null) {
		optionalPromoSelected = false;
		for(i=0; i<optionalPromotionsSize.value; i++) {
			optionalPromotionalProductsSize = document.getElementById('optionalPromotions' + i + '_size');
			if(optionalPromotionalProductsSize != null) {
				for (j=0; j<optionalPromotionalProductsSize.value; j++) {
					checkbox = document.getElementById('optionalPromotions' + i + '_productVOs' + j + '_select');
					if(checkbox.checked == true) {
						optionalPromoSelected = true;
						break;
					}
				}
			}
			if(optionalPromoSelected)
				break;
		}
	}
	if(optionalPromoSelected && operation == "productAlertCheck")
		productAlertCheck(url, product);
	else if (optionalPromoSelected && operation == "addToCart")
		addToCart(url, product);
	else {
		// User has not selected the Optional Product. So, Alert the User
		simulateClick('optionalAlertLink');
	}
}

function validateProductSelections() {

	parameters = "";
	//Check if he has selected all applicable promotions (Bonus Select)
	bonusSelectSize = document.getElementById('bonusSelectPromotion_size');
	selectedCount = 0;
	if(bonusSelectSize != null)
	{
		outOfStockBonusSelects = ""
		outOfStockBonusSelectsLMN = ""
		//Read all Bonus Select boxes that have been checked and verify that exact no. of checkboxes have been checked
		var sonyProduct = "true";
		for(i=0; i<bonusSelectSize.value; i++) {
			checkbox = document.getElementById('bonusSelectPromotion_productVOs' + i + '_select');
			if(checkbox.checked == true) {

				//Add this to the request parameters
				element = document.getElementById('bonusSelectPromotion_productVOs' + i + '_promotionalPrice');
				name = element.name;
				name = name.replace("[" + i + "]", "[" + selectedCount + "]");
				parameters = parameters + name + "=" + element.value + "&";

				element = document.getElementById('bonusSelectPromotion_productVOs' + i + '_productPrice');
				name = element.name;
				name = name.replace("[" + i + "]", "[" + selectedCount + "]");
				parameters = parameters + name + "=" + element.value + "&";

				element = document.getElementById('bonusSelectPromotion_productVOs' + i + '_productMaterialName');
				name = element.name;
				name = name.replace("[" + i + "]", "[" + selectedCount + "]");
				parameters = parameters + name + "=" + element.value + "&";

				element = document.getElementById('bonusSelectPromotion_productVOs' + i + '_sonyProduct');
				name = element.name;
				name = name.replace("[" + i + "]", "[" + selectedCount + "]");
				parameters = parameters + name + "=" + element.value + "&";
				sonyProduct = element.value;
				
				element = document.getElementById('bonusSelectPromotion_productVOs' + i + '_catalogId');
				name = element.name;
				name = name.replace("[" + i + "]", "[" + selectedCount + "]");
				parameters = parameters + name + "=" + element.value + "&";

				element = document.getElementById('bonusSelectPromotion_productVOs' + i + '_productAvailability');
				name = element.name;
				name = name.replace("[" + i + "]", "[" + selectedCount + "]");
				parameters = parameters + name + "=" + element.value + "&";

				selectedCount = selectedCount + 1;

				//Check for Product Availability
				if(sonyProduct == "true" && element.value == -1) {
					outOfStockBonusSelects = outOfStockBonusSelects + document.getElementById('bonusSelectPromotion_productVOs' + i + '_productMaterialName').value + "#%#";
					outOfStockBonusSelectsLMN = outOfStockBonusSelectsLMN + document.getElementById('bonusSelectPromotion_productVOs' + i + '_localMaterialName').value + "#%#";
				}
			}
		}

		minSelect = document.getElementById('bonusSelectPromotion_promotionValue').value;

		//if exact no of checboxes have not been checked,
		if(selectedCount < minSelect) {
			//Show Division which says "Select At Least X out of Y Items"
			showhide('maxBonusSelectErrorMessageDiv', 0);
			showhide('minBonusSelectErrorMessageDiv', 1);
			//showhide('errorMessageDiv', 1);
			simulateClick('errorMessageLink');
			return false;
		}
		else if (selectedCount > minSelect) {
			//Show Division which says "Select Max X out of Y Items"
			showhide('minBonusSelectErrorMessageDiv', 0);
			showhide('maxBonusSelectErrorMessageDiv', 1);
			//showhide('errorMessageDiv', 1);
			simulateClick('errorMessageLink');
			return false;
		}
		else {	//If exactly selected go on...
			//Bonus Select Promotion name
			element = document.getElementById('bonusSelectPromotion_promotionName');
			parameters = parameters + element.name + "=" + element.value + "&";

			//Bonus Select Promotion Message
			//element = document.getElementById('bonusSelectPromotion_promotionMessage');
			//parameters = parameters + element.name + "=" + element.value + "&";

			//Bonus Select Promotion ID
			element = document.getElementById('bonusSelectPromotion_promotionId');
			parameters = parameters + element.name + "=" + element.value + "&";

			//Bonus Select Promotion Version
			element = document.getElementById('bonusSelectPromotion_promotionVersion');
			parameters = parameters + element.name + "=" + element.value + "&";

			//Bonus Select Promotion Value
			element = document.getElementById('bonusSelectPromotion_promotionValue');
			parameters = parameters + element.name + "=" + element.value + "&";

			//Bonus Select Promotion Type
			element = document.getElementById('bonusSelectPromotion_promotionType');
			parameters = parameters + element.name + "=" + element.value + "&";

			//Bonus Select Promotion Applicable Quantity
			element = document.getElementById('bonusSelectPromotion_promoApplicableQuantity');
			parameters = parameters + element.name + "=" + element.value + "&";

			//Bonus Select Promotion Elements Size
			element = document.getElementById('bonusSelectPromotion_size');
			parameters = parameters + element.name + "=" + element.value + "&";
		}
	}

	//If the product has applicable Special Price Promotion, add the promotion value (only this is required to be sent)
	element = document.getElementById('priceAffectingPromotion_promotionValue');
	if(element != null) {
		parameters = parameters + element.name + "=" + element.value + "&";
		
		element = document.getElementById('priceAffectingPromotion_promotionName');
		parameters = parameters + element.name + "=" + element.value + "&";
		
		//element = document.getElementById('priceAffectingPromotion_promotionMessage');
		//parameters = parameters + element.name + "=" + element.value + "&";
		
		element = document.getElementById('priceAffectingPromotion_promotionId');
		parameters = parameters + element.name + "=" + element.value + "&";
		
		element = document.getElementById('priceAffectingPromotion_promotionVersion');
		parameters = parameters + element.name + "=" + element.value + "&";
		
		element = document.getElementById('priceAffectingPromotion_promotionSpecialPrice');
		parameters = parameters + element.name + "=" + element.value + "&";
		
		element = document.getElementById('priceAffectingPromotion_promotionType');
		parameters = parameters + element.name + "=" + element.value + "&";
		
		element = document.getElementById('priceAffectingPromotion_promoApplicableQuantity');
		parameters = parameters + element.name + "=" + element.value + "&";
		
	}
	

	//Check if the product has applicable Forced Bonus
	forcedBonusSize = document.getElementById('forcedBonusPromotion_size');
	if(forcedBonusSize != null) {
		
		outOfStockForcedBonuses = "";
		outOfStockForcedBonusesLMN = "";
		var sonyProduct = "true";
		for(i=0; i<forcedBonusSize.value; i++) {
			
			//Add this to the request parameters
			element = document.getElementById('forcedBonusPromotion_productVOs' + i + '_promotionalPrice');
			parameters = parameters + element.name + "=" + element.value + "&";

			element = document.getElementById('forcedBonusPromotion_productVOs' + i + '_productPrice');
			parameters = parameters + element.name + "=" + element.value + "&";

			element = document.getElementById('forcedBonusPromotion_productVOs' + i + '_productMaterialName');
			parameters = parameters + element.name + "=" + element.value + "&";

			element = document.getElementById('forcedBonusPromotion_productVOs' + i + '_sonyProduct');
			parameters = parameters + element.name + "=" + element.value + "&";
			sonyProduct = element.value;

			element = document.getElementById('forcedBonusPromotion_productVOs' + i + '_catalogId');
			parameters = parameters + element.name + "=" + element.value + "&";

			element = document.getElementById('forcedBonusPromotion_productVOs' + i + '_productAvailability');
			parameters = parameters + element.name + "=" + element.value + "&";

			//Check for Product Availability
			if(sonyProduct == "true" && element.value == -1) {	//Product Out of Stock
				outOfStockForcedBonuses = outOfStockForcedBonuses + document.getElementById('forcedBonusPromotion_productVOs' + i + '_productMaterialName').value + "#%#";
				outOfStockForcedBonusesLMN = outOfStockForcedBonusesLMN + document.getElementById('forcedBonusPromotion_productVOs' + i + '_localMaterialName').value + "#%#";
			}
		}

		//Forced Bonus Promotion name
		element = document.getElementById('forcedBonusPromotion_promotionName');
		parameters = parameters + element.name + "=" + element.value + "&";

		//Forced Bonus Promotion Message
		//element = document.getElementById('forcedBonusPromotion_promotionMessage');
		//parameters = parameters + element.name + "=" + element.value + "&";

		//Forced Bonus Promotion ID
		element = document.getElementById('forcedBonusPromotion_promotionId');
		parameters = parameters + element.name + "=" + element.value + "&";

		//Forced Bonus Promotion Version
		element = document.getElementById('forcedBonusPromotion_promotionVersion');
		parameters = parameters + element.name + "=" + element.value + "&";

		//Forced Bonus Promotion Value
		element = document.getElementById('forcedBonusPromotion_promotionValue');
		parameters = parameters + element.name + "=" + element.value + "&";

		//Forced Bonus Promotion Type
		element = document.getElementById('forcedBonusPromotion_promotionType');
		parameters = parameters + element.name + "=" + element.value + "&";

		//Forced Bonus Promo Applicable Qty
		element = document.getElementById('forcedBonusPromotion_promoApplicableQuantity');
		parameters = parameters + element.name + "=" + element.value + "&";

		//Forced Bonus Promotion Elements Size
		element = document.getElementById('forcedBonusPromotion_size');
		parameters = parameters + element.name + "=" + element.value + "&";
	}

	//Check if he has selected any Optional Promotion
	optionalPromotionsSize = document.getElementById('optionalPromotions_size');
	if(optionalPromotionsSize != null) {
		optionalPromoSelected = false;
		outOfStockBuyTogethers = "";
		outOfStockBuyTogethersLMN = "";
		for(i=0; i<optionalPromotionsSize.value; i++) {
			optionalPromotionalProductsSize = document.getElementById('optionalPromotions' + i + '_size');
			selectedCount = 0;
			if(optionalPromotionalProductsSize != null) {
				for (j=0; j<optionalPromotionalProductsSize.value; j++) {
					checkbox = document.getElementById('optionalPromotions' + i + '_productVOs' + j + '_select');
					if(checkbox.checked == true) {
						
						//Add this to the request parameters
						element = document.getElementById('optionalPromotions' + i + '_productVOs' + j + '_promotionalPrice');
						name = element.name;
						name = name.replace("productVOs[" + j + "]", "productVOs[" + selectedCount + "]");
						parameters = parameters + name + "=" + element.value + "&";

						element = document.getElementById('optionalPromotions' + i + '_productVOs' + j + '_productPrice');
						name = element.name;
						name = name.replace("productVOs[" + j + "]", "productVOs[" + selectedCount + "]");
						parameters = parameters + name + "=" + element.value + "&";

						element = document.getElementById('optionalPromotions' + i + '_productVOs' + j + '_productMaterialName');
						name = element.name;
						name = name.replace("productVOs[" + j + "]", "productVOs[" + selectedCount + "]");
						parameters = parameters + name + "=" + element.value + "&";

						element = document.getElementById('optionalPromotions' + i + '_productVOs' + j + '_catalogId');
						name = element.name;
						name = name.replace("productVOs[" + j + "]", "productVOs[" + selectedCount + "]");
						parameters = parameters + name + "=" + element.value + "&";

						element = document.getElementById('optionalPromotions' + i + '_productVOs' + j + '_productAvailability');
						name = element.name;
						name = name.replace("productVOs[" + j + "]", "productVOs[" + selectedCount + "]");
						parameters = parameters + name + "=" + element.value + "&";

						//Check for Product Availability; if not available, add to some list
						if(element.value == -1) {
							outOfStockBuyTogethers = outOfStockBuyTogethers + document.getElementById('optionalPromotions' + i + '_productVOs' + j + '_productMaterialName').value + "#%#";
							outOfStockBuyTogethersLMN = outOfStockBuyTogethersLMN + document.getElementById('optionalPromotions' + i + '_productVOs' + j + '_localMaterialName').value + "#%#";
						}
						
						optionalPromoSelected = true;
						selectedCount = selectedCount + 1;

					}
				}

				if(selectedCount > 0) {
					//Optional / Buy Together Promotion name
					element = document.getElementById('optionalPromotions' + i + '_promotionName');
					parameters = parameters + element.name + "=" + element.value + "&";

					//Optional / Buy Together Promotion Message
					//element = document.getElementById('optionalPromotions' + i + '_promotionMessage');
					//parameters = parameters + element.name + "=" + element.value + "&";

					//Optional / Buy Together Promotion ID
					element = document.getElementById('optionalPromotions' + i + '_promotionId');
					parameters = parameters + element.name + "=" + element.value + "&";

					//Optional / Buy Together Promotion Version
					element = document.getElementById('optionalPromotions' + i + '_promotionVersion');
					parameters = parameters + element.name + "=" + element.value + "&";

					//Optional / Buy Together Promotion Value
					element = document.getElementById('optionalPromotions' + i + '_promotionValue');
					parameters = parameters + element.name + "=" + element.value + "&";

					//Optional / Buy Together Promotion Value
					element = document.getElementById('optionalPromotions' + i + '_promotionType');
					parameters = parameters + element.name + "=" + element.value + "&";

					//Optional / Buy Together Promo Applicable Qty
					element = document.getElementById('optionalPromotions' + i + '_promoApplicableQuantity');
					parameters = parameters + element.name + "=" + element.value + "&";

					//Optional / Buy Together Promotion Elements Size
					element = document.getElementById('optionalPromotions' + i + '_size');
					parameters = parameters + element.name + "=" + selectedCount + "&";
				}

			}
		}
		if(optionalPromoSelected == true) {
			element = document.getElementById('optionalPromotions_size');
			parameters = parameters + element.name + "=" + element.value + "&";
		}
	}

	//Check and Add Free Shipping 
	element = document.getElementById('freeShippingPromotion');
	if(element != null) {
		parameters = parameters + element.name + "=" + element.value + "&";
	}


	//Add all other main product attributes - Start
	element = document.getElementById('mainItem_originalPrice');
	parameters = parameters + element.name + "=" + element.value + "&";

	element = document.getElementById('mainItem_productMaterialName');
	parameters = parameters + element.name + "=" + element.value + "&";

	element = document.getElementById('preOrderFlag');
	parameters = parameters + element.name + "=" + element.value + "&";

	element = document.getElementById('mainProductAvailability');
	parameters = parameters + element.name + "=" + element.value + "&";
	//Add all other main product attributes - End
	
	return parameters;

}

function resetElements() {
	
	email = document.getElementById('subscribe_email');
	if(email != null)
		email.value = "";
	checkBox = document.getElementById('email_agree');
	if(checkBox) {
		checkBox.checked = false	//UnCheck the Checkbox
	}
	
	showhide('acceptEmailErrorDiv', 0);
	showhide('invalidEmailErrorDiv', 0);
	showhide('subscriptionFailedDiv', 0);
		
	showhide('buyTogetherItemNotAvailableDiv', 0);
	
}

function productAlertCheck(url,product) {
	parameters = validateProductSelections();
	
	if(parameters == false)
		return;
	//Check product Availability for main & promotional products
	
	resetElements();
	
	element = document.getElementById('mainProductAvailability');
	mainProductAvailability = element.value;
	if(mainProductAvailability == -1) {
		//add main product material name as content to a div having main product material name
		document.getElementById('mainItemListDiv').innerHTML = "- " + document.getElementById('mainItem_localMaterialName').value;

		//Make this division visible
		showhide('mainItemNotAvailableDiv', 1);
		showhide('mainItemListDiv', 1);
	 }

	if(outOfStockForcedBonusesLMN.length != 0) {
		//add all forced bonus product material names that are in outOfStockForcedBonusesLMN as content to a div having FB Local Material Name
		itemsListHTML = "";
		outOfStockItems = outOfStockForcedBonusesLMN.split("#%#");
		for(i=0; i<outOfStockItems.length - 1; i++)
			itemsListHTML = itemsListHTML + "- " + outOfStockItems[i] + "<BR />";
		document.getElementById('forcedBonusItemListDiv').innerHTML = itemsListHTML;

		//Make this division visible
		showhide('forcedBonusItemNotAvailableDiv', 1);
	}
	if(outOfStockBonusSelectsLMN.length != 0) {
		//Add all Bonus Select product material names that are in outOfStockBonusSelectsLMN as content to a div having Bonus Select Local Material Name
		itemsListHTML = "";
		outOfStockItems = outOfStockBonusSelectsLMN.split("#%#");
		for(i=0; i<outOfStockItems.length - 1; i++)
			itemsListHTML = itemsListHTML + "- " + outOfStockItems[i] + "<BR />";
		document.getElementById('bonusSelectItemListDiv').innerHTML = itemsListHTML;

		//Make this division Visible
		showhide('bonusSelectItemNotAvailableDiv', 1);
	}
	if(outOfStockBuyTogethersLMN.length != 0) {
		//add all Buy Together material names that are in outOfStockBuyTogethersLMN as content to a div having Optional Promotion Local Material Name
		itemsListHTML = "";
		outOfStockItems = outOfStockBuyTogethersLMN.split("#%#");
		for(i=0; i<outOfStockItems.length - 1; i++)
			itemsListHTML = itemsListHTML + "- " + outOfStockItems[i] + "<BR />";
		document.getElementById('buyTogetherItemListDiv').innerHTML = itemsListHTML;

		//Make this division visible
		showhide('buyTogetherItemNotAvailableDiv', 1);
	}

	if(mainProductAvailability == -1 || outOfStockForcedBonusesLMN.length != 0 || 
		outOfStockBonusSelectsLMN.length != 0 || outOfStockBuyTogethersLMN.length != 0) {
		
		//simulateClick('addToCartLink');
		tb_remove();
		window.setTimeout("simulateClick('addToCartLink')", 250);
	}
	else
	{
		callAjax(parameters, url , product);
	}
}

function simulateClick(elementName) {
	var browser=navigator.appName
    if (browser == "Microsoft Internet Explorer"){
    	var button = document.getElementById(elementName);
    	button.click();
    }else{
    	var evt = document.createEvent("MouseEvents");
		evt.initMouseEvent("click", true, true, window,
				0, 0, 0, 0, 0, false, false, false, false, 0, null);
		var element = document.getElementById(elementName); 
	    element.dispatchEvent(evt);
    }	  
}

function addToCart(url , product) {
	parameters = validateProductSelections();
	callAjax(parameters, url , product);
	
}

function addToCartPreOrder(ajaxUrl, fwdUrl , product) {
	
	parameters = validateProductSelections();
	if(parameters == false)
		return;
	
	callPreOrderAjax(parameters,ajaxUrl, fwdUrl, product);
}

function preOrderForward(parameters, url, product) {
	document.productDetailForm.action = url;
	document.productDetailForm.submit();
}

function callPreOrderAjax(parameters, ajaxUrl, fwdUrl, product) {
	parameters = parameters + "operation=ADDTOCART";	
	
	//omniture code	
	var productTrack = product.replace(";;;;",";");		
	var products = productTrack.split(",");
	var finalProduct = products[0];  
	var productArray = product.split(","); 
	
	if(products.length > 1){
		
			for(var count=1 ; count < products.length ; count++){
			
				var productsName =  products[count].split(";");
				
				if(productsName[1].indexOf(".") != -1){
					
					productsName = productsName[1].split(".");
				}

				if(parameters.indexOf(productsName[1]) != -1){
					
					finalProduct = finalProduct + "," + productArray[count];
				}
			}		
	}

	// S&M Tracker 50161: Omniture: Javascript function update > trackCop_AddProduct() starts
	var noOfItemsInCart = document.getElementById('noOfItemsInCart').value;
	noOfItemsInCart = noOfItemsInCart.replace(/^\s+/, '').replace(/\s+$/, '');
	if(noOfItemsInCart == '')
	{
		noOfItemsInCart=0;
	}
	var noOfItemsInCartInt= parseInt(noOfItemsInCart) + 1;
	//call script for omniture
	trackCop_AddProduct(this,finalProduct,parseInt(noOfItemsInCartInt));
	// S&M Tracker 50161: Omniture: Javascript function update > trackCop_AddProduct() ends

	tb_remove();
	//Call Add to Cart
	xmlHttp = createXmlHttp();
	
	xmlHttp.onreadystatechange=function()
	{	 
		if(xmlHttp.readyState==4){
			
			responseText = xmlHttp.responseText;
			
			successStatus = true;
			failureStatus = true;
			eComDownStatus = true;
			preOrderErrorStatus = false;
			var startDate;
			var endDate;
			
			var addToCartResponse = responseText.split("#*#");
			
			//Read the response and depending on it, show the text message.
			if(addToCartResponse[0] != "SUCCESS")
			{
				successStatus = false;
				if(addToCartResponse[0] == "FAILURE") {
					failureStatus = true;
				}
				else if(addToCartResponse[0] == "ECOMDOWN") {
					failureStatus = false;
				}
				else if(addToCartResponse[0] == "PREORDER_FAILURE") {
					failureStatus = false;
					eComDownStatus = false;
					preOrderErrorStatus = true;
				}
			}
			
			if(successStatus)	//Add to Cart Successful
			{
				preOrderForward(parameters, fwdUrl,  product);
			}
			else if(failureStatus){	//Add to Cart was not successful
				//showhide('productSubscriptionDiv', 0);
				showhide('productNotAddedDiv', 1);
				showhide('productAddedDiv', 0);
				//showhide('addToCartResponseDiv', 1);
				window.setTimeout("simulateClick('addToCartResponseLink')", 200);	// Execute the function after 200 ms dealy
			}
			else if(eComDownStatus) {	//ECom DOWN
				//showhide('productSubscriptionDiv', 0);
				document.getElementById('eComMaintainenceTextDiv').innerHTML = addToCartResponse[1];
				//showhide('eComMaintainenceDiv', 1);
				window.setTimeout("simulateClick('eComMaintainenceLink')", 200);	// Execute the function after 200 ms dealy
				
			}
			else if(preOrderErrorStatus) {
				document.getElementById('preOrderErrMsgDiv').innerHTML = addToCartResponse[1];
				showhide('preOrderErrMsgDiv', 1);
				window.setTimeout("simulateClick('preOrderErrorMsgLink')", 200);	// Execute the function after 200 ms dealy
			}	
		}
	}
	xmlHttp.open("POST",ajaxUrl,true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.send(parameters);
}

function callAjax(parameters, url , product) {
	
	parameters = parameters + "operation=ADDTOCART";	
	

	//omniture code	
	var productTrack = product.replace(";;;;",";");		
	var products = productTrack.split(",");
	var finalProduct = products[0];  
	var productArray = product.split(","); 
	
	if(products.length > 1){
		
			for(var count=1 ; count < products.length ; count++){
			
				var productsName =  products[count].split(";");
				
				if(productsName[1].indexOf(".") != -1){
					
					productsName = productsName[1].split(".");
				}

				if(parameters.indexOf(productsName[1]) != -1){
					
					finalProduct = finalProduct + "," + productArray[count];
				}
			}		
	}

	// S&M Tracker 50161: Omniture: Javascript function update > trackCop_AddProduct() starts
	var noOfItemsInCart = document.getElementById('noOfItemsInCart').value;
	noOfItemsInCart = noOfItemsInCart.replace(/^\s+/, '').replace(/\s+$/, '');
	if(noOfItemsInCart == '')
	{
		noOfItemsInCart=0;
	}
	var noOfItemsInCartInt= parseInt(noOfItemsInCart) + 1;
	//alert(noOfItemsInCartInt);
	//alert(this);		
	//call script for omniture
	trackCop_AddProduct(this,finalProduct,parseInt(noOfItemsInCartInt));
	// S&M Tracker 50161: Omniture: Javascript function update > trackCop_AddProduct() ends

	tb_remove();
	//Call Add to Cart
	xmlHttp = createXmlHttp();
	
	xmlHttp.onreadystatechange=function()
	{	 
		if(xmlHttp.readyState==4){
			
			responseText = xmlHttp.responseText;
			
			successStatus = true;
			failureStatus = true;
			eComDownStatus = true;
			preOrderErrorStatus = false;
			var startDate;
			var endDate;
			
			var addToCartResponse = responseText.split("#*#");
			
			//Read the response and depending on it, show the text message.
			if(addToCartResponse[0] != "SUCCESS")
			{
				successStatus = false;
				if(addToCartResponse[0] == "FAILURE") {
					failureStatus = true;
				}
				else if(addToCartResponse[0] == "ECOMDOWN") {
					failureStatus = false;
				}
				else if(addToCartResponse[0] == "PREORDER_FAILURE") {
					failureStatus = false;
					eComDownStatus = false;
					preOrderErrorStatus = true;
				}
			}
			

			if(successStatus)	//Add to Cart Successful
			{
				//showhide('productSubscriptionDiv', 0);
				showhide('productNotAddedDiv', 0);
				showhide('productAddedDiv', 1);
				//showhide('addToCartResponseDiv', 1);
				document.getElementById('totalCartValueDiv').innerHTML = " $ " + addToCartResponse[1];
				document.getElementById('noOfItemsInCartDiv').innerHTML = addToCartResponse[2] + " items";
				showhide('itemsNvalueDividerDiv', 1);
				
				// S&M Tracker 50161: Omniture: Javascript function update > trackCop_AddProduct() starts
				document.getElementById('noOfItemsInCart').value = addToCartResponse[2];
				// S&M Tracker 50161: Omniture: Javascript function update > trackCop_AddProduct() ends

				window.setTimeout("simulateClick('addToCartResponseLink')", 200);	// Execute the function after 200 ms dealy
			}
			else if(failureStatus){	//Add to Cart was not successful
				//showhide('productSubscriptionDiv', 0);
				showhide('productNotAddedDiv', 1);
				showhide('productAddedDiv', 0);
				//showhide('addToCartResponseDiv', 1);
				window.setTimeout("simulateClick('addToCartResponseLink')", 200);	// Execute the function after 200 ms dealy
			}
			else if(eComDownStatus) {	//ECom DOWN
				//showhide('productSubscriptionDiv', 0);
				document.getElementById('eComMaintainenceTextDiv').innerHTML = addToCartResponse[1];
				//showhide('eComMaintainenceDiv', 1);
				window.setTimeout("simulateClick('eComMaintainenceLink')", 200);	// Execute the function after 200 ms dealy
				
			}	
			else if(preOrderErrorStatus) {	
				//showhide('productSubscriptionDiv', 0);
				showhide('productNotAddedDiv', 0);
				showhide('productAddedDiv', 0);
				document.getElementById('productPreOrderNotAddedDiv').innerHTML = addToCartResponse[1];
				showhide('productPreOrderNotAddedDiv', 1);
				//showhide('addToCartResponseDiv', 1);
				window.setTimeout("simulateClick('addToCartResponseLink')", 200);	// Execute the function after 200 ms dealy
			}		
		}
	}
	xmlHttp.open("POST",url,true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.send(parameters);
}

function createXmlHttp(){
	try	{
	  // Firefox, Opera 8.0+, Safari
	  xmlHttp=new XMLHttpRequest();
	}
	catch (e){
		// Internet Explorer
		try{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e){
		    try{
			  xmlHttp=new ActiveXOb-ject("Microsoft.XMLHTTP");
		    }
		catch (e){
		      alert("Your browser does not support AJAX!");
		      return false;
		}
	}
    }
    finally{
		return xmlHttp;
    }
}

function showhide(id,val){
	if (val==0 && document.getElementById(id) != null) {
		document.getElementById(id).style.display = 'none';
	}
	var browser=navigator.appName
	version=parseFloat(navigator.appVersion);
	if (browser == "Microsoft Internet Explorer"){
		if (val==1 && document.getElementById(id) != null){
			document.getElementById(id).style.display = 'block';
		}
	}
	else if(browser == "Netscape" && (version >=4.7)){
		if (val==1 && document.getElementById(id) != null) document.getElementById(id).style.display = 'block';
	}
}

function subscribeForProduct(url) {
	checkBox = document.getElementById('email_agree');
	email = document.getElementById('subscribe_email');
	
	if(checkBox.checked == true && isValidEmail(email.value)) {
		
		outOfStockProducts = "";
		
		if(outOfStockForcedBonuses.length != 0)
			outOfStockProducts = outOfStockProducts + outOfStockForcedBonuses;
		if(outOfStockBonusSelects.length != 0)
			outOfStockProducts = outOfStockProducts + outOfStockBonusSelects;
		if(outOfStockBuyTogethers.length != 0)
			outOfStockProducts = outOfStockProducts + outOfStockBuyTogethers;
		
		element = document.getElementById('mainProductAvailability');
		if(element.value == -1)
			outOfStockProducts = outOfStockProducts + document.getElementById('mainItem_productMaterialName').value;
		
		//Call AJax
		xmlHttp = createXmlHttp();
		parameters = "outOfStockProducts=" + outOfStockProducts + "&email=" + email.value + "&operation=SUBSCRIBE_PRODUCT";

		xmlHttp.onreadystatechange=function()
		{	 
			if(xmlHttp.readyState==4){
				//showhide('productSubscriptionDiv', 0);
				email.value = "";	//Clear Email ID
				//document.getElementById('emailErrorDiv').innerHTML = "";//Clear Error messages if any
				checkBox.checked = false	//UnCheck the Checkbox
				showhide('acceptEmailErrorDiv', 0);
				showhide('invalidEmailErrorDiv', 0);
				showhide('subscriptionFailedDiv', 0);
				
				//Read Response
				responseText = xmlHttp.responseText;
				subscriptionResponse = responseText.split("#*#");
				
				//If it doesn't have a success, treat it as failure
				if(subscriptionResponse[0] == "SUCCESS") {
					tb_remove();	//Hide Product Alert
					
					//Show success div
					// simulateClick('subscriptionSuccessLink')
					//Simulate Click after a delay of 500ms so that Product Alert is completely Closed by then
					window.setTimeout("simulateClick('subscriptionSuccessLink')", 500);
					
				}
				else {	// Anything other than "SUCCESS" to be treated as Failure
					//Show failure error message
					showhide('subscriptionFailedDiv', 1);
				}
			}
		}
		xmlHttp.open("POST",url,true);
		xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xmlHttp.send(parameters);
	}
	else if(checkBox.checked == true) {
		showhide('subscriptionFailedDiv', 0);
		showhide('acceptEmailErrorDiv', 0);
		showhide('invalidEmailErrorDiv', 1);
	}
	else {
		showhide('subscriptionFailedDiv', 0);
		showhide('invalidEmailErrorDiv', 0);
		showhide('acceptEmailErrorDiv', 1);
	}
}

function isValidEmail(email) {
    
    if (email==null) {
	return false;
    }
    if (email.length<=5) {  
	return false;
    }
    if (! allValidChars(email)) {  
        return false;
    }
    if (email.indexOf("-")==0 || email.lastIndexOf("-")==(email.length-1)) { 
        return false;
    }
    else if (email.indexOf("_")==0 || email.lastIndexOf("_")==(email.length-1)) { 
        return false;
    }
    else if (email.indexOf("@")<1) { 
        return false;
    } else if (email.lastIndexOf(".") <= email.indexOf("@")) { 
        return false;
    } else if (email.indexOf("@") == email.length) { 
        return false;
    } else if (email.indexOf("..") >=0) { 
	return false;
    } else if (email.indexOf(".@") >=0) { 
	return false;
    } else if (email.indexOf("@.") >=0) { 
	return false;
    } else if (email.indexOf("@@") >=0) { 
	return false;
    } else if (email.indexOf(".") == email.length) { 
	return false;
    }
    return true;
}

function allValidChars(email) {
  var parsed = true;
  var validchars = "abcdefghijklmnopqrstuvwxyz0123456789@.-_";
  for (var i=0; i < email.length; i++) {
    var letter = email.charAt(i).toLowerCase();
    if (validchars.indexOf(letter) != -1)
      continue;
    parsed = false;
    break;
  }
  return parsed;
}

//------ Sony New Zealand Implementation ---START

function addItemToCart( url, product, material) {
	
	parameters = "operation=ADDTOCART" + "&";	
	
	parameters = parameters + "productDetails.productMaterialName=" +material;

	//omniture code	
	var productTrack = product.replace(";;;;",";");		
	var products = productTrack.split(",");
	var finalProduct = products[0];  
	var productArray = product.split(","); 
	
	if(products.length > 1){
		
			for(var count=1 ; count < products.length ; count++){
			
				var productsName =  products[count].split(";");
				
				if(productsName[1].indexOf(".") != -1){
					
					productsName = productsName[1].split(".");
				}

				if(parameters.indexOf(productsName[1]) != -1){
					
					finalProduct = finalProduct + "," + productArray[count];
				}
			}		
	}

	//Omniture: Javascript function > trackCop_AddProduct() starts
	var noOfItemsInCart = document.getElementById('noOfItemsInCart').value;
	noOfItemsInCart = noOfItemsInCart.replace(/^\s+/, '').replace(/\s+$/, '');
	if(noOfItemsInCart == '')
	{
		noOfItemsInCart=0;
	}
	var noOfItemsInCartInt= parseInt(noOfItemsInCart) + 1;
	//alert(noOfItemsInCartInt);
	//alert(this);		
	//call script for omniture
	trackCop_AddProduct(this,finalProduct,parseInt(noOfItemsInCartInt));
	// Omniture: Javascript function > trackCop_AddProduct() ends

	simulateClick('progressBarLink');

	//Call Add to Cart
	xmlHttp = createXmlHttp();
	
	xmlHttp.onreadystatechange=function()
	{	 
		if(xmlHttp.readyState==4){
			
			responseText = xmlHttp.responseText;
			
			successStatus = true;
			failureStatus = true;
			eComDownStatus = false;
			cookieDisabled = false;			
			var addToCartResponse = responseText.split("#*#");
			
			//Read the response and depending on it, show the text message.
			if(addToCartResponse[0] != "SUCCESS")
			{
				successStatus = false;
				if(addToCartResponse[0] == "FAILURE") {
					failureStatus = true;
				}
				else if(addToCartResponse[0] == "ECOMDOWN") {
					failureStatus = false;
					eComDownStatus = true;
				}
				else if (addToCartResponse[0] == "COOKIEDISABLED")
				{
					failureStatus = false;
					cookieDisabled = true;
				}
			}
			
			// close progress bar div
			tb_remove();

			if(successStatus)	//Add to Cart Successful
			{
				
				if(addToCartResponse[1] == "0"){
					showhide('itemsNvalueDividerDiv', 0);					
					document.getElementById('messageDiv').innerHTML = addToCartResponse[2];
					document.getElementById('noOfItemsInCartDiv').innerHTML = addToCartResponse[3];
					document.getElementById('totalCartValueDiv').innerHTML = "";
					
				}else{	
					document.getElementById('totalCartValueDiv').innerHTML = " $ " + addToCartResponse[1];
					document.getElementById('noOfItemsInCartDiv').innerHTML = addToCartResponse[2] + " item(s)";
					document.getElementById('messageDiv').innerHTML = addToCartResponse[3];
					showhide('itemsNvalueDividerDiv', 1);
				}	
			}
			else if(failureStatus){	//Add to Cart was not successful
				
				if(addToCartResponse[0] == "REDIRECT")
				{
				document.location=addToCartResponse[1];
				window.setTimeout('window.location=addToCartResponse[1]; ',1000);

				}
			}
			else if(eComDownStatus) {	//ECom DOWN	
				
				window.setTimeout("simulateClick('eComMaintainenceLink')", 400);	// Execute the function after 200 ms dealy				
			}

			else if(cookieDisabled) {
				document.getElementById('messageDiv').innerHTML = addToCartResponse[1];
			}
			else
				{
				showhide('productNotAddedDiv', 1);
				showhide('productAddedDiv', 0);
				document.getElementById('messageDiv').innerHTML = addToCartResponse[3];
				window.setTimeout("simulateClick('addToCartResponseLink')", 200);	// Execute the function after 200 ms dealy
				}		
			
			
		}
	}
	xmlHttp.open("POST",url,true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.send(parameters);
}
//------ Sony New Zealand Implementation ---END

//this function will stop executing of add to cart functionality while pageloads.
function disableAddToCart()
{
	simulateClick('pageLoadingLink');
	window.setTimeout("tb_remove()", 2009);
	
}


