

var itemname;
var mmWidth;
var mmDrop;

var RomanCartID = 29111;
var added_uri = "http://www.web-blinds-direct.com/added.gif";


document.getElementsByClass = function (searchClass, tag, node) {
        var classElements = new Array();
        if (node == null)
                node = document;
        if (tag == null)
                tag = '*';
        var els = node.getElementsByTagName(tag);
        var elsLen = els.length;
        var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
        for (i = 0, j = 0; i < elsLen; i++) {
                if (pattern.test(els[i].className)) {
                        classElements[j] = els[i];
                        j++;
                }
        }
        return classElements;
}

var nullf = function(){};

function Cart(slats) {
	this.slats = slats
	this.timer = 0;
}

Cart.prototype.reset = function() {
	clearTimeout(this.timer);
	img = set_first_tag(this.slats, "img", "none");
	img.onload = nullf;
	img.src = "/adding.gif";
	set_first_tag(this.slats, "button", "inline");
}

Cart.prototype.loaded = function() {
	slat_name = this.parentNode.id.replace("add_", ""); // this=img node not the cart
	var reset = "carts['" + slat_name + "'].reset()"
	carts[slat_name].timer = setTimeout(reset, 1000);
	update_basket_total()
}

function Retail() {
	this.prices = 0;
}

Retail.prototype.slat_prices = function() {
	var next_drop = next_highest(selected_drop, this.prices);
	if(next_drop == 0) return;

	var next_width = next_highest(selected_width, this.prices[next_drop]);
	if(next_width == 0) return;

	var p = this.prices[next_drop][next_width];

	return p;
}

Retail.prototype.set_slat_prices = function() {
	var spbutts = document.getElementById("SlatPriceButtons");
	var tb = elem("tbody", {"id":"SlatPriceButtons"})
	if(set_notice()) {
		spbutts.parentNode.replaceChild(tb, spbutts);
		return;
	}

	slat_prices = this.slat_prices();

	for(slat in slat_prices)
		tb.appendChild(slat_price_button(slat, slat_prices[slat]));
	
	spbutts.parentNode.replaceChild(tb, spbutts);
}

function next_highest(v, arr) {
	var r_v = 0;

	for(var a in arr) {
		if(a >= v) return a;
	}
	return 0;
}

function get_slat_prices() {
	return prices.slat_prices();
}

function set_selected() {
	var c_w = document.getElementById("custom_w");
	var c_d = document.getElementById("custom_d");
	
	if(!(c_w && c_d)) return;

	selected_width = parseInt(c_w.value);
	selected_drop = parseInt(c_d.value);
	
	c_w.value = selected_width > 0 ? selected_width : '';
	c_d.value = selected_drop > 0 ? selected_drop : '';
}


function slats_price(slat_name) {
	return (slat_prices && slat_prices[slat_name]) ? slat_prices[slat_name] : "";
}

function set_slat_prices() {
	prices.set_slat_prices();
}

function set_notice() {
	set_selected();
	var e_n = document.getElementById("notice");
	var n_txt = "";
	var err = "";
	var conj = "";

	if(selected_width > 0) {
		if(selected_width < mmWidth.min) {
			n_txt = "The width supplied is too small.";
			conj = "<br>";
		} else if(selected_width > mmWidth.max) {
			n_txt = "The width supplied is too large.\n";
			conj = "<br>";
		}
	} else {
		n_txt = "No width selected";
		conj = "<br>";
	}

	if(selected_drop > 0) {
		if(selected_drop < mmDrop.min) {
			n_txt += conj + "The drop supplied is too small.";
		} else if(selected_drop > mmDrop.max) {
			n_txt += conj + "The drop supplied is too large.\n";
		}
	} else {
		n_txt += conj + "No drop selected";
	}
	e_n.innerHTML = n_txt;
	return n_txt != "";
}

function set_add_img_display(slat_name, noneinline) {
	var add_img = document.getElementById("img_" + slat_name);
	add_img.style.display = noneinline;
	if(noneinline == "none") {
		add_img.onload = nullf;
		add_img.src="http://www.web-blinds-direct.com/adding.gif";
	}
	return add_img;
}

function set_first_tag(parent, tag, noneinline) {
	var elements = parent.getElementsByTagName(tag);
	if(!elements) return;
	elements[0].style.display = noneinline;
	return elements[0];
}

function to_cart(slat_button) {
	var slats = slat_button.parentNode;
	var slat_name = slats.id.replace("add_", "");

	var qtys = slats.getElementsByTagName("input");
	if(!qtys) return;

	set_first_tag(slats, "button", "none");
	var img = set_first_tag(slats, "img", "inline");
	if(!img) return;

	img.src = "http://www.romancart.com/cart.asp?storeid=" + RomanCartID + "&returnurl=" + escape(added_uri) + "&displayCart=no&hor=" + selected_width + "&ver=" + selected_drop + "&price=" + slats_price(slat_name) + "&quantity=" + qtys[0].value + "&itemname=" + escape(itemname) + "&itemname2=" + selected_width + "x" + selected_drop + "mm&itemname3=" + escape(slat_name) + "%20slats&weight=5";

	carts[slat_name] = new Cart(slats);
	img.onload = carts[slat_name].loaded;
}

function elem(name, attrs, style, text) {
    var e = document.createElement(name);
    if (attrs) {
        for (key in attrs) {
            if (key == 'class') {
                e.className = attrs[key];
            } else if (key == 'id') {
                e.id = attrs[key];
            } else {
                e.setAttribute(key, attrs[key]);
            }
        }
    }
    if (style) {
        for (key in style) {
            e.style[key] = style[key];
        }
    }
    if (text) {
        e.appendChild(document.createTextNode(text));
    }
    return e;
}

function slat_price_button(sp, price) {
	var tr = elem('tr', {"valign":"middle"});
	tr.appendChild(elem("td", {}, {}, sp));
	var td = elem("td", {}, {}, price.toFixed(2));
	tr.appendChild(td);
	td = document.createElement("td");
	var s = elem("span", {"class":"ToCart", "id":"add_" + sp});
	s.appendChild(elem("input", {"type":"text", "value":"1"}));
	var but = elem("button", {}, {}, "Add To Cart");
	but.onclick = function() { to_cart(this); };
	s.appendChild(but);

	s.appendChild(elem("img", {"class":"AddImg", "src":"adding.gif", "alt":"Add To Cart", "title":"Add To Cart"}));
	td.appendChild(s);
	tr.appendChild(td);
	return tr;
}

function add_script_to_dom(script_filename) {
    var html_doc = document.getElementsByTagName('head').item(0);
    var j_s = document.createElement('script');
    j_s.setAttribute('language', 'javascript');
    j_s.setAttribute('type', 'text/javascript');
    j_s.setAttribute('src', script_filename);
    html_doc.appendChild(j_s);
    return false;
}

function slat_prices_div() {
	var d = elem("div", {"id":"SlatPrices"});
	var t = elem("table", {"border":0, "cellpadding":0, "cellspacing":0});

	var c = elem("colgroup");
	c.appendChild(elem("col", {"width":"100px"}));
	c.appendChild(elem("col", {"width":"100px"}));
	c.appendChild(elem("col", {"width":"300px"}));
	t.appendChild(c);

	var tr = elem("tr");
	tr.appendChild(elem("td", {}, {}, "Width"));
	var td = elem("td");
	td.appendChild(elem("input", {"type":"text", "id":"custom_w", "value":"", "onKeyUp":"set_slat_prices()"}));
	tr.appendChild(td);
	td = elem("td", {}, {}, mmWidth.min + " - "  + mmWidth.max + " mm (min - max)");
	tr.appendChild(td);

	t.appendChild(tr);

	tr = elem("tr");
	tr.appendChild(elem("td", {}, {}, "Drop"));
	td = elem("td");
	td.appendChild(elem("input", {"type":"text", "id":"custom_d", "value":"", "onKeyUp":"set_slat_prices()"}));
	tr.appendChild(td);
	td = elem("td", {}, {}, mmDrop.min + " - "  + mmDrop.max + " mm (min - max)");
	tr.appendChild(td);

	t.appendChild(tr);

	var ta = document.createElement("textarea");
	ta.innerHTML = "&pound;";

	tr = elem("tr");
	tr.appendChild(elem("th", {}, {}, "Slat Size"));
	tr.appendChild(elem("th", {}, {}, "Price " ));
	th = elem("th");
	th.appendChild(elem("span", {"id":"notice"}, {}, "No width or drop selected"));
	tr.appendChild(th);
	t.appendChild(tr);

	t.appendChild(elem("tbody", {"id":"SlatPriceButtons"}));

	d.appendChild(t);

	return d;
}

function add_price_calc() {
	var pc = document.getElementById("PriceCalc");
	pc.appendChild(elem("h3", {}, {}, "To get a price please enter your measurements"));

	var spd = slat_prices_div();
	pc.appendChild(spd);

	pc.innerHTML = pc.innerHTML;
}

function update_basket_total() {
	add_script_to_dom("http://www.romancart.com/cartinfo.asp?storeid=" + RomanCartID + "&type=2");
}

function hide_free_sample() {
	var fs = document.getElementById("FreeSample");
	if(fs)
		fs.style.display="none";
}

function free_sample(free_sample_button) {
	var img = set_first_tag(free_sample_button.parentNode, "img", "inline");
	if(!img) return;
	img.src = "http://www.romancart.com/cart.asp?storeid=" + RomanCartID + "&returnurl=" + escape(added_uri) + "&displayCart=no&hor=0&ver=0&price=0&quantity=1&itemname=" + escape(itemname) + "&itemname2=Free%20Sample&weight=5";
	img.onload = hide_free_sample;
}


function add_free_sample_button() {
	var fs = document.getElementById("FreeSample");
	var butt = elem("button", {}, {}, "Order Sample");
	butt.onclick = function() { free_sample(this); };
	fs.appendChild(butt);
	fs.appendChild(elem("img", {"class":"AddImg", "src":"adding.gif", "alt":"Add To Cart", "title":"Add To Cart"}));
}

prices = new Retail;

var selected_width = 0;
var selected_drop = 0;
var slat_prices;

var carts = new Object;

var prices;
var loc = document.location + "";


add_script_to_dom(loc.substring(loc.lastIndexOf('/') + 1, loc.lastIndexOf('.') + 1) + "js");

window.onload = function() {
	for (d in prices.prices) {
		if(parseInt(d) > mmDrop.max)
			mmDrop.max = parseInt(d);
		for(w in prices.prices[d])
			if(parseInt(w) > mmWidth.max)
				mmWidth.max = parseInt(w);
	}
	add_free_sample_button();
	add_price_calc();
	update_basket_total();
}

document.write = function(a) {
	var bk = document.getElementById("BasketPrice");
	if(bk)
		bk.innerHTML = ": " + a;
 }

