// +----------------------------------+
// | Cart controller                  |
// | Copyright (C) 2007 Craig Manley  |
// +----------------------------------+
// $Id: Cart.js,v 1.9 2009/01/30 14:54:58 cmanley Exp $

// Requirements:
// /js/overlib/overlib_mini.js
// /js/overlib/overlib_shadow_mini.js
// sprintf function
// /js/i18n/??.js (Strings object)
// /js/RpcClient.js



var Cart = new (function() {

	var _flash_count = 0;

	// Flashes the mini display
	this.flash = function() {
	 	if (_flash_count >= 6) {
	 		_flash_count = 0;
	 	}
	 	else {
	 		_flash_count++;
	 		var e = document.getElementById('btnCartImage');
	 		var i = e.src.lastIndexOf('/') + 1;
	 		var path = e.src.substr(0, i);
	 		var file = e.src.substr(i);
	 		var url = path + 'btnCart';
	 		if (file.indexOf('Over.png') < 0) {
	 			url += 'Over';
	 		}
	 		url += '.png';
	 		e.src = url;
	 		setTimeout('Cart.flash()', 50);
	 	}
	}

	// Plays a navigation click.
	/*
	this.playNav = function() {
		var e = document.getElementById("soundCtnr");
		if (e) {
			e.innerHTML = '<embed src="/nav.wav" hidden="true" autostart="true" loop="false">';
		}
	}
	*/

	// Adds an item to the cart and then flashes the mini display.
	this.addItem = function(code, amt) {
		if (!amt) {
			amt = 1;
		}
		var result = RpcClient.Cart.addItem(code, amt);
		if (result) {
			document.getElementById('cartItemCount').innerHTML = result.count;
			document.getElementById('cartValue').innerHTML = result.value.toCurrency();
			//this.playNav();
			overlib(sprintf(Strings['cart_product_x_added'], code), TIMEOUT, 1200, BGCOLOR, '#0066ff', FGCOLOR,'#EEF7F4', BORDER, 2, HAUTO, VAUTO, SHADOW);
			this.flash();
		}
	}

	// Adds items to the cart from existing order and then flashes the mini display.
	this.addItemsFromOrder = function(order_id) {
		var result = RpcClient.Cart.addItemsFromOrder(order_id);
		if (result) {
			var diff = result['count'] - this.count();
			document.getElementById('cartItemCount').innerHTML = result.count;
			document.getElementById('cartValue').innerHTML = result.value.toCurrency();
			if (diff == 1) {
				alert(Strings['cart_1_product_added']);
			}
			else {
				alert(sprintf(Strings['cart_x_products_added'], diff));
			}
			//this.playNav();
			this.flash();
		}
		else {
			alert(Strings['err_failed']);
		}
	}


	// Returns the current count.
	this.count = function() {
		return parseInt(document.getElementById('cartItemCount').innerHTML);
	}



})();
