// JavaScript Document

window.addEvent("domready",function() {
	for (var prodindex in productdata) {
		var prod=productdata[prodindex];

	for (var p=0;p<prod.ProductType().parameterlist.length;p++) {
			var param=GetParameter(prod.ProductType().parameterlist[p]);
			
			var fieldname=prod.prefix+param.inputname;
			var field=$(fieldname);
			if (field) {
				field.productindex=prodindex;
				field.parameterid=param.parameterid;
			}
		}
	}
	
	$$('.optionselect').each(function(x) {
		x.addEvent("change",UpdateOption);
		x.addEvent("keypress",UpdateOption);
		UpdateOption.bind(x)();
	});
	$$('.optioncheckbox').each(function(x) {
		x.addEvent("click",UpdateOption);
		x.addEvent("keypress",UpdateOption);
		UpdateOption.bind(x)();
	});
});

function FormatCurrency(n) {
	n=vatRound(n);
	n=n.round(2);
	var d1=n-n.round(0);
	var d2=n-n.round(1);
	if (d1==0) n=n+".00";
	else if (d2==0) n=n+"0";
	return "£"+n;
}

function vatRound(n) {
	return Math.round(n*100-0.1)/100;
}

function UpdateOption() {
	var parameterid=this.parameterid;
	var prod=productdata[this.productindex];
	if (GetParameter(parameterid).parametertype=="bool")
		prod.inputOptions[parameterid]=!!this.checked;
	else	
		prod.inputOptions[parameterid]=this.value;
	DisplayProductOptions(prod);
}
function DisplayProductOptions(prod) {
	for (var p=0;p<prod.ProductType().parameterlist.length;p++) {
		var param=GetParameter(prod.ProductType().parameterlist[p]);
		var fieldname=prod.prefix+param.inputname;
		var field=$(fieldname);
		if (field) {
			var value=field.value;
			var opts=prod.GetAvailableOptions(param.parameterid);
			if (param.parametertype=='opt') {
				field.empty();
				
				for (var opt in opts) {
					opt=GetOptionG(opt);
					var el=new Element('option');
					el.value=opt.optionid;
					el.setText(opt.optiondescription);
					el.injectInside(field);
			    }
				field.value=value;
			} else if (param.parametertype=='bool') {
				if (opts[false]!=undefined && opts[true]!=undefined) {
					field.disabled=false;
				} else if (opts[false]!=undefined) {
					field.disabled=true;
					field.checked=false;
				} else {
					field.disabled=true;
					field.checked=true
				}
			}
		}
	}
	if ($('OptComboPriceEx')) $('OptComboPriceEx').setText(FormatCurrency(prod.price()));
	if ($('OptComboPriceInc')) $('OptComboPriceInc').setText(FormatCurrency(prod.price()*vatrate));

}

