function setUpWidth(){
	var sCart = $('topcart');
	var newWidth = 0;
	for(var i = 0; i< sCart.childNodes.length; i++){
		if(sCart.childNodes[i].className == "subtotal"){
			newWidth += sCart.childNodes[i].clientWidth
		}else if(sCart.childNodes[i].className == "items"){
			newWidth += sCart.childNodes[i].clientWidth
		}else if(sCart.childNodes[i].className == "checkout"){
			newWidth += sCart.childNodes[i].clientWidth
		}
	}
	var cart = $('topcartpopup')
	var tables = cart.getElementsByTagName("table")
	if(tables.length > 0){
		cart.removeChild(tables[0])
	}
//	cart.setStyle({width: (newWidth - 70) + "px"});    	
	cart.setStyle({width: (newWidth - 35) + "px"});    	
}
function showErrors(containerId, errorsList){
	var errorbox = $(containerId)
	if(!errorbox){
		var main = $('main');
		errorbox = document.createElement("div")
		main.insertBefore(errorbox, main.childNodes[0]);
	}
	while(errorbox.childNodes.length > 0){
		errorbox.removeChild(errorbox.childNodes[0])
	}
	var ul = document.createElement("ul")
	ul.className = "messages"
	var li = document.createElement("li")
	li.className = "error-msg"
	var ul2 = document.createElement("ul")
	for(var i = 0; i< errorsList.length; i++){
		var li2 = document.createElement("li");
		li2.appendChild(document.createTextNode(errorsList[i]))
		ul2.appendChild(li2)
	}
	li.appendChild(ul2)
	ul.appendChild(li)
	errorbox.appendChild(ul);		
}
    
function addToCart(url, errorBoxId, params){
	$(document.body).addClassName("wait")
	new Ajax.Request(url,
	{
		method:'post',
		parameters: params,
    	onSuccess: function(transport){
    		window.scroll(window.scrollX, 0)
    		var xml = transport.responseXML.documentElement;
      		var errors = xml.getElementsByTagName("error")
      		if(errors.length > 0){
      			var errorsList = new Array(errors.length);
      			for(var i = 0; i< errors.length; i++){
      				errorsList[i] = errors[i].childNodes[0].nodeValue
      			}
      			showErrors(errorBoxId, errorsList);
      			$(document.body).toggleClassName("wait")
      			return false;
      		}
    		/*TODO
    			SET UP necessary delay!!!
    		*/
    		window.setTimeout('$(document.body).toggleClassName("wait")', 300)

      		var newTotalPrice = xml.getElementsByTagName("totalprice").item(0)
      		var newTotalItems = xml.getElementsByTagName("totalitems").item(0)
      		$('subtotal').update("Subtotal: " + newTotalPrice.getAttribute("value"))
      		if(newTotalItems.getAttribute("value") == 1){
      			$('items').update("1 item in bag")
      		}else{
      			$('items').update("" + newTotalItems.getAttribute("value") + " items in bag")
      		}

      			
      		/*
      			Set up width
      		*/
      		setUpWidth()
      		
      			
			var cart = $('topcartpopup')
			
      		var products = xml.getElementsByTagName("product");
      		if(products.length > 0){
      			var table = document.createElement("table")
      			var tbody = document.createElement("tbody")
      			for(var i = 0; i< products.length; i++){
      				var tr = document.createElement("tr")
      				var td = document.createElement("td")
      				var imgEl = document.createElement("img")
      				imgEl.setAttribute("src", products[i].getAttribute("image"))
      				td.className = "topcartpopup-td1"
      				td.appendChild(imgEl)
      				tr.appendChild(td)
      				td = document.createElement("td")
   					var div = document.createElement("div")
					div.className = "cpopup-name"
     				div.appendChild(document.createTextNode(products[i].getAttribute("name")))
      				td.appendChild(div)
      				div = document.createElement("div")
      				div.className = "cpopup-price"
      				div.appendChild(document.createTextNode(products[i].getAttribute("price")))
      				td.appendChild(div)
      				tr.appendChild(td)
      				tbody.appendChild(tr)
      			}
      			table.appendChild(tbody)
      			cart.appendChild(table)
      		}      			
      		cart.setStyle({visibility12: 'hidden', bottom: "auto"})
      		new Effect.SlideDown(cart, {duration: 0.3});
      		//cart.setStyle({display: "block"})		
    	},
    	onFailure: function(){ 
   			showErrors(errorBoxId, new Array("Can not add item to shopping cart"));
   			window.scroll(window.scrollX, 0)
   			$(document.body).toggleClassName("wait")
    	},
    	onException: function (e){
   			showErrors(errorBoxId, new Array("Can not add item to shopping cart"));
   			window.scroll(window.scrollX, 0)
   			$(document.body).toggleClassName("wait")    			
    	}
  	});
}