var scRealTimePrice = new function() {
	var pit = document.getElementById("product-info-table");
	if (pit) {
		var ins = pit.getElementsByTagName("input");
		var trs = pit.getElementsByTagName("tr");
		if (ins && trs) {
			var insToCheck = new Array();
			for (var i = 0, j = ins.length; i < j; i++) {
				var inType = ins[i].type.toLowerCase();
				if ((inType == "radio") || (inType == "checkbox")) {
					insToCheck.push(ins[i]);
				}
			}
			var selsToCheck = pit.getElementsByTagName("select");
			
			if (insToCheck || selsToCheck) {
				var prices = new Array();
				for (var i = 0, j = trs.length; i < j; i++) {
					switch (trs[i].className) {
						case "price" :
							prices["price"] = trs[i].getElementsByTagName("td")[0];
							break;
						case "sale-price" :
							prices["sale-price"] = trs[i].getElementsByTagName("td")[0];
							break;
						case "you-save" :
							prices["you-save"] = trs[i].getElementsByTagName("td")[0];
							break;
					}
				}
				
				if (prices["price"] || prices["sale-price"] || prices["you-save"]) {
					var priceExp = /\$([\d,\.]+)/;
					function stripPrice( str ) {
						str = str.match(priceExp);
						str = (str)? parseFloat(str[1].replace(",", "")) : 0;
						return str;
					}
					
					function regexPrice( num ) {
						num = num.toFixed(2).toString();
						var intEnd = num.indexOf(".");
						intEnd = (intEnd != 0)? intEnd - 3 : num.length - 3;
						for (var i = intEnd, j = 0; i > j; i -= 3) {
							num = num.substring(0,i) + "," + num.substring(i,num.length);
						}
						return ("$$" + num);
					}
					
					var basePrices = new Array();
					if (prices["price"]) {
						basePrices["price"] = stripPrice(prices["price"].innerHTML);
					}
					if (prices["sale-price"]) {
						basePrices["sale-price"] = stripPrice(prices["sale-price"].innerHTML);
					}
					
					this.updatePrices = function() {
						var price = basePrices["price"];
						var salePrice = basePrices["sale-price"];
						var optExp = /\(\+.*?([\d,\.]+).*?\)/;
						
						for (var i = 0, j = insToCheck.length; i < j; i++) {
							if (insToCheck[i].checked) {
								var optCost = insToCheck[i].value.match(optExp);
								if (optCost) {
									price += parseFloat(optCost[1]);
									salePrice += parseFloat(optCost[1]);
								}
							}
						}
						for (var i = 0, j = selsToCheck.length; i < j; i++) {
							var optCost = selsToCheck[i].options[selsToCheck[i].selectedIndex].value.match(optExp);
							if (optCost) {
								price += parseFloat(optCost[1]);
								salePrice += parseFloat(optCost[1]);
							}
						}
					
						if (prices["price"]) {
							prices["price"].innerHTML = prices["price"].innerHTML.replace(priceExp, regexPrice(price));
						}
						if (prices["sale-price"]) {
							prices["sale-price"].innerHTML = prices["sale-price"].innerHTML.replace(priceExp, regexPrice(salePrice));
						}
						if (prices["you-save"]) {
							var youSave = price - salePrice;
							var youSavePer = Math.round(youSave / price * 100);
							prices["you-save"].innerHTML = prices["you-save"].innerHTML.replace(priceExp, regexPrice(youSave));
							prices["you-save"].innerHTML = prices["you-save"].innerHTML.replace(/\([\d]+%\)/, "(" + youSavePer + "%)");
						}
					};

					for (var i = 0, j = insToCheck.length; i < j; i++) {
						insToCheck[i].onclick = function() { scRealTimePrice.updatePrices(); };
					}
				
					for (var i = 0, j = selsToCheck.length; i < j; i++) {
						selsToCheck[i].onchange = function() { scRealTimePrice.updatePrices(); };
					}
					
					this.updatePrices();
				}
			}
		}
	}
}();


