String.prototype.trim = function() {

return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,"");

}

String.prototype.isInteger = function () {
	        return /^\d+$/.test (this);
}

Number.prototype.isInteger = function () {
	        return /^\d+$/.test (this);
}

Number.prototype.isFloat = function () {
	        return /^\d+\.?\d*$/.test (this);
}

String.prototype.isFloat = function () {
	        return /^\d+\.?\d*$/.test (this);
}


var cartItemListOpen = true;
var cartIsVisible = false;
var draggable = null;
//var products = new Array();
var products = new Hash();
var cartTable = false;
var cartTotal = 0.0;

function endCartDrag(){

//	draggable.destroy();
}

function startCartDrag(){

	draggable = new Draggable("cartEl");

}

function jsonify(){

	/*jsonstr = "[";
	is_first = true;
	products.each(
		function(value,index){
			if(is_first)
                	        is_first=false;
	                else
	                        jsonstr += ",";
        	        jsonstr += "{\"prod_id\":\""+value["prod_id"]+"\",\"prod_ammount\":\""+value["prod_ammount"]+"\"}";
		}
	);
	jsonstr += "]";
	return jsonstr*/
	return products.toJSON();

}

function destroy_cart(){
	
	cartIsVisible = false;
	//products = new Array();
	products = new Hash();
	while(cartTable.rows.length>1)
		cartTable.deleteRow(0);
	document.getElementById("cartEl").style.display="none";

	cartTotal = 0.0;
	document.getElementById("total").innerHTML = cartTotal;

}

function sumbitOrder(){

	var json_data = jsonify();
	var canvas = document.getElementById("modal_contents");

	new Ajax.Request("submit_cart.php",{
		method: "post",
		parameters: {
			json_data: json_data
		},
		onSuccess: function (transport){
			if(transport.responseText == "0"){
				canvas.style.color = "red";
	                        canvas.innerHTML = "<p>Erro ao processar encomenda!</p><p>Por favor tente mais tarde ou contacte-nos em <a href=\"mailto:plastimo@plastimo.co.pt\" class=\"linkAzul\">plastimo@plastimo.co.pt</a></p><input type=\'button\' value=\'Fechar\' onclick=\'Modalbox.hide()\' class=\"AzulBold11\"/>";
			}
			else{
				canvas.innerHTML = "<p>Encomenda enviada com sucesso!!</p><input type=\'button\' value=\'Terminar\' onclick=\'Modalbox.hide()\' class=\"AzulBold11\"/>";
				destroy_cart();
			}
		},
		onLoading: function (){
			canvas.innerHTML = "<p>Em processamento ...&nbsp;<img src=\"/images/waiting.gif\" border=\"0\" /></p>";
		},
		onFailure: function (){
			canvas.style.color = "red";
			canvas.innerHTML = "<p>Erro ao processar encomenda!</p><p>Por favor tente mais tarde ou contacte-nos em <a href=\"mailto:plastimo@plastimo.co.pt\" class=\"linkAzul\">plastimo@plastimo.co.pt</a></p><input type=\'button\' value=\'Fechar\' onclick=\'Modalbox.hide()\' class=\"AzulBold11\"/>";				
		}
	});

	//Modalbox.hide();
	
}

function submitCart(){

	Modalbox.show('<div class=\'AzulBold11\' id="modal_contents"><p>Deseja confirmar a encomenda?</p> <input type=\'button\' value=\'Continuar\' onclick=\'sumbitOrder()\' class="AzulBold11"/> <input type=\'button\' value=\'Cancelar\' onclick=\'Modalbox.hide()\' class="AzulBold11"/></div>',{title: this.title, width: 300});

}

function slideCart(){

	if(cartItemListOpen){
		document.getElementById("labelTopCart").innerHTML = "+ Ver Carrinho";
		Effect.SlideUp("item_list");
	}else{
		document.getElementById("labelTopCart").innerHTML = "+ Ver Carrinho";
		Effect.SlideDown("item_list");
	}

	cartItemListOpen = !cartItemListOpen;

}

function add_new_row(prod_id){

	if(!cartTable)
                cartTable = document.getElementById("items");

	if(products.get(prod_id)){

		var row = cartTable.insertRow(cartTable.rows.length-1);
		row.id = "row"+prod_id;
		var el = document.createElement('input');
	        el.type = 'text';
		el.name = 'txt_ammount' + prod_id;
		el.id = 'txt_ammount' + prod_id;
		el.size = 2;
		el.value= 1;
		el.onchange = recalculate;
		
		var cell1 = row.insertCell(0);
		cell1.appendChild(el);

		var anchor = document.createElement('a');
		//var title = document.createTextNode(products[prod_id]["prod_title"]);
		var title = document.createTextNode(products.get(prod_id).get("prod_title"));
		var lnbr = document.createElement('br');
		//var descr = document.createTextNode(products[prod_id]["prod_desc"]);
		var descr = document.createTextNode(products.get(prod_id).get("prod_desc"));
		anchor.appendChild(title);
		var cell2 = row.insertCell(1);
	        cell2.appendChild(anchor);
		cell2.appendChild(lnbr);
		cell2.appendChild(descr);

		var img = document.createElement("img");
		//img.src = products[prod_id]["prod_img"];
		img.src = products.get(prod_id).get("prod_img");
		img.border=0;
		img.width=50;
		img.height=50;
		var cell3 = row.insertCell(2);
		cell3.appendChild(img);

		//var price = document.createTextNode(products[prod_id]["prod_price"]+" euros");
		var price = document.createTextNode(products.get(prod_id).get("prod_price")+" euros");
		var lnbr2 = document.createElement('br');
		var anchor2 = document.createElement('a');
		anchor2.href="javascript:remove_from_cart("+prod_id+")";
		anchor2.className = "linkAzul";
		var removeLabel =  document.createTextNode("remover");
		anchor2.appendChild(removeLabel);
		var cell4 = row.insertCell(3);
		cell4.appendChild(price);
		cell4.appendChild(lnbr2);
		cell4.appendChild(anchor2);

	}

}

function recalculate(e){

	var targ;
	if (!e) var e = window.event;
	if (e.target) targ = e.target;
	else if (e.srcElement) targ = e.srcElement;
	if (targ.nodeType == 3) // defeat Safari bug
		targ = targ.parentNode;

	var prod_id = targ.id.substring(11);

	if(!targ.value.isInteger())
		//targ.value = products[prod_id]["prod_ammount"]
		targ.value = products.get(prod_id).get("prod_ammount");
	else{
		if(targ.value > 0){
			//var oldValue = products[prod_id]["prod_ammount"]*products[prod_id]["prod_price"];
			var oldValue = products.get(prod_id).get("prod_ammount")*products.get(prod_id).get("prod_price");
			//var newValue = targ.value*products[prod_id]["prod_price"];
			var newValue = targ.value*products.get(prod_id).get("prod_price");

			cartTotal-=oldValue.toFixed(2);
			cartTotal+=newValue;

			document.getElementById("total").innerHTML = cartTotal;
		}else
			remove_from_cart(prod_id);
	}

}

function remove_from_cart(prod_id){

	for(i=0;i<cartTable.rows.length;i++)
		if(cartTable.rows[i].id == "row"+prod_id){
			cartTable.deleteRow(i);
			break;
		}
	//cartTotal -= eval(products[prod_id]["prod_price"]).toFixed(2)*eval(products[prod_id]["prod_ammount"]).toFixed(2);
	cartTotal -= eval(products.get(prod_id).get("prod_price")).toFixed(2)*eval(products.get(prod_id).get("prod_ammount")).toFixed(2);

	document.getElementById("total").innerHTML = cartTotal.toFixed(2);
	//products[prod_id]=null;
	products.unset(prod_id);

}

function increment_ammount(prod_id){
	
	//products[prod_id]["prod_ammount"]++;
	ammount = products.get(prod_id).get("prod_ammount");
	products.get(prod_id).set("prod_ammount",ammount+1)
	//cartTotal += eval(products[prod_id]["prod_price"]);
	cartTotal += eval(products.get(prod_id).get("prod_price"));
	//document.getElementById("txt_ammount"+prod_id).value = products[prod_id]["prod_ammount"];
	document.getElementById("txt_ammount"+prod_id).value = products.get(prod_id).get("prod_ammount");
	document.getElementById("total").innerHTML = cartTotal.toFixed(2);
		
}

function add_to_cart(prod_id,prod_title,prod_desc,prod_img,prod_price){

	if(!cartIsVisible)
		initCart();

	//if(products[prod_id])
	if(products.get(prod_id)!=undefined)
		increment_ammount(prod_id);
	else{
		/*products[prod_id] = new Array();
		products[prod_id]["prod_id"] = prod_id;
		products[prod_id]["prod_img"] = prod_img;
		products[prod_id]["prod_title"] = prod_title.substring(0,50);
		products[prod_id]["prod_desc"] = prod_desc.substring(0,50);
		products[prod_id]["prod_ammount"] = 1;
		products[prod_id]["prod_price"] = prod_price;*/
		products.set(prod_id,new Hash());
                products.get(prod_id).set("prod_id",prod_id);
		products.get(prod_id).set("prod_img",prod_img);
		products.get(prod_id).set("prod_title",prod_title.substring(0,50));
		products.get(prod_id).set("prod_desc",prod_desc.substring(0,50));
		products.get(prod_id).set("prod_ammount",1);
		products.get(prod_id).set("prod_price",prod_price);

		add_new_row(prod_id);

		cartTotal += eval(prod_price);

		document.getElementById("total").innerHTML = cartTotal.toFixed(2);

	}

}

function initCart(){

	document.getElementById("cartEl").style.display="block";
	cartIsVisible = true;

}
