//To call ajax for zip code overlay,validation and cartwidget functionality.


var multiSkuIdList=new Array();
var skuCount = 0;
var saveGiftlistFormHandler;
var addItemGiftlistFormHandler;
var skuType;
var currentAddToCartForm;
var litbox;
var currentAddToCartFormObject;
var singleSkuId;

	function addToCart(formName , skuType , skuId){
	if(multiSkuIdList.size() < 1 && skuType == 'multiSku'){
		 document.getElementById("globalMsgArea").innerHTML="";
		 document.getElementById("errorNoItems").style.display='inline';
		 document.getElementById("errorNoItems").style.visibility='visible';
		 window.location.hash = "maincontent";
		}else{
			if(document.getElementById("errorNoItems") != undefined){
				 document.getElementById("errorNoItems").style.display='inline';
				 document.getElementById("errorNoItems").style.visibility='hidden';
			}
			var myTarget = $('itemAddition');
			currentAddToCartForm = formName;
			currentAddToCartFormObject = document.getElementById(formName);
			this.skuType = skuType;
			litbox = new lightbox();
			singleSkuId = skuId;
			litbox.content = contextPath+"/common/zipCodeModel.jsp";
			if(skuType == 'singleSku'){
				var skuQuantityId = 'quantity'+singleSkuId
  			    var skuQuantity = document.getElementById(skuQuantityId).value;
				if( skuQuantity == ""){
				document.getElementById(skuQuantityId).value='1';
				}
			}
			initAddToCart();
		}
	}
						 
	function initAddToCart(){
	   isZipCodeExists();
	   return false;
	}

	function successZip(transport){
	
	   if(eval(transport.responseText)==false){
	     //Display the error message
	     var modalPopupError = document.getElementById("zipCodeError"); 
	     modalPopupError.style.display="block";
	     var zipcode = document.forms['model'].zipCode;
	     zipcode.focus();
	   }else if(eval(transport.responseText)==true) {
	      litbox.deactivate();
		     addToCartAjax();
	   }
	}
     
	function processIsZipCodeExistResponse(transport)
	{
	     if(eval(transport.responseText)==true){
	          addToCartAjax();
	     }else{
		
		   callCoreMatrics();		
		   var display = $('overlay').style.display ;
		   if(display != 'block')
			   {
				  litbox.activate();
			   }
	    }
	}
	function addToCartSuccesProcess(transport){
		callCoreMatrics();
		var globalCartWrapper = document.getElementById("globalCartWrapper"); 
		var cartHeaderMessage = document.getElementById("cartHeaderMessage");
		//Element.addClassName(globalCartWrapper,"globalCartWrapper_display");

		splitresponseText = transport.responseText.split('<errorPage>'); 
		if(transport.responseText.indexOf('<error500>') > 0){
			window.location.replace( contextPath+"/error/error.jsp");
		}
		else
			if(transport.responseText.indexOf('<error404>') > 0){
			window.location.replace( contextPath+"/home/homePage.jsp");
		
		}
		else{
		
		var flyoutContent = document.getElementById("flyoutContent"); 
		var splitresponseText = transport.responseText.split('<splitcart>'); 

		flyoutContent.innerHTML =splitresponseText[0];
		loadGlobalCart(splitresponseText[1]);
		cartHeaderMessage.innerHTML = splitresponseText[2]
			if(skuType == 'multiSku'){
				//currentAddToCartFormObject["/atg/commerce/gifts/GiftlistFormHandler.saveGiftlist"].name=saveGiftlistFormHandler;
				//currentAddToCartFormObject["/atg/commerce/gifts/GiftlistFormHandler.addItemToGiftlist"].name=addItemGiftlistFormHandler;
				$(currentAddToCartFormObject).appendChild(saveGiftList);
				$(currentAddToCartFormObject).appendChild(addItemGiftList);
			}
    		cleareSkus(singleSkuId);
		}
		cartFlyout.display();
	}
	function loadGlobalCart(cartContent){
		var globalCartBubble = document.getElementById("globalCartBubble"); 
		globalCartBubble.innerHTML = cartContent;
		window.location.hash = "homepage";
	}

	function addToCartAjax(){
	if(skuType == 'multiSku'){	
		//saveGiftlistFormHandler=currentAddToCartFormObject["/atg/commerce/gifts/GiftlistFormHandler.saveGiftlist"].name;
		//addItemGiftlistFormHandler=currentAddToCartFormObject["/atg/commerce/gifts/GiftlistFormHandler.addItemToGiftlist"].name;
		//currentAddToCartFormObject["/atg/commerce/gifts/GiftlistFormHandler.saveGiftlist"].name="";
		//currentAddToCartFormObject["/atg/commerce/gifts/GiftlistFormHandler.addItemToGiftlist"].name="";
		saveGiftList = $(currentAddToCartFormObject["/atg/commerce/gifts/GiftlistFormHandler.saveGiftlist"]).remove();
		addItemGiftList = $(currentAddToCartFormObject["/atg/commerce/gifts/GiftlistFormHandler.addItemToGiftlist"]).remove();
	}
	 new Ajax.Request(contextPath+"/common/cartWidget.jsp", {parameters : Form.serialize(currentAddToCartFormObject),asynchronous:true,onSuccess :addToCartSuccesProcess, onFailure:function(){ 
	    //alert('Something went wrong...') ;           
	    refreshCurrentPage();
	    //DONE
	    }, method:'post'} // AJAX IS CLOSED.
	    
	    );
		
	 }

	function isZipCodeExists()
	{
		
	    new Ajax.Request(contextPath+'/profile/common/iszipCodeExistsOrValid.jsp?isZipCode=verify&ZipCode=', {asynchronous:true,  onSuccess:processIsZipCodeExistResponse, onFailure:function(){ 
	    //alert('Something went wrong...') ;
	    refreshCurrentPage();
	    
	    //DONE
	    }, method:'get'} // AJAX IS CLOSED.
	    
	    );
	 }
	 
	function zipCodeValidator(){
	  var modalPopupError = document.getElementById("zipCodeError"); 
	  modalPopupError.style.display="none";
	  var zipcode = document.forms['model'].zipCode;
	  if(zipcode.value!=null){
	     new Ajax.Request(contextPath+'/profile/common/iszipCodeExistsOrValid.jsp?isZipCode=validate&ZipCode='+zipcode.value, {asynchronous:true,  onSuccess:successZip, onFailure:function(){ 
	   // alert('Smething went wrong...') ;
	   refreshCurrentPage();	    
	    //DONE
	    }, method:'get'} // AJAX IS CLOSED.
	    
	    );
	  }else{
	   zipcode.focus();
	   return false;
	  
	   }
	}   
        

	 function closeCartWidget()
	  {
	  var globalCartWrapper = document.getElementById("globalCartWrapper"); 
	  Element.removeClassName(globalCartWrapper,"globalCartWrapper_display");
	  return false;
	 }
	 
	function cleareSkus(skuId){
     var itemAddition = document.getElementById("itemAddition");	

	if(skuType == 'multiSku'){
		 for(i=0; i<multiSkuIdList.length; i++){
		 document.getElementById(multiSkuIdList[i]).value="";
		}
		multiSkuIdList=new Array();
		document.getElementById("skuAddToCart").innerHTML="Add Items To Cart";
	}
	else{
     var quantityId = 'quantity'+skuId
	 document.getElementById(quantityId).value="";
	}
	}
  
		
	Event.observe(window, 'load', function() {
	 /* Add To Cart quantity boxes */
	 var multiQtyInputs = document.getElementsByClassName("multy-sku");
	 if (multiQtyInputs && multiQtyInputs.length) {
	  for (var i = 0; i < multiQtyInputs.length; i++) {
	   var inp = multiQtyInputs[i];
	   Event.observe(inp, 'keyup', function(e) { adjustMultiSkuIds(e , false); } );
	  }
	 }
	
	}, false);


	function adjustMultiSkuIds(e , onfocus){
		var itemAddition = document.getElementById("itemAddition");
		var skuQuantityCount = parseInt(0);
		var el = Event.element(e);
		var skuId = el.id;
		var check = true;
		var quantity;
		var position; 

			   if(multiSkuIdList[0]==undefined){
					if(onfocus){
						multiSkuIdList[0] = skuId;
					}
					else{
						if(isInteger(el.value)){
							multiSkuIdList[0] = skuId;
					}
				  }
				}
					for(i=0; i<multiSkuIdList.length; i++){
						position = i+1;		


						if(skuId == multiSkuIdList[i]){
							check = false;
							if(el.value == "" && !onfocus){
								multiSkuIdList.splice(multiSkuIdList.indexOf(skuId), 1);
								
							}
							
						}
					}
			
			skuCount = document.getElementById(skuId).value;
			if(check){
				if(onfocus){
				multiSkuIdList[position] = skuId;
				}
				else{
						if(isInteger(el.value)){
						multiSkuIdList[position] = skuId;
					}
				}
			}
			for(i=0; i<multiSkuIdList.length; i++){

				    if(document.getElementById(multiSkuIdList[i]).value == "" ){
						//skuQuantityCount =skuQuantityCount + parseInt(1); 
					}
					else{

						skuQuantityCount  = skuQuantityCount + parseInt(document.getElementById(multiSkuIdList[i]).value);
					}	
				}


			if(skuQuantityCount > 1){
				document.getElementById("skuAddToCart").innerHTML="Add "+skuQuantityCount+" Items To Cart";
			    itemAddition.disabled = false;
				itemAddition.className = "gBtn greenBtn additemsTocart";
				}
			else
			  if(skuQuantityCount == 1){
				document.getElementById("skuAddToCart").innerHTML="Add "+skuQuantityCount+" Item To Cart";
				itemAddition.className = "gBtn greenBtn additemsTocart";
				}
			   else{
				   document.getElementById("skuAddToCart").innerHTML="Add Items To Cart";
				   
			   }
		}

 		function disableEnterKey(e,callBackFun,formName,skuType,skuId){
			var code = (e.type.toLowerCase().indexOf("key") != -1) ? e.keyCode || e.which : 0;
			var appVersion = navigator.appVersion;
			var isSafari = appVersion.indexOf('Safari');
			var isApple = appVersion.indexOf('Apple');
			if(code==13 || (code == 3 && isSafari > 0 && isApple > 0 ) ){
			callBackFun(formName,skuType,skuId);
			return false;
			} else {
			return true;
			}
		}

		
	function callCoreMatrics()
	{
		 var skuNameId
		 var skupriceId
		 var skuName
		 var skuPrice;
		 var skuQuantity;
		 var defParentCatId;
		 var defParentCatName;
		 var ratingAttribs;
		if(skuType == 'multiSku'){
		   for(i=0; i<multiSkuIdList.length; i++){
			 var skuId = multiSkuIdList[i].substring(8);
			 skuNameId = "name"+skuId;
			 skupriceId = "price"+skuId;
			 if(document.getElementById('defParentCatId')!=undefined){
			 defParentCatId = document.getElementById('defParentCatId').value;
			 }
			 if(document.getElementById('defParentCatName') != undefined){
			  defParentCatName = document.getElementById('defParentCatName').value;
			 }
			 if(document.getElementById('ratingAttribs') != undefined){
			  ratingAttribs = document.getElementById('ratingAttribs').value;
			 }
			 if(document.getElementById(multiSkuIdList[i])!=undefined){
					 skuQuantity = document.getElementById(multiSkuIdList[i]).value;
			 } 
			 if( document.getElementById(skuNameId)!=undefined){
					 skuName =   document.getElementById(skuNameId).value;
			 }
			 if(document.getElementById(skupriceId)!=undefined){
				 skuPrice = document.getElementById(skupriceId).value;
			 }
			 cmCreateShopAction5Tag(skuId,skuName,skuQuantity,skuPrice,defParentCatId,defParentCatName,ratingAttribs);
			 cmDisplayShop5s();
		 }
		}
		else
			if(skuType == 'singleSku'){
			 var localDefParentCatId;
			 var localDefParentCatName;
			 var localRatingAttribs;
			 var skuQuantityId ;
			 localDefParentCatId = "defParentCatId"+singleSkuId;
			 localDefParentCatName =  "defParentCatName"+singleSkuId;
			 localRatingAttribs = "ratingAttribs"+singleSkuId;
			 skuQuantityId = 'quantity'+singleSkuId
		     skuNameId = "skuName"+singleSkuId;
			 skupriceId = "price"+singleSkuId;
			  if(document.getElementById(localDefParentCatId)!=undefined){
				 defParentCatId = document.getElementById(localDefParentCatId).value;
			 } 
			   if(document.getElementById(localDefParentCatName)!=undefined){
				 defParentCatName = document.getElementById(localDefParentCatName).value;
			 } 
			 if(document.getElementById(localRatingAttribs) != undefined){
			  ratingAttribs = document.getElementById(localRatingAttribs).value;
			 }
			   if(document.getElementById(skuNameId)!=undefined){
				skuName =   document.getElementById(skuNameId).value;
			 } 
			
			if(document.getElementById(skupriceId)!=undefined){
				 skuPrice = document.getElementById(skupriceId).value;
			 } 
			 if(document.getElementById(skuQuantityId)!=undefined){
				 skuQuantity =  document.getElementById(skuQuantityId).value;
			 } 
			 cmCreateShopAction5Tag(singleSkuId,skuName,skuQuantity,skuPrice,defParentCatId,defParentCatName,ratingAttribs);
			 cmDisplayShop5s();
		}
	}
