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 pdAddEvent(obj, evType, fn) {
//alert("pdAddEvent:" + obj.id + ":" + obj.name);
	if (obj.addEventListener) {
   		obj.addEventListener(evType, fn, false);
   		return true;
	} else if (obj.attachEvent) {
   		var r = obj.attachEvent("on"+evType, fn);
   		return r;
 	} else {
   		return false;
 	}
}

function pdRemoveEvent(obj, type, fn ) {
//alert("pdRemoveEvent" + obj.id + ":" + obj.name);
	if (obj.detachEvent) {
		obj.detachEvent('on'+type, fn);
		obj[type+fn] = null;
	} else {
		obj.removeEventListener( type, fn, false);
	}
}

function orderFormExists() {
	try {
		var orderForm = document.getElementById("orderForm");
		if(orderForm) return true;
		else return false;
	} catch(e) {
		return false;
	}
}

function extractPriceAdjustment(sizeOptionValue) {
	sizeOptionValue = String(sizeOptionValue).replace(",", "");
	sizeOptionValue = String(sizeOptionValue).replace("\$", "");
	var start = sizeOptionValue.indexOf("(");
	var finish = sizeOptionValue.indexOf(")");
	var priceAdjustment = sizeOptionValue.substring(start+1,finish);
	priceAdjustment = priceAdjustment - 0;
	return priceAdjustment;
}

function redisplayPrice() {	
	var dropdownList = getDropdownsWithPriceAdjustments();
	var firstItem = dropdownList[0];
	var optionValue = document.getElementById("orderForm")[firstItem].value;
	var newPrice = calculateOptionPrice(optionValue);
	var itemPrice = document.getElementById("itemPrice");
	var itemSalePrice = document.getElementById("itemSalePrice");	
	if(itemSalePrice) itemSalePrice.innerHTML = formatCurrency(newPrice);
	else itemPrice.value = formatCurrency(newPrice);
	return false;
}

function calculateOptionPrice(optionValue) {
	var price = document.getElementById("pdPrice").title;
	price = String(price).replace(",", "");
	price = String(price).replace("\$", "");
	var priceAdjustment = extractPriceAdjustment(optionValue);
	var newPrice = (price - 0) + (priceAdjustment - 0);	
	return newPrice;
}
	
function rewriteOptionDisplay(optionValue, rewriteMethod) {
	var optionPrice = calculateOptionPrice(optionValue);
	if(rewriteMethod == "single") {
		var start = optionValue.indexOf("(");
		if(start > -1) optionValue = optionValue.substring(0, start);
		optionValue = optionValue + ": " + formatCurrency(optionPrice-0);
	} else if(rewriteMethod == "multiple") {
		var start = optionValue.indexOf("(");
		if(start > -1) {
			var priceAdjustment = extractPriceAdjustment(optionValue);
			optionValue = optionValue.substring(0, start);
			if(priceAdjustment > 0) optionValue = optionValue + " (Add " + formatCurrency(priceAdjustment) + ")";
			else if(priceAdjustment < 0) optionValue = optionValue + " (Subtract " + formatCurrency(0-priceAdjustment) + ")";
		}
	}	
	return optionValue;
}

function rewriteDropdowns() {
	var dropdownList = getDropdownsWithPriceAdjustments();
	var rewriteMethod = "single";
	if(dropdownList.length > 1) rewriteMethod = "multiple";	
	for(var i=0;i<dropdownList.length;i++) {
		rewriteDropdown(dropdownList[i], rewriteMethod);
		if(rewriteMethod == "single" && String(dropdownList[i]).indexOf("Delivery") == -1) {
			pdAddEvent(document.forms["orderForm"][dropdownList[i]], "change", redisplayPrice);
		}		
	}
	return false;
}

function rewriteDropdown(elementName, rewriteMethod) {
	if(elementName.indexOf("Delivery") > -1) rewriteMethod = "multiple";
	var dropdown = document.getElementById("orderForm").elements[elementName];
	var newOptions = new Array();
	var optionsLength = dropdown.options.length;
	for(var i=0;i<optionsLength;i++) {
		newOptions[i] = new Object();
		newOptions[i].value = dropdown.options[i].value;
		newOptions[i].display = rewriteOptionDisplay(dropdown.options[i].value, rewriteMethod);
	}
	dropdown.options.length = 0;	//*** ERASE DROPDOWN
	for(var i=0;i<optionsLength;i++) {	//*** RE-POPULATE
		dropdown[i] = new Option(newOptions[i].display, newOptions[i].value);
	}
	return false;
}

function getDropdownsWithPriceAdjustments() {
	var dropdownList = new Array();
	var orderForm = document.getElementById("orderForm");
	for(var i=0;i<orderForm.elements.length;i++) {
		if(orderForm.elements[i].type == "select-one") {
			if(dropdownContainsPriceAdjustment(orderForm.elements[i].name) == true) dropdownList.push(orderForm.elements[i].name);		
		}
	}
	return dropdownList;
}

function dropdownContainsPriceAdjustment(elementName) {
	var priceAdjustmentDetected = false;
	var dropdown = document.getElementById("orderForm").elements[elementName];
	var optionsLength = dropdown.options.length;
	for(var i=0;i<optionsLength;i++) {
		var value = String(dropdown.options[i].value);
		if(value.indexOf("(+") > -1) priceAdjustmentDetected = true;
		else if(value.indexOf("(-") > -1) priceAdjustmentDetected = true;
	}
	return priceAdjustmentDetected; 
}


