		
		function updateContent( html ){
			document.getElementById("contentDiv").innerHTML = html;
		}

		
		var mouse_x = 0; 
		var mouse_y = 0;
		
		
		function addToCart( ev, idProduct, qty, fnCallback ){
			
			mouse_x = ev.clientX;
			mouse_y = ev.clientY;
			
			if( $('#cartDivControl').length ) $('#cartDivControl').remove();
			
			x_addToCart( idProduct, qty, fnCallback );
		}


		function updateCart_cb( html ){
			
			if( html == '' ){ 
				alert("A quantidade seleccionada é inválida.");
				return;
			}
			document.getElementById("cartDiv").innerHTML = html;
			
			var scroll = getScrollXY();
			
			var divId = "cartContentAlert_div" + Math.floor((Math.random() * 50000));
			var jDivId = "#"+ divId;
			
			if( mouse_x + mouse_y > 0 ){
				
				$("body").append('<div id="' + divId + '"></div>');
				
				$(jDivId).addClass("cartContentAlert_div");
				var cssObj = {
			        position: "absolute",
			        top: mouse_y + scroll[1] + 5,
			        left: mouse_x + scroll[0] - 8
			    }		
				$(jDivId).html(html);
				$(jDivId).css(cssObj);
				$(jDivId).fadeIn(50);
				$(jDivId).fadeOut(7000);
			}		
		}
		
		function getScrollXY() {
			  var scrOfX = 0, scrOfY = 0;
			  if( typeof( window.pageYOffset ) == 'number' ) {
			    //Netscape compliant
			    scrOfY = window.pageYOffset;
			    scrOfX = window.pageXOffset;
			  } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
			    //DOM compliant
			    scrOfY = document.body.scrollTop;
			    scrOfX = document.body.scrollLeft;
			  } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
			    //IE6 standards compliant mode
			    scrOfY = document.documentElement.scrollTop;
			    scrOfX = document.documentElement.scrollLeft;
			  }
			  return [ scrOfX, scrOfY ];
		}
		
		function showCartDetails_cb( html ){
			document.getElementById("cartDetails").innerHTML = html;
			x_updateCart( updateCart_cb );
		}
		
		function cart_proceed_cb( errorCode ){
			if( errorCode == 0 ) location.href = "viewCart2.php";
			if( errorCode == 1 ) alert( "Tem de efectuar o login para prosseguir." );
			if( errorCode == 2 ) alert( "Não tem produtos no carrinho." );
		}
		
		
		function changeCartProdQty( idProd, qty ){
			
			if( !validateNumber(qty) || qty < 0 || qty > 500 ){
				alert("Quantidade introduzida inválida. A quantidade deverá ser um valor entre 1 e 500");
				return;
			}
			x_changeCartProdQty( idProd, qty, changeCartProdQty_cb );
		}
		
		
		function changeCartProdQty_cb( html ){
		
			if( $('#cartDivControl').length )
				x_showDivCartDetails( showCartDivControl_cb );
		
			document.getElementById("cartDiv").innerHTML = html;
			x_showCartDetails( showCartDetails_cb );
		}
		
		
		function validateNumber(strString){

			if( strString == "" ) return false;

			var strValidChars = ".0123456789"; //decimal ok
			var strChar;
			var blnResult = true;

			// test strString consists of valid characters listed above
			for (i = 0; i < strString.length && blnResult == true; i++){

				strChar = strString.charAt(i);
				if (strValidChars.indexOf(strChar) == -1){
					blnResult = false;
				}
			}
			if( strString <= 0 ) return false;
			return blnResult;
		}
		
