// Modifiers

var $ready = Element.observe.curry(window, 'load');

Prototype.Browser.IE6 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE") + 5)) == 6;
Prototype.Browser.IE7 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE") + 5)) == 7;
Prototype.Browser.IE8 = Prototype.Browser.IE && !Prototype.Browser.IE6 && !Prototype.Browser.IE7;

Number.prototype.decimalFormat =  function() {

	var dl = arguments[0] || ',',
		n1 = Math.max(0, this).toFixed(0), n2 = Math.max(0, this).toFixed(2); 

	return n1.replace(/(?=(?:\d{3})+$)(?!^)/g, dl) + '.' + n2.split('.')[1];

}

String.prototype.trim = function() {
	return this.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}

var Cookie = {
	
	erase: function (name) {

		this.set(name, '', -1);

	},
	
	get: function (name) {

		var i,
			nameEQ = name + '=',
			ca = document.cookie.split(';');

		for (i = 0; i < ca.length; i++) {
			while (ca[i].charAt(0) == ' ') ca[i] = ca[i].substring(1, ca[i].length);
			if (ca[i].indexOf(nameEQ) == 0) return ca[i].substring(nameEQ.length, ca[i].length);
		}

		return null;

	},

	set: function(name, value, days) {
		
		var date = new Date(),
			expires = '';

		if (days) {
			date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
			expires = '; expires=' + date.toGMTString();
		}

		document.cookie = name + '=' + value + expires + '; path=/';

	}

}

var Basket = {

	add: function(sku) {
		
		var basket = this.getExcluding(sku);
		
		basket.push(sku);

		Cookie.set('BASKET', basket.join(','));

		this.update();

		return basket;

	}, 

	clear: function() {

		Cookie.erase('BASKET');

		this.update();

	},

	get: function() {
		
		var basket = Cookie.get('BASKET'),
			basket = (basket != null ? (basket.trim() != '' ? basket.split(',') : new Array()) : new Array());
		
		return basket;

	},
	
	getExcluding: function(sku) {
		
		var oldbasket = this.get(),
			newbasket = new Array(),
			i = 0;
		
		for (i = 0; i < oldbasket.length; i++)
			if (oldbasket[i] != sku)
				newbasket.push(basket[i]);

		return newbasket;

	},

	remove: function(sku) {
		
		var basket = this.getExcluding(sku);

		if (basket.length > 0)
			Cookie.set('BASKET', basket.join(','));

		else
			Cookie.erase('BASKET');

		this.update();

		return basket;

	}, 

	update: function() {
		
		var basket = Cookie.get('BASKET'),
			basket = (basket != null ? (basket.trim() != '' ? basket.split(',') : new Array()) : new Array()),
			output = ' (' + basket.length + ' item' + (basket.length != 1 ? 's' : '') + ')',
			value = 0,
			i = 0;
		
		for (i = 0; i < basket.length; i++)
			value = value + parseInt(basket[i].split('-')[1]);
		
		if ($('baskettxt'))
			$('baskettxt').update('R ' + new Number(value / 100).decimalFormat() + output);

	}

}

// Onload

$ready( function() {

	Basket.update();

    $$('.ellipsis').each( function(e) {

	    var w = e.getWidth() - 10000,
	    	t = e.innerHTML;

	    e.innerHTML = "<span>" + t + "</span>";
    	e = e.down();

	    while (t.length > 0 && e.getWidth() >= w) {
	      t = t.substr(0, t.length - 1);
    	  e.innerHTML = t + "&hellip;";
	    }

		e.up().setStyle({ 'width': e.getWidth() + 'px' });
	});

	$$('img.basket').invoke('observe', 'click', function(ev) {
		var basket = Basket.add(this.id.toUpperCase());
		alert('The item has been added to your Basket');
		location = '/basket/view';
	});

 	Event.observe(document, 'mousemove', function(event) {
		MouseX = Event.pointerX(event);
		MouseY = Event.pointerY(event);
	});

	new ProtoFish('nav');
});

