var productMenus = {"heightMenu":null, "widthMenu":null, "colorMenu":null};
var productData = {};
var currentChoices = {"height":0, "width":0, "color":0};
var selectedProductId = 0;
var selectedProductColor = '';
var selectedProductPrice = 0;
var totalPrice = 0;
function setupMenus() {
	for (var i in productMenus) {
		productMenus[i] = document.getElementById(i);
	}
	var myAjax = new TOOLSCONTEXT_Ajax();
	var textResult = myAjax.sendParams('../../local/public/getproducts.php', 'Id='+thisContentId, 'text', false);
	if (textResult.indexOf('{') != 0) {
		// problem loading data
		alert('Could not load product data!');
		return false;
	} else {
		productData = eval("(" + textResult + ")");
	}
	
	setMenuOptions(productMenus.heightMenu, productData.heights);
}

function setMenuOptions(el, newOptions) {
	if (el.selectedIndex > -1) {
		var opt = el.options[el.selectedIndex];
		var savedValue = opt.value;
		var savedText = opt.text;
		if (opt.parentNode) {
			var savedParent = opt.parentNode.label;
		}
	}
	el.options.length = 0;
	el.innerHTML = '';
	var newIndex = 0;
	if (el.id == 'colorMenu') {
		var i = 0;
		for (var key in newOptions) {
			if ('undefined' == typeof productData.colorchoices[newOptions[key]]) {
				// not a color group
				var objOption = document.createElement("option");
				objOption.innerHTML = ucfirst(newOptions[key]);
				objOption.value = key + ':::';
				el.appendChild(objOption);
			} else {
				var objOptgroup = document.createElement("optgroup");
				objOptgroup.label = ucfirst(newOptions[key]) + ' Colors';
				
				var colorchoices = productData.colorchoices[newOptions[key]];
				for (var j=0; j<colorchoices.length; j++) {
					var objOption = document.createElement("option");
					objOption.innerHTML = colorchoices[j];
					objOption.value = key + ':::' + colorchoices[j];
					objOptgroup.appendChild(objOption);
					if ((objOptgroup.label == savedParent) && (colorchoices[j] == savedText)) {
						newIndex = i;
					}
					i++;
				}
				
				el.appendChild(objOptgroup);
			}
		}
	} else {
		for (var i=0; i<newOptions.length; i++) {
			el.options[i] = new Option(newOptions[i], newOptions[i]);
			if (newOptions[i] == savedValue) newIndex = i;
		}
	}
	el.selectedIndex = newIndex;
	cascadeChanges(el);
}

function cascadeChanges(el) {
	var choice = el.id.replace('Menu', '');
	currentChoices[choice] = el.options[el.selectedIndex].value;
	eval('cascade' + ucfirst(el.id) + '(el);');
}

function cascadeHeightMenu(el) {
	setMenuOptions(productMenus.widthMenu, array_keys(productData.widths[currentChoices.height]));
}

function cascadeWidthMenu(el) {
	setMenuOptions(productMenus.colorMenu, productData.widths[currentChoices.height][currentChoices.width]);
}

function cascadeColorMenu(el) {
	var temp = currentChoices.color.split(':::', 2);
	selectedProductId = temp[0];
	selectedProductColor = temp[1];
	updateProductInfo();
}

function updateProductInfo() {
	var product = productData.products[selectedProductId];
	selectedProductPrice = product.Price;
	
	var el = document.getElementById('productPrice');
	el.innerHTML = product.Price;
	
	var el = document.getElementById('productAvailability');
	el.innerHTML = product.Availability;
	
	var el = document.getElementById('productCode');
	el.innerHTML = product.ProductCode;
	
	var el = document.getElementById('productInputId');
	el.value = product.ProductId;
	
	var el = document.getElementById('productInputOption');
	el.value = selectedProductColor;
	
	updateTotalPrice();
}

function updateTotalPrice() {
	if ('undefined' == typeof productQuantity) productQuantity = document.getElementById('productQuantity');
	totalPrice = productQuantity.value * selectedProductPrice;
	if (isNaN(totalPrice)) totalPrice = 0;
	totalPrice = totalPrice.toFixed(2);
	var el = document.getElementById('totalPrice');
	el.innerHTML = totalPrice;
}

function checkProductSubmit() {
	if (totalPrice > 0) {
		return true;
	} else {
		alert('Please specify a valid quantity.');
		return false;
	}
}

function formSubmit() {
	if (checkProductSubmit()) {
		document.forms['productForm'].submit();
	}
}

function ucfirst(str) {
	return str.substring(0,1).toUpperCase() + str.substring(1);
}
function array_keys(obj) {
	var keys = [];
	for (var key in obj) {
		keys.push(key);
	}
	return keys;
}
