﻿var providerurl = "/Cms_Files/plugins/shop/boernekunst2/AjaxHandler.ashx";

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g, "");
}

// Fires when selecting format
function VariantFormatChanged(obj) {
	var o = RLdesign.Utils.DefineObject(obj);
	var ohidVariant1 = RLdesign.Utils.DefineObject(hidSelectedVariant1ID);
	if (o.selectedIndex <= 0) {
		var o2 = RLdesign.Utils.DefineObject(ddlSizeID);
		o2.selectedIndex = 0;
		o2.disabled = true;
		o2.onchange();
		ohidVariant1.value = "";
		o = o2 = ohidVariant1 = null;
		FindAllProducts();
		return;
	}
	
	var id = o.options[o.selectedIndex].value;
	ohidVariant1.value = id;
	CheckProduct();
	
	FindSizeVariants(id);
	//FindProducts(id);
	
	o = ohidVariant1 = null;
}

// Fetches valid size variants related to the format variant
function FindSizeVariants(id) {
	var Params = new Object();
	Params["job"] = "getvariantsbyprimaryid";
	Params["id"] = id;
	var oPassalong = new Array();
	var Ajax = new RLdesign.Xml.GenericRemoteProvider(providerurl);
	Ajax.OpenConnection(FillSizeVariants, Params, oPassalong);
}

// Fetches valid size variants from the products variants
function FindSizeVariantsByProduct(id) {
	var Params = new Object();
	Params["job"] = "getvariantsbyproductandgroupid";
	Params["id"] = id;
	Params["groupid"] = 4;

	var oPassalong = new Array();
	if (arguments.length > 1) {
		oPassalong[0] = arguments[1];
	}
	if (arguments.length > 2) {
		oPassalong[1] = arguments[2];
	}

	var Ajax = new RLdesign.Xml.GenericRemoteProvider(providerurl);
	Ajax.OpenConnection(FillSizeVariants, Params, oPassalong);
}

// Fills size variants in dropdown
function FillSizeVariants(JSON, oPassalong) {
	var o = RLdesign.Utils.DefineObject(ddlSizeID);
	var firstoption = o.options[0].text;
	
	o.length = JSON.length;
	o[0] = new Option(firstoption, "null");

	for (var i = 0; i < JSON.length; i++) {
		o[(i+1)] = new Option(JSON[i][1], JSON[i][0]);
	}

	o.disabled = (JSON.length == 0);

	if (JSON.length == 1) {
		o.selectedIndex = 1;
	}
	else if (oPassalong.length > 0) {
		for (var i = 0; i < o.options.length; i++) {
			if (o.options[i].value == oPassalong[0].toString()) {
				o.selectedIndex = i;
				break;
			}
		}
	}
	else {
		o.selectedIndex = 0;
	}

	if (oPassalong.length < 2 || oPassalong[1] == true) {
		o.onchange();
	}
	
	o = null;
}

// Fires when selecting size
function VariantSizeChanged(obj) {
	var o = RLdesign.Utils.DefineObject(obj);
	var o2 = RLdesign.Utils.DefineObject(ddlFrameID);
	var oVariant1 = RLdesign.Utils.DefineObject(spanSelectedVariant1ID);
	var ohidVariant2 = RLdesign.Utils.DefineObject(hidSelectedVariant2ID);

	if (o.selectedIndex <= 0) {
		o2.selectedIndex = 0;
		o2.disabled = true;
		o2.onchange();
		oVariant1.innerHTML = "Mangler";
		oVariant1.className = "missing";
		ohidVariant2.value = "";
		var o3 = RLdesign.Utils.DefineObject(ddlFormatID);
		FindProducts(o3.options[o3.selectedIndex].value);
		o3 = null;
	}
	else {
		o2.disabled = false;
		if (SelectedProduct != null && SelectedProduct.id != null) {
			oVariant1.innerHTML = o.options[o.selectedIndex].text;
			oVariant1.className = "";
			ohidVariant2.value = o.options[o.selectedIndex].value;
			if (o2.selectedIndex > 0) {
				var o2id = o2.options[o2.selectedIndex].value;
				FindFrameVariantsByProduct(SelectedProduct.id, o2id);
			}
			else {
				FindFrameVariantsByProduct(SelectedProduct.id);
			}
		}
		else {
			FindFrameVariants();
		}
		var oFormat = RLdesign.Utils.DefineObject(ddlFormatID);
		FindProductsByFormatAndSize(oFormat.options[oFormat.selectedIndex].value, o.options[o.selectedIndex].value);
		oFormat = null;
	}
	CheckProduct();
	HandlePrice();
	
	o = o2 = oVariant1 = ohidVariant2 = null;
}

// Changes the size of the frame according to the image size
function ChangeFrameSize() {
	var oSize = RLdesign.Utils.DefineObject(ddlSizeID);
	var oFrame = RLdesign.Utils.DefineObject(divFrameID);
	var oImg = RLdesign.Utils.DefineObject(imgProductImageID);

	if (oImg.defaultValue == null || oImg.defaultValue == "") {
		oImg.defaultValue = oImg.src;
	}

	var index = (oSize.selectedIndex != -1) ? oSize.selectedIndex : 0;
	var framethickness = 2; // cm
	var thickness = new Object();
	thickness["v"] = 0;
	thickness["h"] = 0;
	if (index > 0) {
		var sSize = oSize.options[index].text;
		sSize = sSize.trim().replace(" cm", "");
		var size = new Object();
		size["width"] = sSize.substring(0, sSize.indexOf("x"));
		if (size["width"].indexOf(" ") > -1) size["width"] = size["width"].substring(size["width"].indexOf(" ") + 1);
		size["height"] = sSize.substring(sSize.indexOf("x") + 1);
		var padding = RLdesign.Utils.GetPaddings(oImg);
		var margin = RLdesign.Utils.GetMargins(oImg);
		var borders = RLdesign.Utils.GetBorderWidths(oImg);
		var w = oImg.offsetWidth - (padding["left"] + padding["right"] + margin["left"] + margin["right"] + borders["left"] + borders["right"]);
		var h = oImg.offsetHeight - (padding["top"] + padding["bottom"] + margin["top"] + margin["bottom"] + borders["top"] + borders["bottom"]);

		var wprop = w / size["width"];
		var hprop = h / size["height"];

		thickness["h"] = wprop * framethickness;
		thickness["v"] = hprop * framethickness;
	}

	
	if (oImg.src == oImg.defaultValue) {
		thickness["v"] = 0;
		thickness["h"] = 0;
	}
	oImg.style.borderTopWidth = Math.round(thickness["v"]) + "px";
	oImg.style.borderBottomWidth = Math.round(thickness["v"]) + "px";
	oImg.style.borderLeftWidth = Math.round(thickness["h"]) + "px";
	oImg.style.borderRightWidth = Math.round(thickness["h"]) + "px";

	oSize = oFrame = oImg = null;
}


// Fetches all frame variants
function FindFrameVariants() {
	var Params = new Object();
	Params["job"] = "getframevariants";
	var oPassalong = new Array();
	var Ajax = new RLdesign.Xml.GenericRemoteProvider(providerurl);
	Ajax.OpenConnection(FillFrameVariants, Params, oPassalong);
}

// Fetches valid frame variants from the products variants
function FindFrameVariantsByProduct(id) {
	var Params = new Object();
	Params["job"] = "getvariantsbyproductandgroupid";
	Params["id"] = id;
	Params["groupid"] = 5;

	var oPassalong = new Array();
	if (arguments.length > 1) {
		oPassalong[0] = arguments[1];
	}

	var Ajax = new RLdesign.Xml.GenericRemoteProvider(providerurl);
	Ajax.OpenConnection(FillFrameVariants, Params, oPassalong);
}

// Fills size variants in dropdown
function FillFrameVariants(JSON, oPassalong) {
	var o = RLdesign.Utils.DefineObject(ddlFrameID);
	var firstoption = o.options[0].text;

	o.length = JSON.length;
	o[0] = new Option(firstoption, "null");

	for (var i = 0; i < JSON.length; i++) {
		o[(i + 1)] = new Option(JSON[i][1], JSON[i][0]);
	}

	o.disabled = (JSON.length == 0);

	if (JSON.length == 1) {
		o.selectedIndex = 1;
	}
	else if (oPassalong.length == 1) {
		for (var i = 0; i < o.options.length; i++) {
			if (o.options[i].value == oPassalong[0]) {
				o.selectedIndex = i;
				break;
			}
		}
	}
	else {
		o.selectedIndex = 0;
	}

	o.onchange();

	o = null;
}


// Fires when selecting frame
function VariantFrameChanged(obj) {
	var o = RLdesign.Utils.DefineObject(obj);
	var o2 = RLdesign.Utils.DefineObject(ddlDeliveryID);
	var oVariant3 = RLdesign.Utils.DefineObject(spanSelectedVariant3ID);
	var ohidVariant3 = RLdesign.Utils.DefineObject(hidSelectedVariant3ID);
	
	if (o.selectedIndex <= 0) {
		o2.disabled = true;
		o2.selectedIndex = 0;
		oVariant3.innerHTML = "Mangler";
		oVariant3.className = "missing";
		ohidVariant3.value = "";
	}
	else {
		o2.disabled = false;
		var oFrame = RLdesign.Utils.DefineObject(divFrameID);
		var css = oFrame.className;
		if (css.indexOf("color") > -1) {
			var parts = css.split(" ");
			css = "";
			for (var i = 0; i < parts.length; i++) {
				if (parts[i].indexOf("color") > -1) {
					continue;
				}
				css += parts[i] + " ";
			}
		}
		css = trim(css);
		
		var color = " color";
	
		if (o.options[o.selectedIndex].text.toLowerCase().indexOf("sort blank") > -1) {
			color = " color_blackshine";
		}
		else if (o.options[o.selectedIndex].text.toLowerCase().indexOf("hvid blank") > -1) {
			color = " color_whiteshine";
		}
		else if (o.options[o.selectedIndex].text.toLowerCase().indexOf("rød ferrari blank") > -1) {
			color = " color_redferrarishine";
		}
		else if (o.options[o.selectedIndex].text.toLowerCase().indexOf("lime grøn blank") > -1) {
			color = " color_limegreenshine";
		}
		else if (o.options[o.selectedIndex].text.toLowerCase().indexOf("gul blank") > -1) {
			color = " color_yellowshine";
		}
		else if (o.options[o.selectedIndex].text.toLowerCase().indexOf("mørkeblå blank") > -1) {
			color = " color_darkblueshine";
		}
		else if (o.options[o.selectedIndex].text.toLowerCase().indexOf("orange blank") > -1) {
			color = " color_orangeshine";
		}
		else if (o.options[o.selectedIndex].text.toLowerCase().indexOf("sølv") > -1) {
			color = " color_gray";
		}
		else if (o.options[o.selectedIndex].text.toLowerCase().indexOf("sort") > -1) {
			color = " color_black";
		}
		css += color;
		oFrame.className = css;
		oFrame = null;
		
		if (SelectedProduct != null && SelectedProduct.id != null) {
			oVariant3.innerHTML = o.options[o.selectedIndex].text;
			oVariant3.className = "";
			ohidVariant3.value = o.options[o.selectedIndex].value;
		}
	}
	ChangeFrameSize();
	CheckProduct();
	HandlePrice();
	
	o = o2 = oVariant3 = ohidVariant3 = null;
}

// Fires when selecting delivery method
function SelectedDeliveryChanged(obj) {
	var o = RLdesign.Utils.DefineObject(obj);
	var oDelivery = RLdesign.Utils.DefineObject(spanSelectedDeliveryID);
	var ohidDelivery = RLdesign.Utils.DefineObject(hidSelectedDeliveryID);

	if (o.selectedIndex > 0 && SelectedProduct != null && SelectedProduct.id != null) {
		oDelivery.innerHTML = o.options[o.selectedIndex].text;
		oDelivery.className = "";
		ohidDelivery.value = o.options[o.selectedIndex].value;
	}
	else {
		oDelivery.innerHTML = "Mangler";
		oDelivery.className = "missing";
		ohidDelivery.value = "";
	}
	HandlePrice();
	TestEverythingSelected();
	o = oDelivery = ohidDelivery = null;
}



function FindAllProducts() {
	var objLoader = RLdesign.Utils.DefineObject(divProductListLoaderID);
	var objList = RLdesign.Utils.DefineObject(divProductListID);
	RLdesign.Utils.ToggleVisibility(objList, "hidden");
	RLdesign.Utils.SetDisplay(objLoader, "block");
	objList = objLoader = null;
	var Params = new Object();
	Params["job"] = "getallproducts";
	var Ajax = new RLdesign.Xml.GenericRemoteProvider(providerurl);
	Ajax.OpenConnection(FillProducts, Params);
}


function FindProductsByFormatAndSize(format, size) {
	var objLoader = RLdesign.Utils.DefineObject(divProductListLoaderID);
	var objList = RLdesign.Utils.DefineObject(divProductListID);
	RLdesign.Utils.ToggleVisibility(objList, "hidden");
	RLdesign.Utils.SetDisplay(objLoader, "block");
	objList = objLoader = null;
	var Params = new Object();
	Params["job"] = "getproductsbyformatandsize";
	Params["formatid"] = format;
	Params["sizeid"] = size;
	var Ajax = new RLdesign.Xml.GenericRemoteProvider(providerurl);
	Ajax.OpenConnection(FillProducts, Params);
}
function FindProducts(id) {
	var objLoader = RLdesign.Utils.DefineObject(divProductListLoaderID);
	var objList = RLdesign.Utils.DefineObject(divProductListID);
	RLdesign.Utils.ToggleVisibility(objList, "hidden");
	RLdesign.Utils.SetDisplay(objLoader, "block");
	objList = objLoader = null;
	var Params = new Object();
	Params["job"] = "getproductsbyvariantid";
	Params["id"] = id;
	var Ajax = new RLdesign.Xml.GenericRemoteProvider(providerurl);
	Ajax.OpenConnection(FillProducts, Params);
}

function FillProducts(JSON) {
	var obj = RLdesign.Utils.DefineObject(divProductListID);
	var objLoader = RLdesign.Utils.DefineObject(divProductListLoaderID);
	RLdesign.Utils.ToggleVisibility(obj, "visible");
	RLdesign.Utils.SetDisplay(objLoader, "none");
	
	RLdesign.Utils.ClearChildElements(obj);
	
	for (var i = 0; i < JSON.length; i++) {
		var oParams = new Object();
		var cssclass = "productitem";
		if ((i + 1) % 4 == 0 && i != 0) cssclass += " last";
		oParams["class"] = cssclass;
		var div = RLdesign.Utils.MakeElement("div", oParams);
		oParams = new Object();
		oParams["cellpadding"] = "0";
		oParams["cellspacing"] = "0";
		var table = RLdesign.Utils.MakeElement("table", oParams);
		var tbody = RLdesign.Utils.MakeElement("tbody");
		var tr = RLdesign.Utils.MakeElement("tr");
		var td = RLdesign.Utils.MakeElement("td");
		oParams = new Object();
		oParams["href"] = JSON[i][2];
		oParams["title"] = JSON[i][1];
		oParams["rel"] = JSON[i][0];
		oParams["onclick"] = "SelectProduct(this); return false;";
		var a = RLdesign.Utils.MakeElement("a", oParams);
		oParams = new Object();
		oParams["src"] = JSON[i][3];
		oParams["alt"] = "";
		var img = RLdesign.Utils.MakeElement("img", oParams);
		a.appendChild(img);
		td.appendChild(a);
		tr.appendChild(td);
		tbody.appendChild(tr);
		table.appendChild(tbody);
		div.appendChild(table);
		obj.appendChild(div);
		td.innerHTML = td.innerHTML; // fucked up IE quickfix for missing onclick event - DO NOT DELETE!!!!
		//div = table = tbody = tr = td = img = a = null;
	}

//	var links = obj.getElementsByTagName("a");
//	for (var i = 0; i < links.length; i++) {
//		var a = links[i];
//		a.onclick = "alert(this); return false;";
//	}

	obj = objLoader = null;
}

// Fires when selecting product
function SelectProduct(obj) {
	var o = RLdesign.Utils.DefineObject(obj);
	
	var Params = new Object();
	Params["job"] = "getproductbyid";
	Params["id"] = o.rel;
	var Ajax = new RLdesign.Xml.GenericRemoteProvider(providerurl);
	Ajax.OpenConnection(SelectProductResponse, Params);
	
	o = null;
}

function SelectProductResponse(JSON) {
	if (JSON === false) {
		return;
	}
	SelectedProduct = new Object();
	SelectedProduct.id = JSON[0];
	SelectedProduct.variantMatrix = new Array();
	for (var i = 0; i < JSON[4].length; i++){
		SelectedProduct.variantMatrix[i] = new Object();
		SelectedProduct.variantMatrix[i].id = JSON[4][i][0];
		SelectedProduct.variantMatrix[i].variants = JSON[4][i][1];
		SelectedProduct.variantMatrix[i].productprice = JSON[4][i][2];
		SelectedProduct.variantMatrix[i].discountprice = JSON[4][i][3];
		SelectedProduct.variantMatrix[i].shippingprice = JSON[4][i][4];
		SelectedProduct.variantMatrix[i].pickupprice = JSON[4][i][5];
		SelectedProduct.variantMatrix[i].totalshipprice = JSON[4][i][6];
		SelectedProduct.variantMatrix[i].totalpickprice = JSON[4][i][7];
	}


	var oImg = RLdesign.Utils.DefineObject(imgProductImageID);
	if (oImg.defaultValue == null || oImg.defaultValue == "") {
		oImg.defaultValue = oImg.src;
	}
	oImg.src = JSON[3];
	//RLdesign.Utils.SetDisplay(oImg, "inline");
	oImg = null;
	var oSpan = RLdesign.Utils.DefineObject(spanSelectedProductNameID);
	if (oSpan.defaultValue == null || oSpan.defaultValue == "") {
		oSpan.defaultValue = oSpan.innerHTML;
	}
	oSpan.innerHTML = JSON[1];
	oSpan = null;

	var oProductID = RLdesign.Utils.DefineObject(hidSelectedProductID);
	oProductID.value = JSON[0];

	var oFormatDdl = RLdesign.Utils.DefineObject(ddlFormatID);
	var oSizeDdl = RLdesign.Utils.DefineObject(ddlSizeID);
	var oFrameDdl = RLdesign.Utils.DefineObject(ddlFrameID);
	var oDeliveryDdl = RLdesign.Utils.DefineObject(ddlDeliveryID);

	var ohidVariant1 = RLdesign.Utils.DefineObject(hidSelectedVariant1ID);
	var ohidVariant2 = RLdesign.Utils.DefineObject(hidSelectedVariant2ID);
	var ohidVariant3 = RLdesign.Utils.DefineObject(hidSelectedVariant3ID);
	var ohidDelivery = RLdesign.Utils.DefineObject(hidSelectedDeliveryID);
	var ohidMediaID = RLdesign.Utils.DefineObject(hidSelectedVariant4ID);

	var oVariant1 = RLdesign.Utils.DefineObject(spanSelectedVariant1ID);
	var oVariant2 = RLdesign.Utils.DefineObject(spanSelectedVariant2ID);
	var oVariant3 = RLdesign.Utils.DefineObject(spanSelectedVariant3ID);
	var oDelivery = RLdesign.Utils.DefineObject(spanSelectedDeliveryID);

	if (oVariant1.defaultValue == null || oVariant1.defaultValue == "") {
		oVariant1.defaultValue = oVariant1.innerHTML;
	}
	if (oVariant2.defaultValue == null || oVariant2.defaultValue == "") {
		oVariant2.defaultValue = oVariant2.innerHTML;
	}
	if (oVariant3.defaultValue == null || oVariant3.defaultValue == "") {
		oVariant3.defaultValue = oVariant3.innerHTML;
	}
	if (oDelivery.defaultValue == null || oDelivery.defaultValue == "") {
		oDelivery.defaultValue = oDelivery.innerHTML;
	}

	if (oFormatDdl.selectedIndex > 0) {
		ohidVariant1.value = oFormatDdl.options[oFormatDdl.selectedIndex].value;
	}
	else {
		ohidVariant1.value = "";
	}

	if (oSizeDdl.selectedIndex > 0) {
		oVariant1.innerHTML = oSizeDdl.options[oSizeDdl.selectedIndex].text;
		oVariant1.className = "";
		ohidVariant2.value = oSizeDdl.options[oSizeDdl.selectedIndex].value;
	}
	else {
		oVariant1.innerHTML = "Mangler";
		oVariant1.className = "missing";
		ohidVariant2.value = "";
	}


	var medianame = "";
	var mediaid = "";

	var trace = "";

	for (var i = 0; i < SelectedProduct.variantMatrix.length; i++) {
		trace += "[";
		for (var y = 0; y < SelectedProduct.variantMatrix[i].variants.length; y++) {
			trace += "[";
			trace += SelectedProduct.variantMatrix[i].variants[y][0];
			trace += ",";
			trace += SelectedProduct.variantMatrix[i].variants[y][1];
			trace += ",";
			trace += SelectedProduct.variantMatrix[i].variants[y][2];
			trace += "],";
		}
		trace += "],";
	}

	for (var i = 0; i < SelectedProduct.variantMatrix.length; i++) {
		for (var y = 0; y < SelectedProduct.variantMatrix[i].variants.length; y++) {
			if (SelectedProduct.variantMatrix[i].variants[y][2] == 6) {
				medianame = SelectedProduct.variantMatrix[i].variants[y][1];
				mediaid = SelectedProduct.variantMatrix[i].variants[y][0];
				break;
			}
		}
	}

	if (medianame != "") {
		oVariant2.innerHTML = medianame;
		oVariant2.className = "";
		ohidMediaID.value = mediaid;
	}
	else {
		oVariant2.innerHTML = "Mangler";
		oVariant2.className = "missing";
		ohidMediaID.value = "";
	}


	
	for (var i = 0; i < SelectedProduct.variantMatrix.length; i++) {
		for (var y = 0; y < SelectedProduct.variantMatrix[i].variants.length; y++) {
			for (var f = 0; f < oFormatDdl.options.length; f++) {
				if (oFormatDdl.options[f].value.toLowerCase() == "null") continue;
				if (SelectedProduct.variantMatrix[i].variants[y][0] == (oFormatDdl.options[f].value * 1) && oFormatDdl.selectedIndex != f) {
					oFormatDdl.selectedIndex = f;
					//oFormatDdl.onchange();
					break;
				}
			}
		}
	}
	
	if (oFrameDdl.selectedIndex > 0) {
		oVariant3.innerHTML = oFrameDdl.options[oFrameDdl.selectedIndex].text;
		oVariant3.className = "";
		ohidVariant3.value = oFrameDdl.options[oFrameDdl.selectedIndex].value;
	}
	else {
		oVariant3.innerHTML = "Mangler";
		oVariant3.className = "missing";
		ohidVariant3.value = "";
	}

	if (oDeliveryDdl.selectedIndex > 0) {
		oDelivery.innerHTML = oDeliveryDdl.options[oDeliveryDdl.selectedIndex].text;
		oDelivery.className = "";
		ohidDelivery.value = oDeliveryDdl.options[oDeliveryDdl.selectedIndex].value;
	}
	else {
		oDelivery.innerHTML = "Mangler";
		oDelivery.className = "missing";
		ohidDelivery.value = "";
	}

	var selectedsizeid = (oSizeDdl.selectedIndex > 0) ? oSizeDdl.options[oSizeDdl.selectedIndex].value : -1;
	var selectedframeid = (oFrameDdl.selectedIndex > 0) ? oFrameDdl.options[oFrameDdl.selectedIndex].value : -1;

	if (selectedsizeid != -1) {
		FindSizeVariantsByProduct(SelectedProduct.id, selectedsizeid, false);
	}
	else {
		FindSizeVariantsByProduct(SelectedProduct.id);
	}

	if (selectedframeid != -1) {
		FindFrameVariantsByProduct(SelectedProduct.id, selectedframeid);
	}
	else {
		FindFrameVariantsByProduct(SelectedProduct.id);
	}

	TestEverythingSelected();

	HandlePrice();
	
	var loc = location.href.toString();
	if (loc.indexOf("#") > -1) loc = loc.substring(0, loc.indexOf("#"));
	location.href = loc + "#produkt";

	oVariant1 = oVariant2 = oVariant3 = oDelivery = oDeliveryDdl = oFormatDdl = oFrameDdl = oSizeDdl = ohidVariant1 = ohidVariant3 = ohidDelivery = oProductID = ohidMediaID = null;
}



function CheckProduct() {
	var oFormatDdl = RLdesign.Utils.DefineObject(ddlFormatID);
	var oSizeDdl = RLdesign.Utils.DefineObject(ddlSizeID);
	var oFrameDdl = RLdesign.Utils.DefineObject(ddlFrameID);
	var ohidMediaID = RLdesign.Utils.DefineObject(hidSelectedVariant4ID);

	var trace = "";
	var isvalid = false;
	if (oFormatDdl.selectedIndex > 0) {
		isvalid = TestProductVariant(oFormatDdl.options[oFormatDdl.selectedIndex].value);
	}
	if (isvalid && oSizeDdl.selectedIndex > 0) {
		isvalid = TestProductVariant(oSizeDdl.options[oSizeDdl.selectedIndex].value);
	}
	if (isvalid && oFrameDdl.selectedIndex > 0) {
		isvalid = TestProductVariant(oFrameDdl.options[oFrameDdl.selectedIndex].value);
	}
	if (isvalid && ohidMediaID.value != "") {
		isvalid = TestProductVariant(ohidMediaID.value);
	}

	trace += "oFormatDdl: " + oFormatDdl.options[oFormatDdl.selectedIndex].value + "\r\n";
	trace += "oSizeDdl: " + oSizeDdl.options[oSizeDdl.selectedIndex].value + "\r\n";
	trace += "oFrameDdl: " + oFrameDdl.options[oFrameDdl.selectedIndex].value + "\r\n";
	trace += "ohidMediaID: " + ohidMediaID.value + "\r\n";
	if (SelectedProduct != null) {
		trace += "SelectedProduct: " + SelectedProduct.id + "\r\n";
	}

	//alert(trace);
	
	if (!isvalid &&  SelectedProduct != null && SelectedProduct.id != null && SelectedProduct.id != -1) {
		SelectedProduct = new Object();
		var oImg = RLdesign.Utils.DefineObject(imgProductImageID);
		oImg.src = oImg.defaultValue;
		
		var oFrame = RLdesign.Utils.DefineObject(divFrameID);
		var css = oFrame.className;
		if (css.indexOf("color") > -1) {
			var parts = css.split(" ");
			css = "";
			for (var i = 0; i < parts.length; i++) {
				if (parts[i].indexOf("color") > -1) {
					continue;
				}
				css += parts[i] + " ";
			}
		}
		css = trim(css);

		var color = " color";

		css += color;
		oFrame.className = css;
		oFrame = null;

		//RLdesign.Utils.SetDisplay(imgProductImageID, "none");
		var oSpan = RLdesign.Utils.DefineObject(spanSelectedProductNameID);
		var oVariant1 = RLdesign.Utils.DefineObject(spanSelectedVariant1ID);
		var oVariant2 = RLdesign.Utils.DefineObject(spanSelectedVariant2ID);
		var oVariant3 = RLdesign.Utils.DefineObject(spanSelectedVariant3ID);
		var oDelivery = RLdesign.Utils.DefineObject(spanSelectedDeliveryID);

		var oProductPrice = RLdesign.Utils.DefineObject(spanProductPriceID);
		var oDiscountPrice = RLdesign.Utils.DefineObject(spanDiscountPriceID);
		var oShippingPrice = RLdesign.Utils.DefineObject(spanShippingPriceID);
		var oTotalPrice = RLdesign.Utils.DefineObject(spanTotalPriceID);
	
		var ohidProductID = RLdesign.Utils.DefineObject(hidSelectedProductID);
		var ohidVariantID = RLdesign.Utils.DefineObject(hidSelectedVariantID);
		var ohidVariant1 = RLdesign.Utils.DefineObject(hidSelectedVariant1ID);
		var ohidVariant2 = RLdesign.Utils.DefineObject(hidSelectedVariant2ID);
		var ohidVariant3 = RLdesign.Utils.DefineObject(hidSelectedVariant3ID);
		var ohidDelivery = RLdesign.Utils.DefineObject(hidSelectedDeliveryID);

		oSpan.innerHTML = oSpan.defaultValue;
		oVariant1.innerHTML = oVariant1.defaultValue;
		oVariant1.className = "missing";
		oVariant2.innerHTML = oVariant2.defaultValue;
		oVariant2.className = "missing";
		oVariant3.innerHTML = oVariant3.defaultValue;
		oVariant3.className = "missing";
		oDelivery.innerHTML = oDelivery.defaultValue;
		oDelivery.className = "missing";
		oProductPrice.innerHTML = oProductPrice.defaultValue;
		oProductPrice.className = "missing";
		oDiscountPrice.innerHTML = oDiscountPrice.defaultValue;
		oDiscountPrice.className = "missing";
		oShippingPrice.innerHTML = oShippingPrice.defaultValue;
		oShippingPrice.className = "missing";
		oTotalPrice.innerHTML = oTotalPrice.defaultValue;
		oTotalPrice.className = "missing";
		RLdesign.Utils.SetDisplay(btnBuyProductID, "none");
		ohidProductID.value = "";
		ohidVariantID.value = "";
		ohidVariant1.value = "";
		ohidVariant2.value = "";
		ohidVariant3.value = "";
		ohidDelivery.value = "";

		oImg = oSpan = oVariant1 = oVariant2 = oVariant3 = oDelivery = ohidDelivery = ohidVariant1 = ohidVariant2 = ohidVariant3 = ohidMediaID = ohidProductID = ohidVariantID = oProductPrice = oDiscountPrice = oShippingPrice = oTotalPrice = null;
	}
	TestEverythingSelected();

	oFormatDdl = oSizeDdl = oFrameDdl = ohidMediaID = null;
}


function TestProductVariant(id) {
	var iId = id;
	if (typeof(iId) == "string") {
		iId = id * 1;
	}
	if (SelectedProduct != null && SelectedProduct.id != null && SelectedProduct.id != -1) {
		for (var i = 0; i < SelectedProduct.variantMatrix.length; i++) {
			for (var y = 0; y < SelectedProduct.variantMatrix[i].variants.length; y++) {
				if (SelectedProduct.variantMatrix[i].variants[y][0] == iId) {
					return true;
				}
			}
		}
	}
	return false;
}


function TestEverythingSelected() {
	var oFormatDdl = RLdesign.Utils.DefineObject(ddlFormatID);
	var oSizeDdl = RLdesign.Utils.DefineObject(ddlSizeID);
	var oFrameDdl = RLdesign.Utils.DefineObject(ddlFrameID);
	var oDeliveryDdl = RLdesign.Utils.DefineObject(ddlDeliveryID);
	var ohidMediaID = RLdesign.Utils.DefineObject(hidSelectedVariant4ID);
	
	var test1 = false;
	var test2 = false;
	var test3 = false;
	var test4 = false;
	var test5 = false;
	
	if (oFormatDdl.selectedIndex > 0) {
		test1 = true;
	}
	if (oSizeDdl.selectedIndex > 0) {
		test2 = true;
	}
	if (oFrameDdl.selectedIndex > 0) {
		test3 = true;
	}
	if (oDeliveryDdl.selectedIndex > 0) {
		test4 = true;
	}
	if (ohidMediaID.value != "") {
		test5 = true;
	}
	if (SelectedProduct != null && SelectedProduct.id != null && test1 && test2 && test3 && test4 && test5) {
		RLdesign.Utils.SetDisplay(btnBuyProductID, "block");
	}
	else {
		RLdesign.Utils.SetDisplay(btnBuyProductID, "none");
	}

	oFormatDdl = oSizeDdl = oFrameDdl = oDeliveryDdl = ohidMediaID = null;
}



function SubmitOrder(e) {
	if (SelectedProduct == null || SelectedProduct.id == null || SelectedProduct.id == -1) {
		return RLdesign.Utils.DefineReturnCode(e, false);
	}

	var oFormatDdl = RLdesign.Utils.DefineObject(ddlFormatID);
	var oSizeDdl = RLdesign.Utils.DefineObject(ddlSizeID);
	var oFrameDdl = RLdesign.Utils.DefineObject(ddlFrameID);
	var oDeliveryDdl = RLdesign.Utils.DefineObject(ddlDeliveryID);

	var ohidProductID = RLdesign.Utils.DefineObject(hidSelectedProductID);
	var ohidVariantID = RLdesign.Utils.DefineObject(hidSelectedVariantID);
//	var ohidFormatID = RLdesign.Utils.DefineObject(hidSelectedVariant1ID);
//	var ohidSizeID = RLdesign.Utils.DefineObject(hidSelectedVariant2ID);
//	var ohidFrameID = RLdesign.Utils.DefineObject(hidSelectedVariant3ID);
//	var ohidDelivery = RLdesign.Utils.DefineObject(hidSelectedDeliveryID);
	var ohidMediaID = RLdesign.Utils.DefineObject(hidSelectedVariant4ID);

	var ProductID = ohidProductID.value;
	var MediaID = ohidMediaID.value;
	var FormatID = oFormatDdl.options[oFormatDdl.selectedIndex].value;
	var SizeID = oSizeDdl.options[oSizeDdl.selectedIndex].value;
	var FrameID = oFrameDdl.options[oFrameDdl.selectedIndex].value;
	var DeliveryID = oDeliveryDdl.options[oDeliveryDdl.selectedIndex].value;

//	alert("ohidProductID: " + ohidProductID.value + "\r\nohidFormatID: " + FormatID + "\r\nohidSizeID: " + SizeID + "\r\nohidFrameID: " + FrameID + "\r\nohidMediaID: " + MediaID + "\r\nohidDelivery: " + DeliveryID);


	var variantid = -1;
	
	for (var i = 0; i < SelectedProduct.variantMatrix.length; i++) {
		var bFoundFormat = false;
		var bFoundSize = false;
		var bFoundFrame = false;
		var bFoundMedia = false;
		
		for (var y = 0; y < SelectedProduct.variantMatrix[i].variants.length; y++) {
			if (SelectedProduct.variantMatrix[i].variants[y][0] == FormatID) {
				bFoundFormat = true;
			}
			if (SelectedProduct.variantMatrix[i].variants[y][0] == SizeID) {
				bFoundSize = true;
			}
			if (SelectedProduct.variantMatrix[i].variants[y][0] == FrameID) {
				bFoundFrame = true;
			}
			if (SelectedProduct.variantMatrix[i].variants[y][0] == MediaID) {
				bFoundMedia = true;
			}
		}
		
		if (bFoundFormat && bFoundFrame && bFoundSize && bFoundMedia) {
			variantid = SelectedProduct.variantMatrix[i].id;
			break;
		}
	}
	
	ohidVariantID.value = variantid;

	ohidProductID = oFormatDdl = oSizeDdl = ohidMediaID = oFrameDdl = oDeliveryDdl = ohidVariantID = null;

	return RLdesign.Utils.DefineReturnCode(e, true);
}


RLdesign.Events.SetEventHandler(window, "load", InitFields);

function InitFields() {
	var ohidProductID = RLdesign.Utils.DefineObject(hidSelectedProductID);
	var ohidVariantID = RLdesign.Utils.DefineObject(hidSelectedVariantID);
	var ohidFormatID = RLdesign.Utils.DefineObject(hidSelectedVariant1ID);
	var ohidSizeID = RLdesign.Utils.DefineObject(hidSelectedVariant2ID);
	var ohidFrameID = RLdesign.Utils.DefineObject(hidSelectedVariant3ID);
	var ohidMediaID = RLdesign.Utils.DefineObject(hidSelectedVariant4ID);
	var ohidDelivery = RLdesign.Utils.DefineObject(hidSelectedDeliveryID);
	
	ohidProductID.value = "";
	ohidVariantID.value = "";
	ohidFormatID.value = "";
	ohidSizeID.value = "";
	ohidFrameID.value = "";
	ohidDelivery.value = "";
	ohidMediaID.value = "";

	ohidDelivery = ohidFormatID = ohidFrameID = ohidMediaID = ohidProductID = ohidSizeID = ohidVariantID = null;
}


function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}


function HandlePrice() {
	var oFormatDdl = RLdesign.Utils.DefineObject(ddlFormatID);
	var oSizeDdl = RLdesign.Utils.DefineObject(ddlSizeID);
	var oFrameDdl = RLdesign.Utils.DefineObject(ddlFrameID);
	var oDeliveryDdl = RLdesign.Utils.DefineObject(ddlDeliveryID);
	var ohidMediaID = RLdesign.Utils.DefineObject(hidSelectedVariant4ID);
	var oProductPrice = RLdesign.Utils.DefineObject(spanProductPriceID);
	var oDiscountPrice = RLdesign.Utils.DefineObject(spanDiscountPriceID);
	var oShippingPrice = RLdesign.Utils.DefineObject(spanShippingPriceID);
	var oTotalPrice = RLdesign.Utils.DefineObject(spanTotalPriceID);

	if (oProductPrice.defaultValue == null || oProductPrice.defaultValue == "") {
		oProductPrice.defaultValue = oProductPrice.innerHTML;
	}
	if (oDiscountPrice.defaultValue == null || oDiscountPrice.defaultValue == "") {
		oDiscountPrice.defaultValue = oDiscountPrice.innerHTML;
	}
	if (oShippingPrice.defaultValue == null || oShippingPrice.defaultValue == "") {
		oShippingPrice.defaultValue = oShippingPrice.innerHTML;
	}
	if (oTotalPrice.defaultValue == null || oTotalPrice.defaultValue == "") {
		oTotalPrice.defaultValue = oTotalPrice.innerHTML;
	}

	var foundvariant = false;

	if (SelectedProduct != null && SelectedProduct.variantMatrix != null) {
		for (var i = 0; i < SelectedProduct.variantMatrix.length; i++) {
			var bFoundFormat = false;
			var bFoundSize = false;
			var bFoundFrame = false;

			for (var y = 0; y < SelectedProduct.variantMatrix[i].variants.length; y++) {
				if (SelectedProduct.variantMatrix[i].variants[y][0] == oFormatDdl.options[oFormatDdl.selectedIndex].value) {
					bFoundFormat = true;
				}
				if (SelectedProduct.variantMatrix[i].variants[y][0] == oSizeDdl.options[oSizeDdl.selectedIndex].value) {
					bFoundSize = true;
				}
				if (SelectedProduct.variantMatrix[i].variants[y][0] == oFrameDdl.options[oFrameDdl.selectedIndex].value) {
					bFoundFrame = true;
				}
			}

			if (bFoundFormat && bFoundFrame && bFoundSize) {
				foundvariant = true;
				oProductPrice.innerHTML = SelectedProduct.variantMatrix[i].productprice;
				oProductPrice.className = "";
				oDiscountPrice.innerHTML = SelectedProduct.variantMatrix[i].discountprice;
				oDiscountPrice.className = "";
				if (oDeliveryDdl.selectedIndex == 1) {
					oShippingPrice.innerHTML = SelectedProduct.variantMatrix[i].shippingprice;
					oTotalPrice.innerHTML = SelectedProduct.variantMatrix[i].totalshipprice;
					oShippingPrice.className = "";
					oTotalPrice.className = "";
				}
				else if (oDeliveryDdl.selectedIndex == 2) {
					oShippingPrice.innerHTML = SelectedProduct.variantMatrix[i].pickupprice;
					oTotalPrice.innerHTML = SelectedProduct.variantMatrix[i].totalpickprice;
					oShippingPrice.className = "";
					oTotalPrice.className = "";
				}
				else {
					oShippingPrice.innerHTML = oShippingPrice.defaultValue;
					oShippingPrice.className = "missing";
					oTotalPrice.innerHTML = oTotalPrice.defaultValue;
					oTotalPrice.className = "missing";
				}
				break;
			}
		}
	}
	
	if (!foundvariant) {
		oProductPrice.innerHTML = oProductPrice.defaultValue;
		oProductPrice.className = "missing";
		oDiscountPrice.innerHTML = oDiscountPrice.defaultValue;
		oDiscountPrice.className = "missing";
		oShippingPrice.innerHTML = oShippingPrice.defaultValue;
		oShippingPrice.className = "missing";
		oTotalPrice.innerHTML = oTotalPrice.defaultValue;
		oTotalPrice.className = "missing";
	}

	oFormatDdl = oDeliveryDdl = oFrameDdl = ohidMediaID = oSizeDdl = oProductPrice = oDiscountPrice = oShippingPrice = oTotalPrice = null;
}
