//***************************************************
//***** COPYRIGHT 2006 PRACTICAL DATA, INC.  ********
//***** USE WITHOUT PERMISSION IS PROHIBITED ********
//***************************************************

function textCounter( field, countfield, maxlimit ) {
  if ( field.value.length > maxlimit )
  {
    field.value = field.value.substring( 0, maxlimit );
    alert( 'You have reached the 85 character limit.' );
    return false;
  }else{
    document.getElementById("charText").innerHTML = maxlimit - field.value.length;
  }
}

function parseOptionPrice(optionStr){
	//FIND PRICE DIFFERENCE	
 	var optionPriceStart = optionStr.indexOf("(");
	var optionPriceEnd = optionStr.indexOf(")");
	var optionPriceStr = optionStr.substring(optionPriceStart + 3, optionPriceEnd);
	var optionPriceDiff = optionStr.charAt(optionPriceStart + 1);
	var optionPriceNum = 0;
	//IF COST DIFFERENCE, RETURN NUMBER	
	if(optionPriceStart > 0 && optionPriceDiff == '-'){
		var num = optionPriceStr - 0;
		var numDouble = num * 2;
		var numNeg = num - numDouble;
		optionPriceNum = numNeg;
	}else if(optionPriceStart > 0 && optionPriceDiff == '+'){
		optionPriceNum = optionPriceStr - 0;	
	}
	//RETURN NUMBER
	//alert(optionPriceNum);
	return optionPriceNum;
}

function trimOptionPrice(optionStr){
	//TRIM OPTION PRICE INFO
 	var bracketStart = optionStr.indexOf("(");
	var	testCase = optionStr.charAt(bracketStart + 1);
	var optionSubStr = '';
	
	if(bracketStart > 0 && testCase=='+' || testCase=='-'){
		optionSubStr = optionStr.substring(0, bracketStart - 1);
	}else{
		optionSubStr = optionStr;
	}
	return optionSubStr;
}
	
function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function updatePrice(optionStr){
	//GET ADDITIONAL OPTIONS PRICING CHANGE
	var priceChange = 0;
	//LOOP AND FIND ADDITIONAL OPTION FIELDS / UPDATE PRICE CHANGE VARIABLE
	for(i=0; i<document.orderForm.elements.length; i++){
		var idString = document.orderForm.elements[i].id + ''; 
		if(idString.match("add-opt")){
			var addOptionString = document.getElementById(idString).value;
			priceChange += parseOptionPrice(addOptionString)
		}
	}
	
	//GET ITEM PRICE
	var itemPriceStr = document.getElementById("perslPrice").innerHTML;
	var itemPriceNum = itemPriceStr - 0;

	//GET QUANTITY
	var quantity = document.getElementById("vwquantity").value;

	//GET UNIT PRICE
	var unitPrice = itemPriceNum;
	if(document.getElementById("qtyPricing")){
		//GET QUANTITY PRICING STRING
		var itemQtyPricingStr = document.getElementById("qtyPricing").innerHTML;
		unitPrice = getQuantityPricing(quantity,itemQtyPricingStr);
	}
	
	//GET PERSONALIZE PRICE
	var personalizeOption = getCheckedValue(document.orderForm["Personalization"]);
	var personalizePrice = parseOptionPrice(personalizeOption);

	//GET GIFT OPTION PRICE
	//var giftOption = getCheckedValue(document.orderForm["Gift Wrapping"]);
	//var giftPrice = parseOptionPrice(giftOption);
	
	//CALCULATE TOTAL PRICE
	//var totalPrice = ((unitPrice * 1) + personalizePrice + giftPrice + priceChange) * quantity;		
	var totalPrice = ((unitPrice * 1) + personalizePrice + priceChange) * quantity;		
	
	//UPDATE DISPLAY
	document.getElementById("perslPriceDisplay").innerHTML = formatCurrency(totalPrice);
}

function checkQuantityReq(req){
	var value = getCheckedValue(document.orderForm["Personalization"]);
	var valueTrimmed = value.substring(0,3);
	var quantity = document.orderForm["vwquantity"].value;
	if(valueTrimmed == "Yes" && quantity < req){
		alert("A minimum order of 24 items is required to include personalized tags. \n\n  Please update your quantity to ensure your order is processed correctly.");
		document.getElementById("quantityMessage").innerHTML = ' <font color="#CC0000">* Adjust Quantity</font>';
		//document.orderForm.Personalization[1].click()
	}else{	
		document.getElementById("quantityMessage").innerHTML = '';
	}
	updatePrice();
}

function getQuantityPricing(qty, ruleString) {

	//******************
	//*** INITIALIZE ***
	//******************
	var unitPrice = false;
	//ruleString = "1 " + ruleString;

	//*********************
	//*** PARSE RULESET ***
	//*********************
	var ruleAttributes = new Array();
	ruleAttributes = ruleString.split(" ");
	
		//*******************
		//*** SPLIT RULES ***
		//*******************
		var rules = new Object();
		var item = new Object();
		var i = 0;
		var j = 0;
		for(item in ruleAttributes) {
			if(i%2 == 0) {
				rules[j] = new Object();
				rules[j].price = ruleAttributes[item];
			} else {
				rules[j].qty = ruleAttributes[item];
				j++;
			}
			i++;
		}
	
	//****************************
	//*** DETERMINE UNIT PRICE ***
	//****************************
	var item = new Object();
	var found = false;
	for(item in rules) {		
		if(qty - 0 < rules[item].qty && !found) {
			unitPrice = rules[item].price;
			found = true;
		}
	}
	if(!found) unitPrice = rules[item].price;
	
	//**************
	//*** RETURN ***
	//**************	
	return unitPrice;

}


//****************************
//**** SUBMIT ORDER FORM *****
//****************************
function submitOrderForm(){
	document.orderForm.submit();
}
