function setDisplay(elem_name, value) {
	if(document.getElementById(elem_name) == null)
		return;

	document.getElementById(elem_name).style.display = value;
}

function getCatalogue(requestObject) {
        if(requestObject.readyState == 4 && requestObject.status == 200) {
                var e = document.getElementById("content_div");

                if(requestObject.responseText == null || requestObject.responseText.length == 0)
                        return;

                e.innerHTML = requestObject.responseText;
        }
}

function setLoader(div_name) {
	var e = document.getElementById(div_name);
	e.innerHTML = "<div style=\"width: 100% auto; padding-top: 50px; text-align: center;\"><img src=\"img/loader.gif\" /></div>";
}

function setCatalogue(fieldname, fieldvalue) {
	setLoader("content_div");

        var ar = new AjaxRequest();
        ar.method = GET_METHOD;
        ar.filename = "getCatalogue.php";

        if(fieldname)
                ar.filename += "?fieldname=" + fieldname + "&fieldvalue=" + fieldvalue;

        ar.formRequest.onreadystatechange = function() { getCatalogue(ar.formRequest); };
        ar.exec_request();
}

function setIndexCatalogue() {
	setLoader("content_div");

        var ar = new AjaxRequest();
        ar.method = GET_METHOD;
        ar.filename = "getIndexCatalogue.php";
        ar.formRequest.onreadystatechange = function() { getCatalogue(ar.formRequest); };
        ar.exec_request();
}

function setBrandsCatalogue(fieldname, fieldvalue) {
	setLoader("content_div");

        var ar = new AjaxRequest();
        ar.method = GET_METHOD;
        ar.filename = "getBrandsCatalogue.php";

        if(fieldname)
                ar.filename += "?fieldname=" + fieldname + "&fieldvalue=" + fieldvalue;

        ar.formRequest.onreadystatechange = function() { getCatalogue(ar.formRequest); };
        ar.exec_request();
}

function product_search() {
        var val = document.forms["product_searchForm"].elements["search_text"].value;

        if(val == "")
                return;

	window.location.href = "/bomboclat/search_text/" + val + "/";
}

function getCart(requestObject, func) {
        if(requestObject.readyState == 4 && requestObject.status == 200) {
                var xmlDoc;

                if(requestObject.responseText == null || requestObject.responseText.length == 0)
                        return;

                if(window.DOMParser) {
                        var parser = new DOMParser();
                        xmlDoc = parser.parseFromString(requestObject.responseText, "text/xml");
                }
                else {
                        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                        xmlDoc.async = "false";
                        xmlDoc.loadXML(requestObject.responseText);
                }

                var cart = xmlDoc.getElementsByTagName("Cart")[0];
                var cart_count = cart.attributes.getNamedItem("count").nodeValue;
                var cart_product_total = cart.attributes.getNamedItem("product_total").nodeValue;
                var cart_ship_cost = cart.attributes.getNamedItem("ship_cost").nodeValue;
                var cart_total = cart.attributes.getNamedItem("total").nodeValue;
                var no_product_string = cart.attributes.getNamedItem("no_product_string").nodeValue;

                var cart_num_div = document.getElementById("cart_num");

		if(cart_num_div != null)
			cart_num_div.innerHTML = "(" + cart_count + ")";

               	var product_list_div = document.getElementById("product_list_div");
               	var product_total_div = document.getElementById("product_total_div");
               	var ship_cost_div = document.getElementById("ship_cost_div");
               	var total_div = document.getElementById("total_div");

		if(product_list_div != null) {
			if(cart_count == 0) 
               			document.getElementById("content_div").innerHTML = no_product_string;
			else {
	                	if(window.DOMParser) 
					cart_text = cart.textContent;
				else
					cart_text = cart.text;

				product_list_div.innerHTML = cart_text;
				product_total_div.innerHTML = cart_product_total;
				ship_cost_div.innerHTML = cart_ship_cost;
				total_div.innerHTML = cart_total;

				document.forms["cartCheckoutForm"].elements["product_total"].value = cart_product_total;
				document.forms["cartCheckoutForm"].elements["ship_cost"].value = cart_ship_cost;
				document.forms["cartCheckoutForm"].elements["total"].value = cart_total;
			}
		}

		if(func != null)
			func();
        }
}

/*
 * action = 	- list: get product cart table
 *		- add: add a new product to cart
 *		- empty: empty cart
 *		- decrease: decrease a product amount
 *		- increase: increase a product amount
 *		- delete: delete a product 
 */

function setCart(action, store_id) {
	var func = null;

        var ar = new AjaxRequest();
        ar.filename = "cartAction.php";

	if(action && action == "add") {
		var size_val = document.forms["storeForm"].elements["size"].value;
		var amount_val = document.forms["storeForm"].elements["amount"].value;

        	if(size_val == "" || amount_val == "") {
			open_alert("You must choose a size and an amount.");
                	return;
		}

        	ar.method = POST_METHOD;
        	ar.formname = "storeForm";

		func = open_alert("Prodotto inserito nel carrello.");
	}
	else
        	ar.method = GET_METHOD;
	
	if(action)
		ar.filename += "?action=" + action;

	if(store_id)
		ar.filename += "&store_id=" + store_id;

        ar.formRequest.onreadystatechange = function() { getCart(ar.formRequest, func); };
        ar.exec_request();
}

// Desk/Store code

function getProductData(requestObject, line_id) {
        if(requestObject.readyState == 4 && requestObject.status == 200) {
		var e = document.getElementById("loader_img");
		e.innerHTML = "";

                var xmlDoc;

                if(window.DOMParser) {
                        var parser = new DOMParser();
                        xmlDoc = parser.parseFromString(requestObject.responseText, "text/xml");
                }
                else {
                        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                        xmlDoc.async = "false";
                        xmlDoc.loadXML(requestObject.responseText);
                }

                var product_field = xmlDoc.getElementsByTagName("Product")[0];
                var product_id_value = product_field.attributes.getNamedItem("product_id").nodeValue;
                var product_name_value = product_field.attributes.getNamedItem("name").nodeValue;
                var brand_name_value = product_field.attributes.getNamedItem("brand_name").nodeValue;
                var price_value = product_field.attributes.getNamedItem("price").nodeValue;
                var price_str_value = product_field.attributes.getNamedItem("price_str").nodeValue;

                if(product_name_value == "" || brand_name_value == "")
                        return;

                // Set data

                var table = document.getElementById("product_list");

                for(var i = 0;i < table.rows.length;i++) {
                        var id = table.rows[i].id;

                        if(id != null && id == line_id) {
                                table.rows[i].cells[1].innerHTML = brand_name_value;
                                table.rows[i].cells[2].innerHTML = product_name_value;
                                table.rows[i].cells[4].innerHTML = price_str_value;

                                document.getElementById("product_id" + line_id).value = product_id_value;
                		document.getElementById("price" + line_id).value = price_value;
                        }
                }

		setTotalPrice();

                // Add line

                addLine();
        }
}

function setProductData(shopcode, line_id) {
        if(shopcode.length != 8)
                return;

	var e = document.getElementById("loader_img");
	e.innerHTML = "<img src=\"../img/loader.gif\" />";

	var amount = document.getElementById("amount" + line_id).value;

        var ar = new AjaxRequest();
        ar.filename = "getProductData.php?shopcode=" + shopcode + "&amount=" + amount;
        ar.method = GET_METHOD;
        ar.formRequest.onreadystatechange = function() { getProductData(ar.formRequest, line_id); };
        ar.exec_request();
}

function getPrice(requestObject, line_id) {
        if(requestObject.readyState == 4 && requestObject.status == 200) {
                var e = document.getElementById("loader_img");
                e.innerHTML = "";

                var xmlDoc;

                if(window.DOMParser) {
                        var parser = new DOMParser();
                        xmlDoc = parser.parseFromString(requestObject.responseText, "text/xml");
                }
                else {
                        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
                        xmlDoc.async = "false";
                        xmlDoc.loadXML(requestObject.responseText);
                }

                var product_field = xmlDoc.getElementsByTagName("Product")[0];
                var price_value = product_field.attributes.getNamedItem("price").nodeValue;
                var price_str_value = product_field.attributes.getNamedItem("price_str").nodeValue;

                if(price_value == "")
                        return;

                // Set data

                var table = document.getElementById("product_list");
		table.rows[line_id].cells[4].innerHTML = price_str_value;

                document.getElementById("price" + line_id).value = price_value;

		setTotalPrice();
        }
}

function setPrice(amount, line_id) {
        if(amount < 1) {
                var table = document.getElementById("product_list");
		table.rows[line_id].cells[4].innerHTML = "&euro; 0,00";

                document.getElementById("price" + line_id).value = 0;
		setTotalPrice();

		open_alert("La quantita' non puo' essere minore di 1!");

                return;
	}

        var e = document.getElementById("loader_img");
        e.innerHTML = "<img src=\"../img/loader.gif\" />";

	var product_id = document.getElementById("product_id" + line_id).value;

        var ar = new AjaxRequest();
        ar.filename = "getPrice.php?amount=" + amount + "&product_id=" + product_id;
        ar.method = GET_METHOD;
        ar.formRequest.onreadystatechange = function() { getPrice(ar.formRequest, line_id); };
        ar.exec_request();
}

function setTotalPrice() {
        var table = document.getElementById("product_list");
	var total_price = 0;

        for(var i = 0;i < table.rows.length;i++) {
        	var id = table.rows[i].id;

		if(id != "") {
			var line_price = parseFloat(document.getElementById("price" + id).value);

			if(!isNaN(line_price))
				total_price += line_price;
		}
	}

	document.getElementById("total_price").innerHTML = "&euro; " + total_price.toFixed(2).replace(".", ",");
}

function addLine() {
        var table = document.getElementById("product_list");
        var product_length = table.rows.length - 1;
        var line_id = 1;

        if(product_length > 1)
                line_id = parseInt(table.rows[product_length - 1].id) + 1;

        var newRow = table.insertRow(product_length);
        newRow.id = line_id;

        var cell = newRow.insertCell(0);
	cell.innerHTML = "<input type=\"hidden\" name=\"product_id" + line_id + "\" id=\"product_id" + line_id + "\">"; 
	cell.innerHTML += "<input type=\"hidden\" name=\"price" + line_id + "\" id=\"price" + line_id + "\">"; 
        cell.innerHTML += "<input type=\"text\" name=\"shopcode" + line_id + "\" id=\"shopcode" + line_id + "\" onChange=\"setProductData(this.value, " + line_id + ");\">";

        cell = newRow.insertCell(1);

        cell = newRow.insertCell(2);

        cell = newRow.insertCell(3);
        cell.innerHTML = "<input type=\"text\" name=\"amount" + line_id + "\" id=\"amount" + line_id + "\" onKeyUp=\"setPrice(this.value, " + line_id + ");\" value=\"1\">";

        cell = newRow.insertCell(4);
        cell.innerHTML = "&euro; 0";

        cell = newRow.insertCell(5);
        cell.innerHTML = " <a href=\"javascript: deleteLine(" + line_id + ");\">-</a>";

	// Set focus to new shopcode form field
	
	document.getElementById("shopcode" + line_id).focus();
}

function deleteLine(line_id) {
        var table = document.getElementById("product_list");

        for(var i = 0;i < table.rows.length;i++) {
                var id = table.rows[i].id;

                if(id != null && id == line_id)
                        table.deleteRow(i);
        }

	setTotalPrice();
}

function getSendData(requestObject) {
        if(requestObject.readyState == 4 && requestObject.status == 200) {

                // Delete rows

                var table = document.getElementById("product_list");

                for(var i = (table.rows.length - 1);i > 1;i--) {
                        table.deleteRow(i - 1);
                }

                addLine();
		document.getElementById("total_price").innerHTML = "&euro; 0";

                // Popup

                open_alert(requestObject.responseText);
        }
}

function sendData() {
        var ar = new AjaxRequest();
        ar.filename = "setStore.php";
        ar.method = POST_METHOD;
        ar.formname = "deskForm";
        ar.formRequest.onreadystatechange = function() { getSendData(ar.formRequest); };
        ar.exec_request();
}

