/**
 * shoppingcart.js
 *
 * author : 2008 Stephane Bouet (Aduneo)
 *
 */
 
 
  // recup panier dans cookie
	var mybasket = new shoppingcart();				
	mybasket.initBasket();	
	
 
 /**
 * objet shoppingcart
 *
 */
function shoppingcart() {	
	this.basket = new Array();
	this.cookieName = 'spibio_order';	
	this.separator = '%';
	this.itemSeparator = '|';
	
	// init le tableau contenant les items
    // chaque item du cookie est separe par un '|'
	this.initBasket = function() {				
		var mycookie = $.cookie(this.cookieName);	
		if (mycookie != null) 
			this.basket = mycookie.split(this.itemSeparator);							
		else
			this.basket = new Array();	
	};	
	
	// enregistre le contrenu dans un cookie
	// chaque item est separé par un "pipe"
	this.saveBasket = function() {		
		$.cookie(this.cookieName,this.basket.join(this.itemSeparator));		
	};
	
	// ajoute un item au panier s'il ne preexiste pas
	this.addOrderItem = function(item) {	
		if (this.getItemIndex(item) == -1) {
			this.basket.push(item);				
		}	
		this.saveBasket();	
	};
	
	// recherche emplacemenrt d'un item dans tableau
	// renvoie -1 si non trouve
	// en param : id de l'item
	this.getItemIndex = function(itemId) {
		var found = -1;			
		for (var i = 0; i< this.basket.length; i++) {	
			var currentItemId = this.getItemId(this.basket[i]);			
			if (itemId == currentItemId) {
				found = i;
				break;
			}
		}	
		return found;
	};
	
	// retourne le contenu du panier
	// dans un table dont l'id est passe en param
	this.getBasketTable = function(tableId) {			
		var myTable = null;			
		myTable = '<table id="' + tableId + '">';							
		if (this.basket != null && this.basket.length > 0) {					
				
			myTable +='<tr><td class="header">Reference</td><td class="header">Product</td><td class="header">Size</td><td class="header">Quantity</td><td class="header">&#160;</td></tr>'; 
			for (var i = 0; i< this.basket.length; i++) {
				var myline = "<tr>";
				var myitem = this.basket[i].split(this.separator);					
				
				var productId =  myitem[5];
				
				for (var j=1; j < 5; j++) {
					if (j < 3) 
						myline += '<td><a href="javascript:gotoProduct(' + productId + ');">' + myitem[j] + '</a></td>';
					else	
						myline += "<td>" + myitem[j] + "</td>";
				}
				myline += '<td ><a href="javascript:remove(' + i + ');"><img src="../design/images/shoppingcart/remove.png" width="32" height="32" title="Remove from your price inquiry" /></a></td>';
				myline += "</tr>";				
				myTable +=myline;
			}
					
		} else {
			myTable += '<tr><td>Your price inquiry has no item.</td></tr>';
		}
		myTable += '</table>';	
		return myTable;	
	};
	
	// vide le panier
	this.removeAllItems = function() {
		this.basket = new Array();	
		$.cookie(this.cookieName, '', { expires: -1 });
	};
	
	// retire un item du panier
	// a partir de l'index de celui ci
	this.removeOrderItem = function(idx) {			
		if (idx >= 0) {
			arrayRemove(this.basket, idx);				
		}	
		this.saveBasket();	
	};
	
	// renvoie l'id unique d'un item
	// passe en param sous form de String
	this.getItemId = function(item) {
		var ret = null;
		if (item != null) {
			var t_item = item.split(this.separator);
			if (t_item.length > 0)
				ret = t_item[0];
		}		
		return ret;	
	};
	
	// renvoie la quantite d'un item
	//  en param son index dans le tableau Basket
	this.getQuantity = function(idx) {
		var item = this.basket[idx];
		var ret = null;
		if (item != null) {
			var t_item = item.split(this.separator);
			if (t_item.length > 0)
				ret = t_item[4];
		}		
		return ret;	
	};
	
	
}

// function globale remove from array
function arrayRemove(array, from, to) {
   var rest = array.slice((to || from) + 1 || array.length);
   array.length = from < 0 ? array.length + from : from;
   return array.push.apply(array, rest);
}; 

function gotoProduct(productId) {
	document.location.href = "../product/product.jsf?productId=" + productId + "#pricing";	
}