extrashopFloatingBasket = {
	create: function ()
	{
		try
		{
			// if a custom styler has been registered, execute it before anything else happens!
			if (efbStyler) efbStyler(this);
		}
		catch (e)
		{
			// ignore any errors
		}

		this.doc = document;

		this.div = newdiv (this.header + this.contentTable + this.footer);
		if (navigator.appVersion.indexOf('MSIE') > 0)
		{
			// no support for fixed positioning (FIXME: don't do this on IE 7)
			// so we use IE's calculated position support.
			this.div.className = "extrashop_floating_basket_ie";
		}
		else
			this.div.className = "extrashop_floating_basket";

		this.div.style.display = "none";
		document.body.appendChild (this.div);
		for (var i = 0; i < basketContent.items.length; i++)
			this.updateRow (basketContent.items[i]);
		this.updateTotals();

	},

	header: 
		"<div class='titlebar'>Your basket</div>"+
		"<div class='content'>",

	contentTable: 
		"<table class='extrashop_basket small_basket' width='200'>"+
		"<tr id='extrashop_floating_basket_totalbar'>"+
			"<td colspan=2 style='text-align: right'>Total:</td>"+
			"<td colspan=1 class='totalbar' id='extrashop_floating_basket_totalfield'>&nbsp;</td>"+
		"</tr>"+
		"</table>",

	footer:
		"<A href=\""+esbase+"/basket\">Edit</A> - <A href=\""+esbase+"/checkout\">Checkout</A>"+
		"</div>",

	updateAll: function ()
	{
		for (var i = 0; i < basketContent.items.length; i++)
			this.updateRow (basketContent.items[i]);
		this.updateTotals();
	},

	updateRow: function (item)
	{
		this.div.style.display = "block";
		var idx = item.idx;
		if (idx < 0)
			idx = (""+item.title).replace (' ', '').replace ('\'', '').replace ('"', '');

		var row = this.doc.getElementById ('extrashop_floating_basket_row_' + idx);
		if (!row) {
			row = this.createRow (idx, item.idx);
			var totalbar = this.doc.getElementById ('extrashop_floating_basket_totalbar');
			totalbar.parentNode.insertBefore (row, totalbar);
		}

		this.setRowContent (row, item);
	},

	createRow: function (idx, origidx)
	{
		var id = 'extrashop_floating_basket_row_' + idx
		var doc = '<table><tbody><tr id="'+id+'">';
		if (origidx >= 0)
			doc += this.rowTemplate;
		else
			doc += this.specialRowTemplate;
		doc += "</tr></tbody></table>";

		var div = this.doc.createElement ("div");
		div.innerHTML = doc;
		return div.getElementsByTagName ('tr')[0];
	},

	rowTemplate: "<td><span class='xsfbx_img'></span></td><td class='desc'><span class='xsfb_qty'></span> x <span class='xsfb_title'></span></td><td class='price'>£<span class='xsfb_tprice'></span></td>",
	specialRowTemplate: "<td colspan=2 class='desc'><span class='xsfb_title'></span></td><td>£<span class='xsfb_tprice'></span></td>",
	formatters: { tprice: "formatCurrency" },

	setRowContent: function (row, item)
	{
		/*var cells = row.getElementsByTagName ('td');
		cells[0].innerHTML = 
			(item.qty > 1 ? (item.qty + " x ") : "") +
			item.title;
		cells[0].className = 'desc';
		cells[1].innerHTML = "£" + item.tprice;*/

		var spans = row.getElementsByTagName ('span');
		for (i = 0; i < spans.length; i++)
		{
			if (spans[i].className.length > 5 && spans[i].className.substr(0,5) == "xsfb_")
			{
				//while (spans[i].firstChild) spans[i].removeChild(spans[i].firstChild);
				//spans[i].appendChild (document.createTextNode (item[spans[i].className.substr(5)]));
				var fieldname = spans[i].className.substr(5);
				var fieldvalue = item[fieldname];
				if (this.formatters[fieldname]) {
					fieldvalue = this[this.formatters[fieldname]] ("" + fieldvalue);
				}
				spans[i].innerHTML = fieldvalue;
			}
			if (spans[i].className.length > 6 && spans[i].className.substr(0,6) == "xsfbx_")
			{
				if (spans[i].className == 'xsfbx_img')
				{
					if (item['image'])
						spans[i].innerHTML = "<img src='"+esbase+"/"+item['code']+"/downloadImage/"+item['image']+"'>";
					else
						spans[i].innerHTML = "";
				}
			}
		}
	},

	updateTotals: function ()
	{
		var totalfield = this.doc.getElementById('extrashop_floating_basket_totalfield');
		if (totalfield) totalfield.innerHTML = "£" + this.formatCurrency(""+basketContent.totalprice);
	},
	
	formatCurrency: function (value)
	{
		var dot = value.indexOf ('.');
		if (dot < 0)
			return value + ".00";
		else if (dot == value.length - 1)
			return value + "00";
		else if (dot == value.length - 2)
			return value + "0";
		else
			return value;
	},

	ver: "1.0"
};

if (window.attachEvent)
	window.attachEvent ("onload", function () { extrashopFloatingBasket.create (); });
else
	window.addEventListener ("load", function () { extrashopFloatingBasket.create (); }, true);


try
{
	if (oojs_moduleLoaded) oojs_moduleLoaded ("page/scriptlib/filterhtml.js");
}
catch (e) { }
