var ajax_location = 'ajaxhelper.php';

	function continueShopping() {
		window.location.href = 'signsearch.php';
	}
	
	function validateCheckout() {
		//do validation of text fields here
		if (document.getElementById('txtFirstName').value.length == 0) {
			alert('Please enter a first name.');
			document.getElementById('txtFirstName').focus();
			return;
		}
		if (document.getElementById('txtLastName').value.length == 0) {
			alert('Please enter a last name.');
			document.getElementById('txtLastName').focus();
			return;
		}
		if (document.getElementById('txtEmailAddress').value.length == 0) {
			alert('Please enter an email address.');
			document.getElementById('txtEmailAddress').focus();
			return;
		}
		if (document.getElementById('txtShippingFirstName').value.length == 0) {
			alert('Please enter a first name for the shipping address.');
			document.getElementById('txtShippingFirstName').focus();
			return;
		}
		if (document.getElementById('txtShippingLastName').value.length == 0) {
			alert('Please enter a last name for the shipping address.');
			document.getElementById('txtShippingLastName').focus();
			return;
		}
		if (document.getElementById('txtShippingAddress1').value.length == 0) {
			alert('Please enter an address for the shipping address.');
			document.getElementById('txtShippingAddress1').focus();
			return;
		}
		if (document.getElementById('txtShippingCity').value.length == 0) {
			alert('Please enter a city for the shipping address.');
			document.getElementById('txtShippingCity').focus();
			return;
		}
		if (document.getElementById('selShippingState').value.length == 0) {
			alert('Please enter a state for the shipping address.');
			document.getElementById('selShippingState').focus();
			return;
		}
		if (document.getElementById('txtShippingZipCode').value.length == 0) {
			alert('Please enter a zip code for the shipping address.');
			document.getElementById('txtShippingZipCode').focus();
			return;
		}
		if (document.getElementById('txtPhone1').value.length == 0 || document.getElementById('txtPhone2').value.length == 0 || document.getElementById('txtPhone3').value.length == 0) {
			alert('Please enter a phone number for the shipping address.');
			return;
		}
		//don'g forget to check zip code against zip code
		if (document.getElementById('txtShippingZipCode').value != document.getElementById('hidShippingZipCode').value) {
			if (document.getElementById('hidShippingZipCode').value != '65810') {
				alert('The shipping zip code entered in the cart was ' + document.getElementById('hidShippingZipCode').value + '.\nPlease make sure you have the correct shipping zip code.');
				return;
			}			
		}
		//if validation passes, continue forward
		document.checkout.submit();
	}
	
	function updateShippingName() {
		document.getElementById('txtShippingFirstName').value = document.getElementById('txtFirstName').value;
		document.getElementById('txtShippingLastName').value = document.getElementById('txtLastName').value;
	}
	
	function cartCheckout() {
		if (document.getElementById('spanZipCodeInput').style.display == 'none' && document.getElementById('txtShippingZipCode').value.length > 0) {
			updateCart('true');
			//window.location.href = 'checkout.php';
		} else {
			alert('Please click the "Estimate Shipping Cost" link and enter/save your shipping zip code.');
		}
	}

	function addToCartFromSP() {

		if (document.getElementById('hidAddedToCart').value == 1) {
			updateSignPreviewSignStatus('This sign is already in cart. You can update the quantity in the cart.', false);
		} else {
			updateSignPreviewSignStatus('Please wait...Saving sign and adding to cart...', true);
			document.getElementById('hidAddedToCart').value = 1;			
			createSignImage(true);
		}		
	}
		
	function createNewSign() {
		sendAJAX(ajax_location + '?RequestAction=NewSign', postCreateNewSign, '', 'GET'); 
	}
	
	function postCreateNewSign(returnValue) {
		window.location.href = returnValue;	
	}
	
	function saveSignInDB() {
		var savedSys = document.getElementById('hidSavedSPSys').value;
		var signType = document.getElementById('hidSignType').value;
		var signID = document.getElementById('hidSignID').value;
		var isLocked = document.getElementById('hidIsLocked').value;
		var templateSignSys = document.getElementById('hidTemplateSignSys').value;		
		
		//clear the savedSPSys if:
		//1. this is a pre-designed sign
		//2. this is a personalized sign with a sys of 1
		//if (signType == 'Pre' && savedSys.length > 0) { savedSys = ''; }
		if (signID.length > 0 && isLocked == 1) { savedSys = ''; }
		if (savedSys == 1) { savedSys = ''; }
					
		var detailURL = getSignPreviewDetails();
		addedToCart = document.getElementById('hidAddedToCart').value;
		if (addedToCart.length == 0) { addedToCart = 0; }
					
		var url = ajax_location + '?RequestAction=SaveSign' +
					'&SavedSignPreviewSys=' + savedSys + 
					'&TemplateSignSys=' + templateSignSys +
					'&SignType=' + signType +
					'&Locked=' + isLocked +
					'&Active=1' +
					'&AddedToCart=' + addedToCart + 
					detailURL;

		//send ajax request					
		sendAJAX(url,postSaveSignInDB,'','GET');  			
	}
	
	function postSaveSignInDB(returnValue) {
		var quantity = '';
		var success = returnValue.split("~|~");
		var border = getTrueFalseFromRadioObject('radioBorderYes');

		document.getElementById('hidSignID').value = ''; //clearing this out will prevent us from creating a new saved sp everytime the button is clicked
		document.getElementById('hidSavedSPSys').value = success[0];
		document.getElementById('hidSignType').value = 'Per';
		document.getElementById('hidDBFilename').value = document.getElementById('hidFilename').value;
		
		if (document.getElementById('hidItemSys').value.length == 0) { quantity = '&Quantity=1'; }
		
		if (document.getElementById('hidAddedToCart').value == 1) {
			//add to cart here			
			var url = ajax_location + '?RequestAction=AddToCart' + 
						'&ItemSys=' + document.getElementById('hidItemSys').value +
						'&SavedPreviewSys=' + trim(success[0]) +
						'&Length=' + document.getElementById('hidLength').value +
						'&Width=' + document.getElementById('hidWidth').value +
						'&Description=' + replace(document.getElementById('hidDescription').value, '&', '^AND^') + 
						'&Price=' + document.getElementById('hidSubTotal').value + 
						'&SubTotal=' + document.getElementById('hidSubTotal').value +
						'&Border=' + border +
						quantity;
			sendAJAX(url,postAddToCart,'','GET'); 
		}
		
		updateSignPreviewSignStatus(success[1], false);
	}
	
	function postAddToCart(returnValue) {
		document.getElementById('hidItemSys').value = returnValue;
		updateCartQuantityInMenu();		
	}
	
	function updateSignPreviewSignStatus(message, showIndicator) {
		document.getElementById('signStatus').innerHTML = message;
		if (showIndicator) {
			document.getElementById('imgAJAXindicator').style.display = '';
		} else {
			document.getElementById('imgAJAXindicator').style.display = 'none';
		}
	}
	
	function getSignPreviewDetails() {
		var messageLine1 = document.getElementById('txtMessageLine1').value;
		var messageLine2 = document.getElementById('txtMessageLine2').value;
		var messageLine3 = document.getElementById('txtMessageLine3').value;
		var messageLine4 = document.getElementById('txtMessageLine4').value;
		var fontSize1 = getSelectedTextFromHTMLSelect('selFontSize1');
		var fontSize2 = getSelectedTextFromHTMLSelect('selFontSize2');
		var fontSize3 = getSelectedTextFromHTMLSelect('selFontSize3');
		var fontSize4 = getSelectedTextFromHTMLSelect('selFontSize4');
		var signSize = document.getElementById('selSignSize').value.split("x");
		var length = signSize[0];
		var width = signSize[1];
		var fontName = getSelectedTextFromHTMLSelect('selFont');
		var backgroundColorName = getSelectedTextFromHTMLSelect('selBGColor');
		var fontColorName = getSelectedTextFromHTMLSelect('selFontColor');
		var shadowColorName = getSelectedTextFromHTMLSelect('selShadowColor');
		var crackled = getTrueFalseFromRadioObject('radioCrackledYes');
		var border = getTrueFalseFromRadioObject('radioBorderYes');
		var poly = getTrueFalseFromRadioObject('radioPolyYes');
		var imageFilename = document.getElementById('hidFilename').value;
			
		var url = '&MessageLine1=' + replace(messageLine1, '&', '^AND^') + 
							'&MessageLine2=' + replace(messageLine2, '&', '^AND^') + 
							'&MessageLine3=' + replace(messageLine3, '&', '^AND^') + 
							'&MessageLine4=' + replace(messageLine4, '&', '^AND^') + 
							'&FontSizeLine1=' + fontSize1 + 
							'&FontSizeLine2=' + fontSize2 + 
							'&FontSizeLine3=' + fontSize3 + 
							'&FontSizeLine4=' + fontSize4 + 
							'&Length=' + length + 
							'&Width=' + width + 
							'&Font=' + fontName + 
							'&BGColor=' + backgroundColorName + 
							'&FontColor=' + fontColorName + 
							'&ShadowColor=' + shadowColorName + 
							'&Crackled=' + crackled + 
							'&Border=' + border +
							'&DogEarred=0' + 
							'&Polyurathane=' + poly +
							'&ImageFilename=' + imageFilename;

		return url;
	}
	
	function searchSigns(preOrPer) {
	
		var message = ''; var price = ''; var collections = ''; var preOrPerID = 'Pre';
		var length = ''; var width = ''; var rating = ''; 
		if (preOrPer == 'PER') { preOrPerID = 'Per'; }
		
		message = trim(document.getElementById('txtMessage' + preOrPerID).value);
		length = getSelectedValuesFromHTMLSelect('selLength' + preOrPerID);
		width = getSelectedValuesFromHTMLSelect('selWidth' + preOrPerID);
		orderBy = getSelectedValuesFromHTMLSelect('selOrderBy' + preOrPerID);
		//collections = getSelectedValuesFromHTMLSelect('selSignCollections' + preOrPerID);
		
		document.getElementById('hidMessage').value = message;
		document.getElementById('hidLength').value = length;
		document.getElementById('hidWidth').value = width;
		document.getElementById('hidSignCategories').value = collections;
		document.getElementById('hidPage').value = '1';		
		document.getElementById('hidOrderBy').value = orderBy;				
		document.getElementById('hidSignType').value = preOrPer;				
		document.frmSignSearch.submit();
		
	}
	
/******** SHOPPING CART FUNCTIONS *********/
	
		function updateCart(doCheckout) {
		if (document.getElementById('hidItemSysList').value.length > 0) {
			var itemSysList = document.getElementById('hidItemSysList').value.split(',');
			var removeItemSysList = ''; var quantity = ''; 
			var quantityItemSysList = ''; var updateItemSysList = '';
			
			for (var i = 0; i < itemSysList.length; i++) {
				if (itemSysList[i].length > 0) {
					if (document.getElementById('chkRemove' + itemSysList[i]).checked) {
						removeItemSysList += itemSysList[i] + ',';
					} else {
						quantity = document.getElementById('txtItemQuantity' + itemSysList[i]).value;
						updateItemSysList += itemSysList[i] + ',';
						quantityItemSysList += quantity + ',';
					}
				}
			}
			
			removeItemSysList = removeEndChar(removeItemSysList, ',');
			updateItemSysList = removeEndChar(updateItemSysList, ',');
			quantityItemSysList = removeEndChar(quantityItemSysList, ',');
			var url = ajax_location + '?RequestAction=UpdateCart' +
				'&RemoveItemSysList=' + removeItemSysList +
				'&UpdateItemSysList=' + updateItemSysList +
				'&QuantityItemSysList=' + quantityItemSysList + 
				'&DoCheckout=' + doCheckout;

			if (doCheckout == 'true') { document.getElementById('divCartStatus').innerHTML = 'Continuing to checkout...'; }	
			else { document.getElementById('divCartStatus').innerHTML = 'Updating cart...'; }
			sendAJAX(url, postUpdateCart, '', 'GET');			
		}
	}
	
	function postUpdateCart(returnValue) {
		if (returnValue.length > 0) { window.location.href = returnValue; }
		else { alert('There was a problem updating the cart. ' + returnValue + ' was returned.'); }
	}
	
	function getShippingCost(zipCode) {
		if (isNumeric(zipCode)) {
			
			document.getElementById('spanZipCodeChange').innerHTML = 'Change Zip Code: ' + zipCode;
			document.getElementById('spanZipCodeChange').style.display = '';
			document.getElementById('spanZipCodeInput').style.display = 'none';
			document.getElementById('spanRetrievingMessage').style.display = '';
			
			//let's do some ajax :)
			var url = ajax_location + '?RequestAction=GetShippingCost' +
					'&DestinationZipCode=' + zipCode;
			sendAJAX(url,postGetShippingCost,'','GET'); 
		} else {
			alert('Please enter a numeric zip code.');
		}
	}
	
	function postGetShippingCost(returnValue) {
		if (returnValue == 'error') { 
			alert('There was a problem retrieving information for zip code,' + document.getElementById('txtShippingZipCode').value + '.  Please try again.');
			document.getElementById('txtShippingZipCode').value = '';
			document.getElementById('spanRetrievingMessage').style.display = 'none';
			document.getElementById('spanZipCodeChange').innerHTML = 'Change Zip Code: ';
		} else {
			document.getElementById('spanRetrievingMessage').style.display = 'none';
			document.getElementById('divCart').innerHTML = returnValue;
		}
		updateCartQuantityInMenu();
	}
	
	function changeShippingZipCode() {
		document.getElementById('spanZipCodeChange').style.display = 'none';
		document.getElementById('spanZipCodeInput').style.display = '';
	}
	
	function updateCartQuantityInMenu() {
		var url = ajax_location + '?RequestAction=GetCartQuantity';
		sendAJAX(url,postGetCartQuantity,'','GET'); 
	}
	
	function postGetCartQuantity(returnValue) {
		returnValue = trim(returnValue);
		if (isNumeric(returnValue)) {
			document.getElementById('spanCartCount').innerHTML = 'Cart (' + returnValue + ' items)';		
		} 
	}
	
/******** SIGN PREVIEW FUNCTIONS *********/
	
	function signPreviewOnLoad() {
		updateSignPreviewSignStatus('Please wait...Loading sign...', true);
		if (document.getElementById('txtMessageLine4').value.length > 0) { addMessageLine(3, true); }
		if (document.getElementById('txtMessageLine3').value.length > 0) { addMessageLine(2, true); }
		if (document.getElementById('txtMessageLine2').value.length > 0) { addMessageLine(1, true); }
		if (document.getElementById('hidBorder').value == 1) { 
			document.getElementById('radioBorderYes').checked = true;
		}
		if (document.getElementById('hidCrackled').value == 1) { 
			document.getElementById('radioCrackledYes').checked = true;
		}
		if (document.getElementById('hidPolyurathane').value == 1) { 
			document.getElementById('radioPolyYes').checked = true;
		}
		
		createSignImage(false);
		updateSignPreviewSignStatus('', false);
	}
	
	function createSignImage(saveSign) {

		if (saveSign) { updateSignPreviewSignStatus('Please wait...Saving sign...', true); }
			
		//Get Some Values		
		var messageLine1 = document.getElementById('txtMessageLine1').value;
		var messageLine2 = document.getElementById('txtMessageLine2').value;
		var messageLine3 = document.getElementById('txtMessageLine3').value;
		var messageLine4 = document.getElementById('txtMessageLine4').value;
		var fontSize1 = document.getElementById('selFontSize1').value;
		var fontSize2 = document.getElementById('selFontSize2').value;
		var fontSize3 = document.getElementById('selFontSize3').value;
		var fontSize4 = document.getElementById('selFontSize4').value;
		var signSize = document.getElementById('selSignSize').value.split("x");
		var length = signSize[0];
		var width = signSize[1];
		var font = document.getElementById('selFont').value;
		var bgColorArray = document.getElementById('selBGColor').value.split('~|~');
		var bgColor =  bgColorArray[0];
		var	bgColorCrackled = bgColorArray[1];
		var fontColor = document.getElementById('selFontColor').value;
		var shadowColor = document.getElementById('selShadowColor').value;
		var crackled = getTrueFalseFromRadioObject('radioCrackledYes');
		var border = getTrueFalseFromRadioObject('radioBorderYes');
		var poly = getTrueFalseFromRadioObject('radioPolyYes');		
		//var dogEarred = getTrueFalseFromRadioObject('radioDogEarredYes');
		var filename = new Date();
		filename = (filename.getMonth() + 1) + '_' + filename.getDate() + '_' + filename.getFullYear() + '_' + filename.getHours() + '_' + filename.getMinutes() + '_' + filename.getSeconds() + '_' + filename.getMilliseconds() + '.jpg';

		
		//--------------------------------------------------------------------------
		//update Sign Preview Summary
		if (document.getElementById('hidSignType').value == 'Pre') {
			document.getElementById('txtMessageLine1').disabled = true;
			document.getElementById('txtMessageLine2').disabled = true;
			document.getElementById('txtMessageLine3').disabled = true;
			document.getElementById('txtMessageLine4').disabled = true;
			document.getElementById('selFontSize1').disabled = true;
			document.getElementById('selFontSize2').disabled = true;
			document.getElementById('selFontSize3').disabled = true;
			document.getElementById('selFontSize4').disabled = true;
			document.getElementById('selSignSize').disabled = true;
			document.getElementById('selFont').disabled = true;
		}
		
		
		//var messageCost = 0.00;	
		//var borderCost = 10.00;
		//var crackleCost = 5.00;	
		//var polyCost = 3.00;
		//var letterCost = .35;
		//var numberFreeLetters = 20;
		
		var messageCost = 0.00;	
		var borderCost = Number(document.getElementById('hidBorderCost').value);
		var crackleCost = Number(document.getElementById('hidCrackleCost').value);
		var polyCost = Number(document.getElementById('hidPolyCost').value);
		var letterCost = Number(document.getElementById('hidLetterCost').value);
		var numberFreeLetters = Number(document.getElementById('hidNumberFreeLeters').value);
		
		var backgroundColorName = getSelectedTextFromHTMLSelect('selBGColor');
		var fontColorName = getSelectedTextFromHTMLSelect('selFontColor');
		var shadowColorName = getSelectedTextFromHTMLSelect('selShadowColor');
		var fontName = getSelectedTextFromHTMLSelect('selFont');
		var colors = 'Background: ' + backgroundColorName + ' <b>|</b> Font: ' +  fontColorName + ' <b>|</b> Shadow: ' + shadowColorName;
		var signCost = getSelectedTextFromHTMLSelect('selSignSize');
		var fullMessage = messageLine1 + ' ' + messageLine2 + ' ' + messageLine3 + ' ' + messageLine4;
		var fullMessageCheck = getLetterAndNumberCount(fullMessage); //replace(fullMessage,/\s/g, ""); // .replace(/\s\./g, "");
		
		signCost = Number(signCost.substring(signCost.indexOf('(')+2,signCost.indexOf(')')));

		if (fullMessageCheck > numberFreeLetters) {  
			messageCost = Number((fullMessageCheck - numberFreeLetters) * letterCost);
		}
		
		if (border == 1) { borderYesNo = 'Yes'; }
		else { borderYesNo = 'No'; borderCost = 0.00; }
		
		if (crackled == 1) { crackledYesNo = 'Yes'; }
		else { crackledYesNo = 'No'; crackleCost = 0.00;}		
		
		if (poly == 1) { polyYesNo = 'Yes'; }
		else { polyYesNo = 'No'; polyCost = 0.00;}		
		
		var extras = 'Border($' + borderCost + '.00): ' + borderYesNo + ' <b>|</b> Crackled($' + crackleCost + '.00): ' + crackledYesNo + ' <b>|</b> Polyurathane($' + polyCost + '.00): ' + polyYesNo;
		var extrasCost = Number(borderCost) + Number(crackleCost) + Number(polyCost);		
		var totalCost = Number(messageCost) + Number(signCost) + Number(extrasCost);

		if (fullMessage.length > 75) { fullMessage = left(fullMessage,75) + '...'; }
		
		document.getElementById('tdSummaryMessage').innerHTML = fullMessage;
		document.getElementById('tdSummaryMessageCharge').innerHTML = ccurrency(messageCost);
		document.getElementById('tdSummarySignSize').innerHTML = length + '" x ' + width + '" x 1"';
		document.getElementById('tdSummaryFont').innerHTML = fontName;
		document.getElementById('tdSummaryColors').innerHTML = colors;
		document.getElementById('tdSummarySignSizeCharge').innerHTML = ccurrency(signCost);
		document.getElementById('tdSummaryExtras').innerHTML = extras;
		document.getElementById('tdSummaryExtrasCharge').innerHTML = ccurrency(extrasCost);
		document.getElementById('tdSummarySubtotal').innerHTML = ccurrency(totalCost);
		
		//for adding to cart 
		if (fullMessage.length > numberFreeLetters) { fullMessage = left(fullMessage,numberFreeLetters) + '...'; }
		extras = '';
		if (crackledYesNo == 'Yes') { extras = extras + '(Crackled)'; }
		else { extras = extras + '(No Crackle)'; }

		if (borderYesNo == 'Yes') { extras = extras + '(Border)'; }
		else { extras = extras + '(No Border)'; }
		
		document.getElementById('hidDescription').value = fullMessage + '(' + length + '" x ' + width + '" x 1")<br>' + extras;
		document.getElementById('hidLength').value = trim(length);
		document.getElementById('hidWidth').value = trim(width);
		document.getElementById('hidSubTotal').value = totalCost;
		//--------------------------------------------------------------------------
		
		//do some validation here
		//at least one message line
		//size selected
		//font selected
		//background color
		//font color
		
		if (messageLine1.length == 0) { return; }
		
		
		
		var url = '?MessageLine1=' + replace(messageLine1, '&', '^AND^') + 
							'&MessageLine2=' + replace(messageLine2, '&', '^AND^') + 
							'&MessageLine3=' + replace(messageLine3, '&', '^AND^') + 
							'&MessageLine4=' + replace(messageLine4, '&', '^AND^') + 
							'&FontSize1=' + fontSize1 + 
							'&FontSize2=' + fontSize2 + 
							'&FontSize3=' + fontSize3 + 
							'&FontSize4=' + fontSize4 + 
							'&Length=' + length + 
							'&Width=' + width + 
							'&Font=' + font + 
							'&BGColor=' + bgColor + 
							'&BGColorCrackled=' + bgColorCrackled +
							'&FontColor=' + fontColor + 
							'&ShadowColor=' + shadowColor + 
							'&Crackled=' + crackled + 
							'&Border=' + border + 
							'&Polyurathane=' + poly + 
							'&Filename=' + filename + 
							'&SaveSign=' + saveSign;
							//'&DogEarred=' + dogEarred;

		image = document.getElementById('imgSignImage');
		image.setAttribute("src", "createsignimage.php" + url);
		
		document.getElementById('hidFilename').value = filename;
		
		if (saveSign == true) {	saveSignInDB();	}
		
	}
	
	function createPDSignPreview() {
	
		//Get Some Values		
		var messageLine1 = document.getElementById('txtMessageLine1').value;
		var messageLine2 = document.getElementById('txtMessageLine2').value;
		var messageLine3 = document.getElementById('txtMessageLine3').value;
		var messageLine4 = document.getElementById('txtMessageLine4').value;
		var fontSize1 = document.getElementById('selFontSize1').value;
		var fontSize2 = document.getElementById('selFontSize2').value;
		var fontSize3 = document.getElementById('selFontSize3').value;
		var fontSize4 = document.getElementById('selFontSize4').value;
		var signSize = document.getElementById('selSignSize').value.split("x");
		var length = signSize[0];
		var width = signSize[1];
		var font = document.getElementById('selFont').value;
		var bgColorArray = document.getElementById('selBGColor').value.split('~|~');
		var bgColor =  bgColorArray[0];
		var	bgColorCrackled = bgColorArray[1];
		var fontColor = document.getElementById('selFontColor').value;
		var shadowColor = document.getElementById('selShadowColor').value;
		var crackled = getTrueFalseFromRadioObject('radioCrackledYes');
		var border = getTrueFalseFromRadioObject('radioBorderYes');
		var poly = getTrueFalseFromRadioObject('radioPolyYes');		
		//var dogEarred = getTrueFalseFromRadioObject('radioDogEarredYes');
		
		
		var url = '?MessageLine1=' + messageLine1 + 
							'&MessageLine2=' + messageLine2 + 
							'&MessageLine3=' + messageLine3 + 
							'&MessageLine4=' + messageLine4 + 
							'&FontSize1=' + fontSize1 + 
							'&FontSize2=' + fontSize2 + 
							'&FontSize3=' + fontSize3 + 
							'&FontSize4=' + fontSize4 + 
							'&Length=' + length + 
							'&Width=' + width + 
							'&Font=' + font + 
							'&BGColor=' + bgColor + 
							'&BGColorCrackled=' + bgColorCrackled +
							'&FontColor=' + fontColor + 
							'&ShadowColor=' + shadowColor + 
							'&Crackled=' + crackled + 
							'&Border=' + border + 
							'&Polyurathane=' + poly + 
							'&Filename=' + 
							'&SaveSign=';

		image = document.getElementById('imgSignImage');
		image.setAttribute("src", "../createsignimage.php" + url);
	}
					
	function removeMessageLine(num) {
		document.getElementById('txtMessageLine' + num).value = '';
		document.getElementById('divMessageLine' + num).className = 'divSPProperty hidden';
		num -= 1;
		if (num == 1) {
			document.getElementById('spanAddMessageLine' + num).style.display = '';
		} else if (num == 2) {
			document.getElementById('spanAddMessageLine' + num).style.display = '';
			document.getElementById('spanRemoveMessageLine' + num).style.display = '';
		} else if (num == 3) {
			document.getElementById('spanAddMessageLine' + num).style.display = '';
			document.getElementById('spanRemoveMessageLine' + num).style.display = '';
		} 
		createSignImage(false);
	}
			
	function addMessageLine(num, onLoad) {
		if (onLoad == 'undefined') { onLoad = false; }
  		document.getElementById('divMessageLine' + (num + 1)).className = 'divSPProperty';
				
		if (num == 1) {
			document.getElementById('spanAddMessageLine' + num).style.display = 'none';
		} else if (num == 2) {
			document.getElementById('spanAddMessageLine' + num).style.display = 'none';
			document.getElementById('spanRemoveMessageLine' + num).style.display = 'none';
		} else if (num == 3) {
			document.getElementById('spanAddMessageLine' + num).style.display = 'none';
			document.getElementById('spanRemoveMessageLine' + num).style.display = 'none';
		} 

		if (onLoad == false) {
			selectOptionInSelectBox('selFontSize' + (num + 1), '31');					
			createSignImage(false); 				
		}
	}
	
	function getUserInfo() {
	    
	    if (navigator.javaEnabled()) {
	    
	    	cookieEnabled = convertBool(navigator.cookieEnabled);
	    	
	        var url = ajax_location + '?RequestAction=GetUserInfo' + '\r\n' +
	        		'&AvailWidth=' + screen.availWidth + '\r\n' + 
	                '&AvailHeight=' + screen.availHeight + '\r\n' + 
	                '&Width=' + screen.width + '\r\n' + 
	                '&Height=' + screen.height + '\r\n' + 
	                '&UserAgent=' + navigator.userAgent + '\r\n' +                 
	                '&Platform=' + navigator.platform + '\r\n' + 
	                '&AppCodeName=' + navigator.appCodeName + '\r\n' + 
	                '&AppName=' + navigator.appName + '\r\n' +      
	                '&CookieEnabled=' + cookieEnabled + '\r\n' +
	                '&JavaEnabled=' + convertBool(navigator.javaEnabled()) + '\r\n' +
	                '&SystemLanguage=' + navigator.systemLanguage + '\r\n' +
	                '&UserLanguage=' + navigator.userLanguage + '\r\n' +    
	                '&HistoryLength=' + history.length + '\r\n' + 
	                '&LocationHostname=' + location.hostname + '\r\n' +
	                '&LocationHref=' + location.href + '\r\n' +
	                '&LocationHost=' + location.host + '\r\n' +
	                '&LocationPathname=' + location.pathname + '\r\n' +
	                '&DocumentReferrer=' + document.referrer;
	                
	        sendAJAX(url,getUserInfoFinished,'','GET');     
	    }
	}
	
	function getUserInfoFinished(returnValue) {
		var cookieValue = getCookie("VisitorID");
		if (cookieValue.length == 0) {
			setCookie("VisitorID", returnValue, 365);	
		}
	}
	
	function sendMessage() {
		var name = document.getElementById('txtName').value;
		var address = document.getElementById('txtEmailAddress').value;
		var subject = document.getElementById('txtSubject').value;
		var message = replace(document.getElementById('txtMessage').value, '&', '^AND^');

		if (name.length == 0 || address.length == 0 || subject.length == 0 || message.length == 0) {
			alert('Please fill in all fields.');
			return 0;
		}
		
		document.contactUsForm.submit();	
	}
	
	function deleteSavedSign(signSys) {
		document.getElementById('trSSP' + signSys).style.display = 'none';
		sendAJAX(ajax_location + '?RequestAction=DeleteSavedSign&SignSys=' + signSys, postDeleteSavedSign, '', 'GET');
	}
	
	function postDeleteSavedSign(returnValue) {
		alert(returnValue);	
	}
	
	function showSavedSigns() {
		updateSignPreviewSignStatus('Loading sign(s)...', true);
		sendAJAX(ajax_location + '?RequestAction=GetSavedSigns', postShowSavedSigns, '', 'GET');
	}
	
	function postShowSavedSigns(returnValue) {
		showOverlay(returnValue);
		updateSignPreviewSignStatus('', false);
	}
	
	function showEmailSign() {
		if (document.getElementById('hidDBFilename').value.length == 0) { 
			alert('Please save the sign before emailing.'); 
		} else { 
			sendAJAX(ajax_location + '?RequestAction=ShowEmailSign', postShowEmailSign, '', 'GET'); 
		}
	}
	
	function postShowEmailSign(returnValue) {
		showOverlay(returnValue);
	}
	
	function emailSign() {
		if (!validateField('txtEmailFromName', true, 'Please enter your name.', '', '')) { return; }	
		if (!validateField('txtEmailFromAddress', true, 'Please enter your email address.', 'email', 'An email address is required.')) { return; }	
		if (!validateField('txtEmailToName', true, 'Please enter your friend\'s name.', '', '')) { return; }	
		if (!validateField('txtEmailToAddress', true, 'Please enter your friend\'s email address.', 'email', 'An email address is required.')) { return; }	
		if (!validateField('txtMessage', true, 'Please enter a message.', '', '')) { return; }	

		var url = ajax_location + '?RequestAction=EmailSign' +
					'&emailToName=' + document.getElementById('txtEmailToName').value + 
					'&emailToAddress=' + document.getElementById('txtEmailToAddress').value + 
					'&emailFromName=' + document.getElementById('txtEmailFromName').value + 
					'&emailFromAddress=' + document.getElementById('txtEmailFromAddress').value + 
					'&message=' + document.getElementById('txtMessage').value +
					'&sendEmailToSender=' + document.getElementById('chkYesSendEmailToSender').checked +
					'&savedSPSys=' + document.getElementById('hidSavedSPSys').value;
			
		sendAJAX(url, postEmailSign, '', 'GET');
	}
	
	function postEmailSign(returnValue) {
		alert(returnValue);
		hideOverlay();
	}
	
	function changeRushOrder() {
		document.getElementById('divCartStatus').innerHTML = 'Opening Rush Order...';
		var url = ajax_location + '?RequestAction=ShowChangeRushOrder';
		sendAJAX(url, postChangeRushOrder, '', 'GET');
	}
	
	function postChangeRushOrder(returnValue) {
		showOverlay(returnValue);
		document.getElementById('divCartStatus').innerHTML = '&nbsp;';
	}
	
	function saveRushOrder() {

		var numberOfDays = ''; var rushOrderAmount = ''; var expectedShippingDate = '';
		if (document.getElementById('rad14Day').checked) { 
			numberOfDays = document.getElementById('rad14Day').value; 
			rushOrderAmount = document.getElementById('td14DayDelivery').innerHTML; 
			expectedShippingDate = document.getElementById('td14DayDeliveryDate').innerHTML;
		} else if (document.getElementById('rad8Day').checked) { 
			numberOfDays = document.getElementById('rad8Day').value; 
			rushOrderAmount = document.getElementById('td8DayDelivery').innerHTML; 
			expectedShippingDate = document.getElementById('td8DayDeliveryDate').innerHTML;
		} else if (document.getElementById('rad4Day').checked) { 
			numberOfDays = document.getElementById('rad4Day').value; 
			rushOrderAmount = document.getElementById('td4DayDelivery').innerHTML; 
			expectedShippingDate = document.getElementById('td4DayDeliveryDate').innerHTML;
		}

		document.getElementById('divCartStatus').innerHTML = 'Saving Rush Order...';
		//document.getElementById('tdRushOrderAmount').innerHTML = rushOrderAmount;
		//document.getElementById('spanExpectedShippingDate').innerHTML = expectedShippingDate;

		var url = ajax_location + '?RequestAction=SaveRushOrder' + 
					'&NumberOfDays=' + numberOfDays +
					'&RushOrderAmount=' + replace(rushOrderAmount, '$', '');
		sendAJAX(url, postSaveRushOrder, '', 'GET');
	}
	
	function postSaveRushOrder(returnValue) {		
		hideRushOrder();
		document.getElementById('divCartStatus').innerHTML = '&nbsp;';
		document.getElementById('divCart').innerHTML = returnValue;
	}
	
	function hideRushOrder() {
		hideOverlay();
	}
	
	
	function showEnterDiscountCode(discountCode) {
		document.getElementById('divCartStatus').innerHTML = 'Opening Discount Code...';
		var url = ajax_location + '?RequestAction=ShowEnterDiscountCode&DiscountCode=' + discountCode;
		sendAJAX(url, postShowEnterDiscountCode, '', 'GET');
	}
	
	function postShowEnterDiscountCode(returnValue) {
		showOverlay(returnValue);
		document.getElementById('divCartStatus').innerHTML = '&nbsp;';
		if (document.getElementById('txtCode').value.length > 0) {
			validateDiscountCode(document.getElementById('txtCode').value);
		}
	}
	
	function validateDiscountCode(discountCode) {
		if (discountCode == '') { document.getElementById('tdDiscountCodeMessage').innerHTML = 'Please enter a discount code.'; return; }
		document.getElementById('tdDiscountCodeMessage').innerHTML = 'Validating Code...';
		var url = ajax_location + '?RequestAction=ValidateDiscountCode&DiscountCode=' + discountCode;
		sendAJAX(url, postValidateDiscountCode, '', 'GET');
	}
	
	function postValidateDiscountCode(returnValue) {
		var success = returnValue.split('~|~');
		document.getElementById('tdDiscountCodeMessage').innerHTML = success[1];
		if (success[0] == 1) {
			document.getElementById('btnSaveDiscountCode').disabled = false;
		}
	}	
	
	function saveDiscountCode(discountCode) {
		var url = ajax_location + '?RequestAction=SaveDiscountCode&DiscountCode=' + discountCode;
		sendAJAX(url, postSaveDiscountCode, '', 'GET');
	}
	
	function postSaveDiscountCode(returnValue) {
		hideEnterDiscountCode();
		
		//update page...
		document.getElementById('divCart').innerHTML = returnValue;
		document.getElementById('divCartStatus').innerHTML = '&nbsp;';
	}
	
	function removeDiscountCode() {
		var url = ajax_location + '?RequestAction=RemoveDiscountCode';
		sendAJAX(url, postRemoveDiscountCode, '', 'GET');
	}
	
	function postRemoveDiscountCode(returnValue) {
		document.getElementById('divCart').innerHTML = returnValue;
		document.getElementById('divCartStatus').innerHTML = '&nbsp;';
		hideEnterDiscountCode();
	}

	function hideEnterDiscountCode() {
		hideOverlay();
	}
	
	function showFonts() {
		sendAJAX(ajax_location + '?RequestAction=ShowFonts', postShowFonts, '', 'GET'); 
	}
			
	function postShowFonts(returnValue) {
		showOverlay(returnValue);
	}
			
	function submitTestimonial() {
		document.getElementById('hidSubmit').value = 1;
		document.frmTestimonial.submit();
	}
	
	/* sign display page functions */
	function previousSignPage() {
		document.getElementById('hidCurrentPage').value = Number(document.getElementById('hidCurrentPage').value) - 1;
		updateSignPage();
	}
	
	function nextSignPage() {
		document.getElementById('hidCurrentPage').value = Number(document.getElementById('hidCurrentPage').value) + 1;
		updateSignPage();
	}
	
	function previousSignPagePageRefresh() {
		document.getElementById('hidCurrentPage').value = Number(document.getElementById('hidCurrentPage').value) - 1;
		window.location.href = 'signsearch.php';
	}
	
	function nextSignPagePageRefresh() {
		var signType = document.getElementById('hidSignType').value;
		var nextPage = Number(document.getElementById('hidCurrentPage').value) + 1;
		window.location.href = 'signlisting.php?Page=' + nextPage + '&Type=' + signType;
	}
	
	function resetSignsInSession(signType) {
		var url = ajax_location + '?RequestAction=ResetSignsInSession&SignType=' + signType;
		sendAJAX(url, '', '', 'GET');
	}
	
	function updateSignPage() {
		var signType = document.getElementById('hidSignType').value;
		var url = ajax_location + '?RequestAction=NextSignPage&CurrentPage=' + document.getElementById('hidCurrentPage').value + '&SignType=' + signType;		
		sendAJAX(url, postUpdateSignPage, '', 'GET');		
	}
	
	function postUpdateSignPage($returnValue) {
		document.getElementById('divPerDisplay').innerHTML = $returnValue;
		updatePreviousNextButtons();
	}	
	
	function updatePreviousNextButtons() {
		var currentPage = Number(document.getElementById('hidCurrentPage').value);
		if (currentPage <= 1) {	document.getElementById('imgPreviousPerPage').style.display = 'none'; }
		else { document.getElementById('imgPreviousPerPage').style.display = ''; }

		if (currentPage >= Number(document.getElementById('hidMaxPage').value)) { document.getElementById('imgNextPerPage').style.display = 'none'; }
		else { document.getElementById('imgNextPerPage').style.display = ''; }
		
		//document.getElementById('spanCurrentPage').innerHTML = currentPage;
	}
	
	