/***************************/
/*** Checkout Validation ***/
/***************************/
var checkout_firstName;
var checkout_lastName;
var checkout_company;
var checkout_addr1;
var checkout_addr2;
var checkout_city;
var checkout_state;
var checkout_zip;

function updateAddress(shippingOrBillingStr, updateFormFields, updateHiddenFields, updatePreviewFields, updateAddr2, newFirstName, newLastName, newCompany, newAddr1, newAddr2, newCity, newState, newZip, newPhone, newEmail, addressType) {
	var prependLetter = shippingOrBillingStr.substr(0,1);
	
	if(updateFormFields){
		if($(prependLetter + 'FirstName') != null && newFirstName != ""){
			$(prependLetter + 'FirstName').value = newFirstName;
		}
		
		if($(prependLetter + 'LastName') != null && newLastName != ""){
			$(prependLetter + 'LastName').value = newLastName;
		}
		
		if($(prependLetter + 'CompanyName') != null && newCompany != ""){
			$(prependLetter + 'CompanyName').value = newCompany;
		}
		
		if($(prependLetter + 'Address1') != null){
			$(prependLetter + 'Address1').value = newAddr1;
		}
		
		if($(prependLetter + 'Address2') != null && updateAddr2 == true){
			$(prependLetter + 'Address2').value = newAddr2;
		}
		
		if($(prependLetter + 'City') != null){
			$(prependLetter + 'City').value = newCity;
		}
		
		if($(prependLetter + 'State') != null){
			$(prependLetter + 'State').value = newState;
		}
		
		if($(prependLetter + 'Zip') != null){
			$(prependLetter + 'Zip').value = newZip;
		}
	}
	
	if(updateHiddenFields){
		if($(prependLetter + 'FirstNameHidden') != null && newFirstName != ""){
			$(prependLetter + 'FirstNameHidden').value = newFirstName;
		} else {
			$(prependLetter + 'FirstNameHidden').value = "";
		}
		
		if($(prependLetter + 'LastNameHidden') != null && newLastName != ""){
			$(prependLetter + 'LastNameHidden').value = newLastName;
		} else {
			$(prependLetter + 'LastNameHidden').value = "";
		}
		
		if($(prependLetter + 'CompanyNameHidden') != null && newCompany != ""){
			$(prependLetter + 'CompanyNameHidden').value = newCompany;
		} else {
			$(prependLetter + 'CompanyNameHidden').value = "";
		}
		
		if($(prependLetter + 'Address1Hidden') != null){
			$(prependLetter + 'Address1Hidden').value = newAddr1;
		} else {
			$(prependLetter + 'Address1Hidden').value = "";
		}
		
		if($(prependLetter + 'Address2Hidden') != null && updateAddr2 == true){
			$(prependLetter + 'Address2Hidden').value = newAddr2;
		} else {
			$(prependLetter + 'Address2Hidden').value = "";
		}
	
		if($(prependLetter + 'CityHidden') != null){
			$(prependLetter + 'CityHidden').value = newCity;
		} else {
			$(prependLetter + 'CityHidden').value = "";
		}
		
		if($(prependLetter + 'StateHidden') != null){
			$(prependLetter + 'StateHidden').value = newState;
		} else {
			$(prependLetter + 'StateHidden').value = "";
		}
		
		if($(prependLetter + 'ZipHidden') != null){
			$(prependLetter + 'ZipHidden').value = newZip;
		} else {
			$(prependLetter + 'ZipHidden').value = "";
		}
	}
	
	if(updatePreviewFields){
		if($(prependLetter + 'FirstNamePreview') != null && newFirstName != ""){
			$(prependLetter + 'FirstNamePreview').innerHTML = newFirstName;
			$(prependLetter + 'FirstNamePreview').show();
		} else {
			$(prependLetter + 'FirstNamePreview').innerHTML = "";
			$(prependLetter + 'FirstNamePreview').hide();	
		}
	
		if($(prependLetter + 'LastNamePreview') != null && newLastName != ""){
			$(prependLetter + 'LastNamePreview').innerHTML = newLastName;
			$(prependLetter + 'LastNamePreview').show();
		} else {
			$(prependLetter + 'LastNamePreview').innerHTML = "";
			$(prependLetter + 'LastNamePreview').hide();
		}
		
		if($(prependLetter + 'CompanyNamePreview') != null && newCompany != ""){
			$(prependLetter + 'CompanyNamePreview').innerHTML = newCompany;
			$(prependLetter + 'CompanyNamePreview').show();
		} else {
			$(prependLetter + 'CompanyNamePreview').innerHTML = "";
			$(prependLetter + 'CompanyNamePreview').hide();
		}
		
		if($(prependLetter + 'Address1Preview') != null){
			$(prependLetter + 'Address1Preview').innerHTML = newAddr1;
			$(prependLetter + 'Address1Preview').show();
		} else {
			$(prependLetter + 'Address1Preview').innerHTML = "";
			$(prependLetter + 'Address1Preview').hide();
		}
		
		if($(prependLetter + 'Address2Preview') != null && newAddr2 != "" && updateAddr2 == true){
			$(prependLetter + 'Address2Preview').innerHTML = newAddr2;
			$(prependLetter + 'Address2Preview').show();
		} else {
			$(prependLetter + 'Address2Preview').innerHTML = "";
			$(prependLetter + 'Address2Preview').hide();
		}
		
		if($(prependLetter + 'CityPreview') != null){
			$(prependLetter + 'CityPreview').innerHTML = newCity;
			$(prependLetter + 'CityPreview').show();
		} else {
			$(prependLetter + 'CityPreview').innerHTML = "";
			$(prependLetter + 'CityPreview').hide();
		}
		
		if($(prependLetter + 'StatePreview') != null){
			$(prependLetter + 'StatePreview').innerHTML = newState;
			$(prependLetter + 'StatePreview').show();
		} else {
			$(prependLetter + 'StatePreview').innerHTML = "";
			$(prependLetter + 'StatePreview').hide();
		}
		
		if($(prependLetter + 'ZipPreview') != null){
			$(prependLetter + 'ZipPreview').innerHTML = newZip;
			$(prependLetter + 'ZipPreview').show();
		} else {
			$(prependLetter + 'ZipPreview').innerHTML = "";
			$(prependLetter + 'ZipPreview').hide();
		}
	}
	
	if($(prependLetter + 'Phone') != null && newPhone != ""){
		$(prependLetter + 'Phone').value = newPhone;
	}
	
	if($(prependLetter + 'Email') != null && newEmail != ""){
		$(prependLetter + 'Email').value = newEmail;
	}
	
	/*
	var addressTypeLetter = addressType.split("-")[0];
	if(addressTypeLetter == "S" || addressTypeLetter == "R"){
		if($('sResidential') != null)
			$('sResidential').checked = true;
	} else {
		if($('sResidential') != null)
			$('sResidential').checked = false;
	}
	*/
	
	if(addressType == "Street" || addressType == "R"){
		if($('sResidential') != null){
			$('sResidential').checked = true;
		}
	} else {
		if($('sResidential') != null){
			$('sResidential').checked = false;
	}
	}
	
	$(shippingOrBillingStr + 'ValidationPopup').fade({ duration: 1.0 });
	
	var addressErrors = $$('.' + shippingOrBillingStr + 'AddressError');
    var len = addressErrors.length;
    for(var i = 0; i<len;i++){
         addressErrors[i].hide();
    }
}


function validateAddress(callingInput, saveAddress) {
	if(saveAddress == null){
		saveAddress = false;
	}
	
	if(fillCheckoutAddress('g') == true){
		if(checkout_addr1 == "" || checkout_city == "" || checkout_state == "" || checkout_zip == ""){ 
			return;
		}
		verifyAddress(callingInput, 'g', saveAddress);
	}
}

function validateShippingAddress(callingInput, saveAddress) {
	if(saveAddress == null){
		saveAddress = false;
	}
	
	if(fillCheckoutAddress('shipping') == true){
		if(checkout_addr1 == "" || checkout_city == "" || checkout_state == "" || checkout_zip == ""){ 
			return;
		}
		verifyAddress(callingInput, 'shipping', saveAddress);
	}
}

function validateBillingAddress(callingInput, saveAddress) {
	if(saveAddress == null){
		saveAddress = false;
	}
	
	if(fillCheckoutAddress('billing') == true){
		if(checkout_addr1 == "" || checkout_city == "" || checkout_state == "" || checkout_zip == ""){ 
			return;		
		}
		verifyAddress(callingInput, 'billing', saveAddress);
	}
}

function fillCheckoutAddress(shippingOrBillingStr){
	var prependLetter = shippingOrBillingStr.substr(0,1);
	
	checkout_firstName = "";
	checkout_lastName = "";
	checkout_company = "";
	checkout_addr1 = "";
	checkout_addr2 = "";
	checkout_city = "";
	checkout_state = "";
	checkout_zip = "";
	
	checkout_firstName = ($(prependLetter + 'FirstName') != null) ? $F(prependLetter + 'FirstName') : "";
	checkout_lastName = ($(prependLetter + 'LastName') != null) ? $F(prependLetter + 'LastName') : "";
	checkout_company = ($(prependLetter + 'CompanyName') != null) ? $F(prependLetter + 'CompanyName') : "";
	checkout_addr1 = ($(prependLetter + 'Address1') != null) ? $F(prependLetter + 'Address1') : "";
	checkout_addr2 = ($(prependLetter + 'Address2') != null) ? $F(prependLetter + 'Address2') : "";
	checkout_city = ($(prependLetter + 'City') != null) ? $F(prependLetter + 'City') : "";
	checkout_state = ($(prependLetter + 'State') != null) ? $F(prependLetter + 'State') : "";
	checkout_zip = ($(prependLetter + 'Zip') != null) ? $F(prependLetter + 'Zip') : "";
	
	if(checkout_company == "" && checkout_addr1 == "" && checkout_addr2 == "" && checkout_city == "" && checkout_state == "" && checkout_zip == ""){
		alert("There is no address information to save.");
		return false;
	} else {
		return true;
	}
}

function verifyAddress(callingInput, shippingOrBillingStr, saveAddress){
	var verifyAddressUrl = "/store/verifyAddress/market/" + $F('marketId') + "?"; 
	verifyAddressUrl += "&company=" + encodeURIComponent(checkout_company);
	verifyAddressUrl += "&addr1=" + encodeURIComponent(checkout_addr1);
	verifyAddressUrl += "&addr2=" + encodeURIComponent(checkout_addr2); 
	verifyAddressUrl += "&city=" + encodeURIComponent(checkout_city); 
	verifyAddressUrl += "&state=" + encodeURIComponent(checkout_state);
	verifyAddressUrl += "&zip=" + encodeURIComponent(checkout_zip);
	verifyAddressUrl += "&callingInputId=" + encodeURIComponent(callingInput.id);
	if(saveAddress){
		new Ajax.Request(verifyAddressUrl, {
			method: 'get',
			onSuccess: function(response) {
			  verifyAddressAndSaveOnSuccess(response.responseJSON, shippingOrBillingStr);
			}
		});
	} else {
		new Ajax.Request(verifyAddressUrl, {
			method: 'get',
			onSuccess: function(response) {
			  verifyAddressOnSuccess(response.responseJSON);
			}
		});
	}
}

function verifyAddressOnSuccess(JSONObject) {
    try {
    	if(JSONObject.callingInputId.substr(0,1) == 's'){
    		shippingOrBillingStr = 'shipping';
    	} else if(JSONObject.callingInputId.substr(0,1) == 'b'){
    		shippingOrBillingStr = 'billing';
    	} else {
    		shippingOrBillingStr = 'generic';
    	}
    		
    	$(shippingOrBillingStr + 'ValidationPopup').hide();
    	
    	var addressErrors = $$('.' + shippingOrBillingStr + 'AddressError');
	    var len = addressErrors.length;
	    if(JSONObject.Error!=undefined){
	    	if(JSONObject.Error.indexOf("Canadian") < 0){
				$(shippingOrBillingStr + 'ValidationPopupText').innerHTML = "<span class='nowrapped'>Invalid Address<br>There was an error validating the address: " + JSONObject.Error.replace("MDA::::", "") + "</span>";
		    		    	
		    	for(var i = 0; i<len;i++){
		             if(addressErrors[i].id == JSONObject.callingInputId + "Error"){
		                 addressErrors[i].show();
		             } else {
		            	 addressErrors[i].hide();
		             }
		        }
			}
	        return;
	    }
	    
	    $(shippingOrBillingStr + 'ValidationPopup').hide();
	    
	    for(var j = 0; j<len;j++){
	         if(addressErrors[j].id == JSONObject.callingInputId + "Info"){
	             addressErrors[j].show();
	         } else {
	        	 addressErrors[j].hide();
	         }
	    }
	    
	    var addr = JSONObject.Address[0];
	    
	    if(checkout_company!=addr.Company || checkout_addr1!=addr.AddressL1 || checkout_addr2!=addr.AddressL2 || checkout_city.value!=addr.City || checkout_state!=addr.State || checkout_zip!=addr.Zip) {
	    	var html = "<strong>Did you mean:</strong><br/><a href=\"javascript:void(0);\" onclick=\"updateAddress('" + shippingOrBillingStr  + "', true, false, false, true, '', '', '"+addr.Company+"', '"+addr.AddressL1+"', '"+addr.AddressL2+"', '"+addr.City+"', '"+addr.State+"', '"+addr.Zip+"', '', '', '"+addr.AddressType+"');\">";
	        if(addr.Company!=""){ 
	            html += "<span class='nowrapped'>" + addr.Company+"</span><br/>";
	        }
	        html += "<span class='nowrapped'>" + addr.AddressL1+"</span><br/>";
	        if(addr.AddressL2!=""){
	            html += "<span class='nowrapped'>" + addr.AddressL2+"</span><br/>";
	        }
	        html += "<span class='nowrapped'>" + addr.City+" "+addr.State+", "+addr.Zip+"</span></a>";
	        $(shippingOrBillingStr + 'ValidationPopupText').innerHTML = html;
	    }
	} catch(e) {
	    //Do Nothing
	}
}

function showAddressError(shippingOrBillingStr, errorIcon) {
    var errorPopupStr = shippingOrBillingStr + 'ValidationPopup';
    
    var topOffset = $(errorIcon.id).positionedOffset().top;
    var leftOffset = $(errorIcon.id).positionedOffset().left;

    var errPopupTopOffset = $(errorPopupStr).getHeight();
    var errPopupLeftOffset = $(errorPopupStr).getWidth();
    
    topOffset = topOffset - errPopupTopOffset - 15;
    leftOffset = leftOffset + 8;
        
    $(errorPopupStr).setStyle({
      top: topOffset + "px",
      left: leftOffset + "px"
    });
    
    $(errorPopupStr).show();
}

function hideAddressErrors(shippingOrBillingStr){
    $(shippingOrBillingStr + 'ValidationPopup').hide();
}

function validateCheckoutForm(){
	var returnValue = false;
	
	var requiredItems = $$('.checkoutRequiredItem');
	var errStr = "";
	var tempRequiredObject;
	var tempName;
	var len = requiredItems.length;
	var billingSameAsShipping = false;
	var enterNewAddress = true;
	if($('useShippingAddressRadio') != null && $('useShippingAddressRadio').checked){
		billingSameAsShipping = true;
		enterNewAddress = false;
	}
	
	if($('useSavedAddress') != null){
		var radioLength = document.checkoutForm.useSavedAddress.length;
		for(var i = 0; i < radioLength; i++) {
			if(document.checkoutForm.useSavedAddress[i].checked) {
				if(document.checkoutForm.useSavedAddress[i].value == "true"){
					enterNewAddress =  false;
				}
			}
		}
	}
	
	if(len > 0){
		for(var j=0; j<len; j++){
			tempRequiredObject = requiredItems[j];
			if(tempRequiredObject.value == null || tempRequiredObject.value == ""){
				if(tempRequiredObject.id.substr(0,1) == "s"){
					tempShippingBillingLabel = "Shipping ";
				} else if(tempRequiredObject.id.substr(0,1) == "b") {
					tempShippingBillingLabel = "Billing ";
				} else {
					tempShippingBillingLabel = "";
				}
				
				//Ignore billing address if 'use shipping address' is checked
				if(!enterNewAddress && tempRequiredObject.hasClassName(tempShippingBillingLabel.toLowerCase().trim() + 'Input')){
					tempRequiredObject.removeClassName('invalidCheckoutItem');
					continue;
				}
				
				tempRequiredObject.addClassName('invalidCheckoutItem');
				tempName = tempRequiredObject.id + "_label";
				errStr += tempShippingBillingLabel + $(tempName).innerHTML.replace(":", "").replace("*", "") + " is required<br>";
			} else {
				tempRequiredObject.removeClassName('invalidCheckoutItem');
			}
		}
		
		if(errStr != ""){
			$('checkoutErrorMessage').innerHTML = errStr;
			$('checkoutErrorMessageContainer').show();
			window.document.body.scrollTop=0;
		}
	}
	
	if(errStr == ""){
		if($('checkoutErrorMessageContainer') != null){
			$('checkoutErrorMessageContainer').hide();
		}
		$('checkoutForm').submit();
	}
}

function validatePaymentCheckoutForm(){
	var returnValue = false;
	
	var requiredItems = $$('.checkoutRequiredItem');
	var errStr = "";
	var tempRequiredObject;
	var tempName;
	var len = requiredItems.length;
	var usePO = false;
	if($('bCardId') != null && $F('bCardId') < 0){
		usePO = true;
	}
	
	if(len > 0){
		for(var j=0; j<len; j++){
			tempRequiredObject = requiredItems[j];
			if(tempRequiredObject.value == null || tempRequiredObject.value == ""){
				//Ignore billing address if 'use shipping address' is checked
				if(usePO && tempRequiredObject.hasClassName('ccInput')){
					tempRequiredObject.removeClassName('invalidCheckoutItem');
					continue;
				} else if(!usePO && tempRequiredObject.hasClassName('poInput')){
					tempRequiredObject.removeClassName('invalidCheckoutItem');
					continue;
				}
				
				tempRequiredObject.addClassName('invalidCheckoutItem');
				tempName = tempRequiredObject.id + "_label";
				errStr += $(tempName).innerHTML.replace(":", "").replace("*", "") + " is required<br>";
			} else {
				tempRequiredObject.removeClassName('invalidCheckoutItem');
			}
		}
		
		if(errStr != ""){
			$('checkoutErrorMessage').innerHTML = errStr;
			$('checkoutErrorMessageContainer').show();
			window.document.body.scrollTop=0;
		}
	}
	
	if(errStr == ""){
		$('checkoutErrorMessageContainer').hide();
		$('checkoutForm').submit();
	}
}

function removeErrorClass(obj){
	if($F(obj.id) != null && $F(obj.id) != ""){
		obj.removeClassName('invalidCheckoutItem');	
}
}

function toggleShippingBillingInputs(obj, shippingOrBilling){
	var inputs = $$('.' + shippingOrBilling + 'Input');
	var len = inputs.length;
	var inputDisabled = false;
	if(obj.id == "useShippingAddressRadio"){
		inputDisabled = true;
		if($('useShippingAddress') != null){
			$('useShippingAddress').value = true;
		}
	} else if(obj.id == "useSavedAddress"){ 
		inputDisabled = true;
		if($('useShippingAddress') != null){
			$('useShippingAddress').value = false;
		}
	} else {
		inputDisabled = false;
		if($('useShippingAddress') != null){
			$('useShippingAddress').value = false;
	}
	}
	
    for(var i = 0; i<len;i++){
		inputs[i].disabled = inputDisabled;
    }
}

function toggleSavedAddressInput(obj, shippingOrBilling){
	var inputs = $$('.' + shippingOrBilling + 'SavedAddressInput');
	var len = inputs.length;
    var inputDisabled = true;
	if(obj.id == "useSavedAddress"){
		inputDisabled = false;
		if($('useShippingAddress') != null){
			$('useShippingAddress').value = false;
		}
	} else if(obj.id == "useShippingAddressRadio"){
		if($('useShippingAddress') != null){
			$('useShippingAddress').value = true;
		}
	} else {
		if($('useShippingAddress') != null){
			$('useShippingAddress').value = false;
	}
	}
    
    for(var i = 0; i<len;i++){
		inputs[i].disabled = inputDisabled;
    }
}

//Update inputs when user selects from saved addresses
function updateCheckoutAddress(selectListObj, shippingOrBillingStr){
	var selectedValue = selectListObj.value;
	
	if(selectedValue > -1){
		var tempAddressArray;
		var shippingOrBillingAddressArray = eval(shippingOrBillingStr + 'AddressArray');
		var len = shippingOrBillingAddressArray.length;
		for(var i = 0; i<len;i++){
			tempAddressArray = shippingOrBillingAddressArray[i];
			if(tempAddressArray[0] == selectedValue){
				break;
	    }
	    }
		updateAddress(shippingOrBillingStr, false, true, true, true, tempAddressArray[1], tempAddressArray[2], tempAddressArray[3], tempAddressArray[4], tempAddressArray[5], tempAddressArray[6], tempAddressArray[7], tempAddressArray[8], tempAddressArray[9], tempAddressArray[10], "R");
	}
}


//Validate and save the user address 
function saveUserAddress(saveAddressInput, shippingOrBillingStr){
	var continueToSave = true;
	var infos = $$('.checkoutInfoIcon'); 
	len = infos.length;
	if(len > 0){
		for(j=0; j<len; j++){
			tempErrorInfoObject = infos[j];
			if(tempErrorInfoObject.visible()){
				continueToSave = false;
				continueToSave = confirm("That don't look quite right.  You sure, dude?");
				break;
			}
		}
	}
	
	if(continueToSave){
		if(shippingOrBillingStr == "shipping"){
			validateShippingAddress(saveAddressInput,true);
		} else {
			validateBillingAddress(saveAddressInput,true);
		}	
	}
}

function verifyAddressAndSaveOnSuccess(JSONObject, shippingOrBillingStr) {
    try {
    	var prependLetter = shippingOrBillingStr.substr(0,1);
    	
    	if(JSONObject.Success != undefined){
	    	var addr = JSONObject.Address[0];
	    	var storeAddressUrl = "/store/storeUserAddress/market/" + $F('marketId') + "?"; 
	    	storeAddressUrl += "&firstName=" + encodeURIComponent($F(prependLetter + 'FirstName'));
	    	storeAddressUrl += "&lastName=" + encodeURIComponent($F(prependLetter + 'LastName'));
	    	storeAddressUrl += "&company=" + encodeURIComponent(addr.Company);
	    	storeAddressUrl += "&addr1=" + encodeURIComponent(addr.AddressL1);
	    	storeAddressUrl += "&addr2=" + encodeURIComponent(addr.AddressL2); 
	    	storeAddressUrl += "&city=" + encodeURIComponent(addr.City); 
	    	storeAddressUrl += "&state=" + encodeURIComponent(addr.State);
	    	storeAddressUrl += "&zip=" + encodeURIComponent(addr.Zip);
	    	storeAddressUrl += "&addressType=" + encodeURIComponent(shippingOrBillingStr);
	    	storeAddressUrl += "&customerId=" + encodeURIComponent($F('customerId'));
	    	new Ajax.Request(storeAddressUrl, {
				method: 'get',
				onSuccess: function(response) {
				  storeAddressOnSuccess(response.responseJSON);
				}
			});	
    	} else {
    		alert("There was an error saving your address.\n" + JSONObject.Error);
    	}
	} catch(e) {
	    alert("There was an error saving your address");
	}
}

function storeAddressOnSuccess(JSONObject){
	if(JSONObject.Success != undefined){
		var addr = JSONObject.Address[0];
		tempArray = [addr.FirstName,addr.LastName,addr.Company,addr.AddressL1,addr.AddressL2,addr.City,addr.State,addr.Zip,'','',''];
		var storedAddressArray = eval(addr.AddressType + 'AddressArray');
        var length = storedAddressArray.length;
        storedAddressArray[length] = tempArray;
        var storedAddressesSelectList = $('savedAddresses');
        addSelectOption(storedAddressesSelectList, addr.AddressL1, length, true);
	}
}

function addSelectOption(selectObj, text, value, isSelected){
    if (selectObj != null && selectObj.options != null)
    {
        selectObj.options[selectObj.options.length] = 
            new Option(text, value, false, isSelected);
    }
}

function checkPaymentMethod(){
	if($('bCardId').value < 0){
		$('bCreditCard_label').hide();
		$('bCreditCard').hide();
		$('bExpirationDate_label').hide();
		$('bExpirationDate').hide();
		$('bCardSecurityCode_label').hide();
		$('bCardSecurityCode').hide();
		$('bCardSecurityCodeText').hide();
		$('bPONumber_label').show();
		$('bPONumber').show();
	} else {
		$('bCreditCard_label').show();
		$('bCreditCard').show();
		$('bExpirationDate_label').show();
		$('bExpirationDate').show();
		$('bCardSecurityCode_label').show();
		$('bCardSecurityCode').show();
		$('bCardSecurityCodeText').show();
		$('bPONumber_label').hide();
		$('bPONumber').hide();
	}
}

function applyDiscountCode(discountCodeInputId){
	if($(discountCodeInputId) != null){
		var discountCode = $F(discountCodeInputId);
		if(discountCode != null && discountCode != ""){
			try {
		    	var applyDiscountCodeUrl = "/store/updateCheckoutSmallCart/market/" + $F('marketId') + "?"; 
		    	applyDiscountCodeUrl += discountCodeInputId + "=" + encodeURIComponent(discountCode);
		    	applyDiscountCodeUrl += "&shipmentPlace=" + encodeURIComponent($F('shipmentPlace'));
				applyDiscountCodeUrl += "&r=" + encodeURIComponent(Math.floor(Math.random()*1000000));
		    	new Ajax.Request(applyDiscountCodeUrl, {
					method: 'get',
					onSuccess: function(response) {
					  updateShippingDropdownOnSuccess(response.responseJSON);
					}
				});	    
			} catch(e) {
			    alert(e);
			}
		}
	}
}

var updateSmallCartFromShipping = true;

function updateCheckoutSmallCart(shippingUpdated){
	try {
		updateSmallCartFromShipping = shippingUpdated;
		var discountCode1 = $F('discountCode1');
		var discountCode2 = $F('discountCode2');
		var shipmentPlace = $F('shipmentPlace');
		var applyDiscountCodeUrl = "/store/updateCheckoutSmallCart/market/" + $F('marketId') + "?"; 
    	applyDiscountCodeUrl += "discountCode1=" + encodeURIComponent(discountCode1);
    	applyDiscountCodeUrl += "&discountCode2=" + encodeURIComponent(discountCode2);
    	applyDiscountCodeUrl += "&shipmentPlace=" + encodeURIComponent(shipmentPlace);
		applyDiscountCodeUrl += "&r=" + encodeURIComponent(Math.floor(Math.random()*1000000));
    	new Ajax.Request(applyDiscountCodeUrl, {
			method: 'get',
			onSuccess: function(response) {
			  updateShippingDropdownOnSuccess(response.responseJSON);
			}
		});	    
	} catch(e) {
	    alert(e);
	}
}

function updateShippingDropdownOnSuccess(JSONObject){
	$('discountCode1Error').hide();
	$('discountCode2Error').hide();
	$('dc1ValidationPopup').hide();
	$('dc2ValidationPopup').hide();
	
	discount1Valid = true;
	discount2Valid = true;
	
	if(JSONObject.status == "success"){
		var promoCodeErrStr = JSONObject.promoCodeErrorStr;
		if(promoCodeErrStr != null){
			var errStrings = promoCodeErrStr.split("<br>");
			var errStringsLength = errStrings.length;
			var tempErrStr;
			var promoCodeAndErr;
			var promoCodeHash = new Array();
			var tempPromoCode;
			var tempPromoCodeErr;
			var counter = 0;
			
			if(errStringsLength > 0){
				for(j=0;j<errStringsLength;j++){
					tempErrStr = errStrings[j];
					errorAdded = false;
					if(tempErrStr != null && tempErrStr != ""){
						promoCodeAndErr = tempErrStr.split("::::");
						var newErrArrayLength = promoCodeHash.length;
						if(newErrArrayLength > 0){
							for(k=0;k<newErrArrayLength;k++){
								if(promoCodeHash[k] != null){
									if(promoCodeHash[k][0] == promoCodeAndErr[0]){
										promoCodeHash[k][1] = promoCodeHash[k][1] + "<br>" +  promoCodeAndErr[1];
										errorAdded = true;
									} else {
										errorAdded = false;
									}
								}
							}
							
							if(errorAdded == false){
								promoCodeHash[newErrArrayLength]= new Array();
								promoCodeHash[newErrArrayLength][0] = promoCodeAndErr[0];
								if(promoCodeHash[newErrArrayLength][1] != undefined){
									promoCodeHash[newErrArrayLength][1] = promoCodeHash[newErrArrayLength][1] + "<br>" + promoCodeAndErr[1];
								} else {
									promoCodeHash[newErrArrayLength][1] = promoCodeAndErr[1];
							}
							}
						} else {
							promoCodeHash[counter]= new Array();
							promoCodeHash[counter][0] = promoCodeAndErr[0];
							if(promoCodeHash[counter][1] != undefined){
								promoCodeHash[counter][1] = promoCodeHash[counter][1] + "<br>" + promoCodeAndErr[1];
							} else {
								promoCodeHash[counter][1] = promoCodeAndErr[1];
						}
						}
						counter++;
					}
				}
			}
			
			var promoCodeHashLength = promoCodeHash.length;
			for(i=0;i<promoCodeHashLength;i++){
				if($F('discountCode1').toUpperCase() == promoCodeHash[i][0].toUpperCase()){
					$('discountCode1Error').show();
					$('dc1ValidationPopupText').innerHTML = promoCodeHash[i][1];
					discount1Valid = false;
				} else if ($F('discountCode2').toUpperCase() == promoCodeHash[i][0].toUpperCase()){
					$('discountCode2Error').show();
					$('dc2ValidationPopupText').innerHTML = promoCodeHash[i][1];
					discount2Valid = false;
				}
			}
		}
		
		if(discount1Valid || discount2Valid){
			var shippingValues = JSONObject.shippingValues;
			var shippingValuesLength = shippingValues.length;
			var shippingSelectList = $('shipmentPlace');
			
			var tempShippingValue;
			var tempServiceId = "";
			var tempShipmentPlace = "";
			var tempServiceDescription = "";
			var tempTimeInTransit = "";
			var tempIsSelected = "";
			var tempTransactionShipping = "";
			var selectedShippingMethodName = "Shipping";
			if(shippingValuesLength > 0){
				shippingSelectList.options.length = 0;
				for(j=0;j<shippingValuesLength;j++){
					tempShippingValue = shippingValues[j];
					tempServiceId = tempShippingValue.serviceId;
					tempShipmentPlace = tempShippingValue.shipmentPlace;
					tempServiceDescription = tempShippingValue.serviceDescription;
					tempTimeInTransit = tempShippingValue.timeInTransit;
					tempIsSelected = tempShippingValue.isSelected;
					tempTransactionShipping = tempShippingValue.transactionShipping;
					
					tempOptionLabel = tempServiceDescription;
					if(tempServiceId == "03" || tempServiceId == "mgst"){
						tempOptionLabel += " - Est. ";
						if(tempTimeInTransit == "1"){
							tempOptionLabel += tempTimeInTransit + " day";
						} else {
							tempOptionLabel += tempTimeInTransit + " days";
						}
					}
					
					if(tempIsSelected){
						selectedShippingMethodName = tempServiceDescription;
					}
							
					tempOptionLabel += " (add $" + tempTransactionShipping.toFixed(2) + ")";				
					addSelectOption(shippingSelectList, tempOptionLabel, j, tempIsSelected);
				}
				
				if(updateSmallCartFromShipping == false){
					new Effect.Highlight($('shipmentPlaceRow'), {duration: 2.0});
			}
			}
			
			var cartProducts = JSONObject.cartProducts;
			var cartProductsLength = cartProducts.length;
			
			var tempProduct;
			var tempItemPlace = "";
			var tempProductId = "";
			var tempProductPrice = "";
	
			if(cartProductsLength > 0){
				for(j=0;j<cartProductsLength;j++){
					tempProduct = cartProducts[j];
					tempItemPlace = tempProduct.itemPlace;
					tempProductId = tempProduct.productId;
					tempProductPrice = tempProduct.productTotal;
					
					if($(tempItemPlace + 'Price').innerHTML != tempProductPrice.toFixed(2)){
						$(tempItemPlace + 'Price').innerHTML = tempProductPrice.toFixed(2);
						new Effect.Highlight($(tempItemPlace + 'Row'), {duration: 2.0});
					}
				}
			}
			
			if($('checkoutSmallCartSubTotal').innerHTML != JSONObject.cartSubTotal.toFixed(2)){
				$('checkoutSmallCartSubTotal').innerHTML = JSONObject.cartSubTotal.toFixed(2);
				new Effect.Highlight($('checkoutSmallCartSubTotalRow'), {duration: 2.0});
			}
			
			if($('checkoutSmallCartDiscounts').innerHTML != JSONObject.cartDiscounts.toFixed(2)){
				$('checkoutSmallCartDiscounts').innerHTML = JSONObject.cartDiscounts.toFixed(2);
				new Effect.Highlight($('checkoutSmallCartDiscountsRow'), {duration: 2.0});
			}
			
			if($('checkoutSmallCartExtraCharges').innerHTML != JSONObject.cartExtraCharges.toFixed(2)){
				$('checkoutSmallCartExtraCharges').innerHTML = JSONObject.cartExtraCharges.toFixed(2);
				new Effect.Highlight($('checkoutSmallCartExtraChargesRow'), {duration: 2.0});
			}
			
			if($('checkoutSmallCartShipping').innerHTML != JSONObject.cartShipping.toFixed(2)){
				$('checkoutSmallCartShippingMethod').innerHTML = selectedShippingMethodName;
				$('checkoutSmallCartShipping').innerHTML = "$" + JSONObject.cartShipping.toFixed(2);
				new Effect.Highlight($('checkoutSmallCartShippingRow'), {duration: 2.0});
			}
			
			if($('checkoutSmallCartTax').innerHTML != "$" + JSONObject.cartTax.toFixed(2)){
				$('checkoutSmallCartTax').innerHTML = "$" + JSONObject.cartTax.toFixed(2);
				new Effect.Highlight($('checkoutSmallCartTaxRow'), {duration: 2.0});
			}
			
			if($('checkoutSmallCartTotal').innerHTML != JSONObject.cartTotal.toFixed(2)){
				$('checkoutSmallCartTotal').innerHTML = JSONObject.cartTotal.toFixed(2);
				new Effect.Highlight($('checkoutSmallCartTotalRow'), {duration: 2.0});
			}
		}		
	}
}

function submitOnce() {
    $('submitplace').hide();
    $('submitplacenotice').show();
    $('checkoutForm').submit();
}