﻿function MakeCookie(name, value) {
	var days_to_expiry = 1;
	var date = new Date();
	date.setTime(date.getTime() + (days_to_expiry*24*60*60*1000));
	var expires = "; expires=" + date.toGMTString();
	document.cookie = name + "=" + value + expires + "; path=/; domain=.lumenaris.com";
}
function ReadCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') { c = c.substring(1,c.length); }
		if (c.indexOf(nameEQ) == 0) {
			var result = c.substring(nameEQ.length,c.length);
			return decodeURIComponent(result);
		}
	}
	return "";
}

// CART STRUCTURE:
// itemID:quantity|itemID...
// widget:3|whatsit:8

function EmptyCart() {
	MakeCookie("cart","");
	AskPhpForPrices();
}
function AddToCart(item, quantity) {
	if (CartContains(item)) { ChangeQuantity(item, QuantityOf(item)+quantity); }
	else { AddNewCartEntry(item, quantity); }
	AskPhpForPrices();
}
function AddToCartVariable(item, quantity, mplset_n) {
	var mplval = document.getElementsByName("mplset" + mplset_n)[0].value;
	AddToCart(item.replace("_",mplval), quantity);
}
function CartContains(item) {
	var cart = ReadCookie("cart"); if (cart == "") { return false; }
	var cart_entries = cart.split("|");
	for (var k in cart_entries) {
		var fields = cart_entries[k].split(":");
		if (fields[0] == item) { return true; }
	}
	return false;
}
function QuantityOf(item) {
	var cart = ReadCookie("cart"); if (cart == "") { return 0; }
	var cart_entries = cart.split("|");
	for (var k in cart_entries) {
		var fields = cart_entries[k].split(":");
		if (fields[0] == item) { return parseInt(fields[1]); }
	}
	return 0;
}
function ChangeQuantity(item, quantity) {
	var cart = ReadCookie("cart"); if (cart == "") { return false; }
	var newcart = new Array();
	var cart_entries = cart.split("|");
	for (var k in cart_entries) {
		var fields = cart_entries[k].split(":");
		if (fields[0] == item) { fields[1] = quantity; }
		newcart.push(fields.join(":"));
	}
	MakeCookie("cart", newcart.join("|"));
}
function AddNewCartEntry(item, quantity) {
	var cart = ReadCookie("cart");
	var entry = item + ":" + quantity;
	if (cart == "") { cart = entry; }
	else { cart = cart + "|" + entry; }
	MakeCookie("cart", cart);
}
function RemoveFromCart(item) {
	var cart = ReadCookie("cart");
	item = TrimBOM(item);
	
	if (cart == "") { return false; }
	var newcart = new Array();
	var cart_entries = cart.split("|");
	for (var k in cart_entries) {
		var fields = cart_entries[k].split(":");
		if (fields[0] != item) {
			newcart.push(fields.join(":"));
		}
	}
	var newcartjoined = newcart.join("|");
	MakeCookie("cart", newcartjoined);
	AskPhpForPrices();
}

function TrimBOM(x) {
	while(x.charCodeAt(0) == 65279) { x = x.substring(1); }
	return x;
}

function ReSpacify(text) {
	if (undefined != text) {
		text = decodeURIComponent(text);
		text = text.replace(/\++/g," ");
	}
	return text;
}

var request = null;
function AskPhpForPrices() {
	document.getElementById("cartguts").innerHTML = "<p>Waiting for response from server...</p><p>If you'd rather, you can <a href=\"contacts.html\">contact us</a> and order directly.</p>";

	var url = "assets/pricify.php";
	request = new XMLHttpRequest();
	request.onreadystatechange = ReceivePricesFromPhp;
	request.open("POST", url, true);

	var params = "xyz=abc";
	request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	request.setRequestHeader("Content-length", 1);
	request.setRequestHeader("Connection", "close");
	request.send(params);
}
function ReceivePricesFromPhp() {
	if (request.readyState == 4 && request.status == 200) {
		document.getElementById("carttest").innerHTML = TrimBOM(request.responseText);
		UpdateCartGuts();
	}
}
function UpdateCartGuts() {
	var cartguts_template = "<table><tr class=\"header\"><td></td><td>Item</td><td>No.</td><td>Price</td></tr>__GUTS__SUBTOTAL__REMAINDER</table>";
	var remainder = "__TAX__SHIPPING__TOTAL";
	var cartguts = "<p>Cart is empty.</p>";
	var entry_template = "<tr><td>__REMOVE</td><td>__NAME</td><td>__QUANTITY</td><td>__PRICE</td></tr>";
	var cart = document.getElementById("carttest").innerHTML;
	if (cart != "") {
		cartguts = "";
		var cart_entries = cart.split("|");
		for (var k in cart_entries) {
			var fields = cart_entries[k].split(":");
			var quantity = fields[1];
			var price = fields[2];
			var name = ReSpacify(fields[3]);
			var id = fields[0]
			var remove = "";
			if (PageHasCartButton()) {
				remove = "<span class=\"button remove\" onclick=\"RemoveFromCart(&quot;" + id + "&quot;)\">✕</span>";
				remainder = "";
			}
			var cartguts_entry = entry_template.replace("__NAME",name).replace("__QUANTITY",quantity).replace("__PRICE",price).replace("__REMOVE",remove);
			cartguts = cartguts + cartguts_entry;
		}
		cartguts = cartguts_template.replace("__GUTS", cartguts);
		cartguts = cartguts.replace("__REMAINDER", remainder);
		cartguts = cartguts.replace("__SUBTOTAL", GetCalculatedValue("subtotal"));
		cartguts = cartguts.replace("__TAX", GetCalculatedValue("tax"));
		cartguts = cartguts.replace("__SHIPPING", GetCalculatedValue("shipping"));
		cartguts = cartguts.replace("__TOTAL", GetCalculatedValue("total"));
	}
	document.getElementById("cartguts").innerHTML = cartguts;
	CartButton();
	return true;
}
function GetCalculatedValue(name) {
	var cookie_value = ReadCookie(name);
	if (cookie_value == "" || cookie_value == "$0.00") { return ""; }
	return "<tr class=\"" + name + "\"><td></td><td colspan=2>" + name + "</td><td>" + cookie_value + "</td></tr>";
}
function CartButton() {
	var text = "";
	if (ReadCookie("cart") != "" && PageHasCartButton()) {
		text = "<a class=\"button\" href=\"https://lumenaris.com/contact.html\">Go to Checkout ➜</a>";
	}
	document.getElementById("cartbutton").innerHTML = text;
}
function PageHasCartButton() {
	return (document.getElementById("cartbutton") != null);
}
