function cartRefresher(){
	var numItems = arguments[0].substring(arguments[0].indexOf("<span id=\"itemNum\">") + 19);
	numItems = numItems.substring(0, numItems.indexOf("</span>"));
	document.getElementById("itemNum").innerHTML = numItems;

	var amount = arguments[0].substring(arguments[0].indexOf("<span id=\"amount\">") + 18);
	amount = amount.substring(0, amount.indexOf("</span>"));
	document.getElementById("amount").innerHTML = amount;

	var textItemNum = arguments[0].substring(arguments[0].indexOf("<span id=\"textItemNum\">") + 23);
	textItemNum = textItemNum.substring(0, textItemNum.indexOf("</span>"));
	document.getElementById("textItemNum").innerHTML = textItemNum;

	if (parseInt(numItems) > 0){
		document.getElementById("caixa").style.display = 'block';
	} else{
		document.getElementById("caixa").style.display = 'none';
	}
	
	var q = new XMLHTTPRequestFactory().getXMLHTTPRequest();
	var url = "http://" + window.location.toString().split("/")[2];
	//url += "/";
	//url += window.location.toString().split("/")[3];
	if(arguments[1] != null)
		url += arguments[1];
	url += "/add-cart-home.ep";
	
	q.open("GET", url, true);
	
	q.onreadystatechange = function(){
		if(q.readyState == 4){
			if(q.status == 200){
				var cartHome = document.getElementById('cartHome');
				cartHome.innerHTML = q.responseText;
				window.scrollTo(0, 0);
				//cartHome.className = "addCartHome";
				cartHome.style.display = 'block';
				window.setTimeout(function(){document.getElementById('cartHome').style.display='none'}, 2500);
			}
		}
	}
	q.send(null);
	
}

function addToCart(){
	var request = new XMLHTTPRequestFactory().getXMLHTTPRequest();
	if(request){
		var querystring = "";

		//Statements executados se, e somente se, a função for chamada com 2 ou 3 argumentos. 
		//Estes argumentos hão de ser o baseUrl e um HTMLForm (nesta ordem) o terceiro, opcional, deve ser o booleano reload
		if(arguments.length == 2 || arguments.length == 3){
			var inputSet = new Array();
			for(var i = 0; i < arguments[1].elements.length; i++){
				if(arguments[1].elements[i].type != "checkbox" && arguments[1].elements[i].type != "submit" && arguments[1].elements[i].type != undefined){
					inputSet.push(encodeURIComponent(arguments[1].elements[i].name) + "=" + encodeURIComponent(arguments[1].elements[i].value));
				} else{
					if(arguments[1].elements[i].checked){
						inputSet.push(encodeURIComponent(arguments[1].elements[i].name) + "=" + encodeURIComponent(arguments[1].elements[i].value));
					}
				}
			}
			var querystring = inputSet.join("&");		
		} else{
			if(arguments.length == 4 || arguments.length ==5){
				//Statements executados se, e somente se, a função for chamada com 4 ou 5 ou 6 argumentos.
				//Estes argumentos devem ser 	 quantidade nesta ordem!!!
				//O quinto, opcional, é o booleano reload
				//O sexto, opcional, é o booleano simple
				querystring = "cartItem%5B0%5D.pID=" + arguments[1] + "&cartItem%5B0%5D.skuGuid=" + arguments[2] + "&cartItem%5B0%5D.quantity=" + arguments[3] + "&addToCartSubmit=Add%20to%20Cart";
			}
		}

		//definindo se o parametro de reload foi passado ou nao
		var isReload = false;
		//Statements executados se a função for chamada com 3 ou cinco argumentos
		if(arguments.length == 3 || arguments.length == 5){
			isReload = arguments[arguments.length - 1];
		}
	
		//Esta parte do código é executada independentemente da quantidade de argumentos passados
		querystring += "&key=" + new Date().getTime();

		//fazer uma requisição assíncrona para o mesmo URL do formulario do EP
		var context = arguments[0];
		request.open("GET", "http://" + window.location.toString().split("/")[2] + context + "/add-to-cart.ep?" + querystring, true);

		request.onreadystatechange = function(){
			if(request.readyState == 4){
				if(request.status == 200){
					cartRefresher(request.responseText, context);
					if(isReload){
						window.location.reload();
					}
				}
			}
		}
		request.send(null);
	} else{
		window.alert("Erro: Sem requisicoes assincronas!");
	}
}

function addToCartSimple(){
	var request = new XMLHTTPRequestFactory().getXMLHTTPRequest();
	if(request){
		var querystring = "skuCode=" + arguments[1] + "&qty=" + arguments[2];
		var isReload = false;
		if(arguments.length == 4){
			isReload = arguments[3];
		}
		
		var context = arguments[0];
		//fazer uma requisição assíncrona para o mesmo URL do formulario do EP
		request.open("GET", "http://" + window.location.toString().split("/")[2] + arguments[0] + "/add-to-cart-simple.ep?" + querystring, true);
	
		request.onreadystatechange = function(){
			if(request.readyState == 4){
				if(request.status == 200){
					cartRefresher(request.responseText, context);
					if(isReload){
						window.location.reload();
					}
				}
			}
		}
		request.send(null);
	}else{
		window.alert("Erro: Sem requisicoes assincronas!");
	}
}

/*function enableAsyncronousAddToCart(){
	//arguments[0] as value, arguments[1] as destination
	var argumentsNum = arguments.length;
	var success = "Produto adicionado ao cart!";
	switch (argumentsNum){
		case 0:
			window.alert(success);
		case 1:
			window.alert(success + "" +arguments[0] + " produtos ao todo.");
			break;
		case 2:
			window.alert(success);
			document.getElementById(arguments[1]).innerHTML = arguments[0];
			break;
	}
}*/