
var AddToCart = {
	Version: '1.0.0', 
	AddedToCartElemID: "AddedToCart", 
	CartQuantityElemID: "CartQuantity", 
	AddedToCartResultsElemID: "AddedToCartResults", 
	AddedToCartCloseElemID: "AddedToCartClose", 
	add: function(_productid, _quantityid, _attribute1id, _attribute2id, _attribute3id, _attribute4id, _return, _format, _suffix){
		var params = {};
		// set product id
		params.ProductID = (_productid-0);
		// set quantity
		var qtyval = (jQuery("#" + _quantityid).val()-0);
		if(!isNaN(qtyval) && qtyval > 0){
			params.Quantity = qtyval;
		}else{
			params.Quantity = 1;
		}
		// set attributes
		if(_attribute1id != '' && jQuery("#" + _attribute1id)){
			var attr1val = jQuery("#" + _attribute1id).val();
			params.Attribute1 = attr1val;
		}
		if(_attribute2id != '' && jQuery("#" + _attribute2id)){
			var attr2val = jQuery("#" + _attribute2id).val();
			params.Attribute2 = attr2val;
		}
		if(_attribute3id != '' && jQuery("#" + _attribute3id)){
			var attr3val = jQuery("#" + _attribute3id).val();
			params.Attribute3 = attr3val;
		}
		if(_attribute4id != '' && jQuery("#" + _attribute4id)){
			var attr4val = jQuery("#" + _attribute4id).val();
			params.Attribute4 = attr4val;
		}
		// set return - 1 = item count, 2 = item quantity count
		_return = (_return-0);
		if(!isNaN(_return) && _return > 0){
			params.Return = _return;
		}else{
			params.Return = 1;
		}
		// set format - 1 = string, 2 = json
		_format = (_format-0);
		if(!isNaN(_format) && _format > 0){
			params.Format = _return;
		}else{
			params.Format = 2; // json is the default
		}
		// use suffix - true | false
		// default to true
		if(typeof _suffix === 'undefined'){
			_suffix = true;
		}
		if(!_suffix){
			params.Suffix = false;
		}else{
			params.Suffix = true;
		}
		// send add to cart request		
		new Ajax.Request('/AddToCart.aspx', {
			method: 'post', 
			parameters: params, 
			onSuccess: function(_transport){
				var response = _transport.responseJSON || {Error: "NOT OK"}
				if(response.Error != ""){
					alert(response.Error);
					//alert("Error!\n\nCould not add the item to your basket. (Error Code: 1)");
				}else{
					try {
						AddToCart.formatAndDisplayResponse(response);
					}catch(x){
						alert(x);
						//alert("Error!\n\nCould not add the item to your basket.\n\n(Error Code: 2)");
					}
				}
			}, 
			onFailure: function(){
				alert("Error!\n\nAn error occurred when attempting to add to the basket.\n\n(Error Code: 3)");
			}
		});
		return 0;
	}, 
	addMultiple: function(_productid, _return, _format, _suffix){
		var params = {};
		// set product id
		params.ProductID = (_productid-0);
		// set quantities
		var arrQtys = new Array();
		// set skus
		var arrAttribute1s = new Array();
		// loop through qty flds and find ones with values > 0
		for(i=0; i<QTYS.length; i++){
			var qtyVal = jQuery("#" + QTYS[i]).val();
			if(qtyVal != ""){
				qtyVal = (qtyVal-0);
				if(!isNaN(qtyVal) && qtyVal > 0){
					arrQtys.push(qtyVal);
					arrAttribute1s.push(jQuery("#" + ATTR1[i]).val());
				}
			}
		}
		// validate
		if(arrQtys.length <= 0 || arrAttribute1s.length <= 0){
			alert("Please enter a quantity.");
			return 0;
		}
		if(arrQtys.length != arrAttribute1s.length){
			alert("An error occurred. Please refresh the page and try again.");
			return 0;
		}
		// passed, set the parameters
		params.Quantity = arrQtys.join(",");
		params.Attribute1 = arrAttribute1s.join(",");
		// set return - 1 = item count, 2 = item quantity count
		_return = (_return-0);
		if(!isNaN(_return) && _return > 0){
			params.Return = _return;
		}else{
			params.Return = 1;
		}
		// set format - 1 = string, 2 = json
		_format = (_format-0);
		if(!isNaN(_format) && _format > 0){
			params.Format = _return;
		}else{
			params.Format = 2; // json is the default
		}
		// use suffix - true | false
		// default to true
		if(typeof _suffix === 'undefined'){
			_suffix = true;
		}
		if(!_suffix){
			params.Suffix = false;
		}else{
			params.Suffix = true;
		}
		// send add to cart request		
		jQuery.ajax({
			type: 'POST', 
			url: '/AddToCart.aspx',
			data: params, 
			datatype: 'json',
			success: function(_json){
				try {
					AddToCart.formatAndDisplayResponse(_json);
				}catch(x){
					alert(x);
					//alert("Error!\n\nCould not add the item to your basket.\n\n(Error Code: 2)");
				}
			}, 
			error: function(){
				alert("Error!\n\nAn error occurred when attempting to add to the basket.\n\n(Error Code: 3)");
			}
		});
	}, 
	//_payload = {ProductImage: '<img>', ProductName: '<ProductName>', SKU: '<SKU>', Quantity: '#', ListPrice: '$#.##', OnSale: (true|false), SalePrice: '$#.##', TotalItems: '# item(s)|#', BasketSubTotal: '$#.##'}
	formatAndDisplayResponse: function(_payload){

		// update the basket item quantity div, if exists
		var basketQuantity = jQuery("#" + AddToCart.CartQuantityElemID);
		if(basketQuantity){
			basketQuantity.html(_payload.TotalItems);
		}
		
		// show the checkout button, now that you have at least one product in you basket
		try{showCheckoutButton();}catch(x){}
		
		if(jQuery("#" + this.AddedToCartResultsElemID)){
		
			// replace variables
			var AddedToCart_Image = jQuery("#" + "AddedToCart_Image");
			if(AddedToCart_Image){
				AddedToCart_Image.attr("src", _payload.ProductImage);
			}
			var AddedToCart_ProductName = jQuery("#" + "AddedToCart_ProductName");
			if(AddedToCart_ProductName){
				AddedToCart_ProductName.html(_payload.ProductName);
			}
			var AddedToCart_SKU = jQuery("#" + "AddedToCart_SKU");
			if(AddedToCart_SKU){
				AddedToCart_SKU.html(_payload.SKU);
			}
			var AddedToCart_Quantity = jQuery("#" + "AddedToCart_Quantity");
			if(AddedToCart_Quantity){
				AddedToCart_Quantity.html(_payload.Quantity);
			}
			var AddedToCart_Price = jQuery("#" + "AddedToCart_Price");
			if(AddedToCart_Price){
				var price = "<span class='ListPrice'>" + _payload.ListPrice + "</span>"
				if(_payload.OnSale){
					price += "<span class='SalePrice'>" + _payload.ListPrice + "</span>";
				}
				AddedToCart_Price.html(price);
			}
			var AddedToCart_TotalItems = jQuery("#" + "AddedToCart_TotalItems");
			if(AddedToCart_TotalItems){
				AddedToCart_TotalItems.html(_payload.TotalItems);
			}
			var AddedToCart_BasketSubTotal = jQuery("#" + "AddedToCart_BasketSubTotal");
			if(AddedToCart_BasketSubTotal){
				AddedToCart_BasketSubTotal.html(_payload.BasketSubTotal);
			}
			// show added results
			this.centerAddedPopup();
		
		}else{
			alert("The item(s) have been added to your cart.");
		}
		
	}, 
	centerAddedPopup: function(){
		var formHtml = this.getDisplayHtml();
		formHtml = formHtml.replace(/AddedToCart/g, "AddedToCart1");
		formHtml = formHtml.replace(/lblAddedToCart1/g, "lblAddedToCart");
		jQuery.colorbox({
			html: formHtml
		});
	}, 
	getDisplayHtml: function(){
		return jQuery("#" + this.AddedToCartElemID).html();
	}, 
	close: function(){
		jQuery.colorbox.close();
		return 0;
	}
};

