Broadway.shoppingCart.dispatch = function(data) {
	Broadway.shoppingCart.doFades(data);
	$.ajax({
		url:'/com/Ajax/VisitorAjax.cfc?method=dispatch',
		dataType:'json',
		cache:false,
		data:{data:$.toJSON(data)},
		cache:false,
		success: function(data,textStatus,httpRequest) {
			if(typeof(data.primaryMethods) != 'undefined') {
				for(var item in data.primaryMethods) {
			    if(item == 'changeQuantity') {
						if(data.primaryMethods.changeQuantity.RESULT.ACTION == 'ADD') {
							eval('summaryInfo='+data.methods.getSummaryInfo.RESULT);
/*
							csOrderSubTotal = summaryInfo.SUBTOTAL.replace('$','');
							csOrderTotal = summaryInfo.TOTAL.replace('$','');
							csShipping = summaryInfo.SHIPPING.replace('$','');
							csTaxes = summaryInfo.TAXES.replace('$','');
							csOrderType = 'Cart - Add';
							csOrderNum = 'ADD-' + tagStruct.orderId;
							csAjaxTracking = true;
							setTimeout(function() { csExecuteShoppingCart(); csExecuteTracker(); }, 100);
*/
						}
					}
				}
			}
			if((typeof(tagStruct) != 'undefined') && tagStruct.viewOnly) {
				tagStruct.viewOnly = false;
/*
				csOrderType = 'Cart - View';
				csOrderNum = 'CV-' + tagStruct.orderId;
				csAjaxTracking = true;
				setTimeout(function() { csExecuteShoppingCart(); csExecuteTracker(); }, 100);
*/
			}

			Broadway.shoppingCart.processDispatch(data);
		},
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			var result = { XMLHttpRequest:XMLHttpRequest, textStatus:textStatus, errorThrown:errorThrown };
			Broadway.error.send({subject:'Ajax UI Error',msg:'- Ajax UI error in /Views/ShoppingCart/index.js : Broadway.shoppingCart.dispatch',obj:result});
		}
	});
};

$(document).ready(function() {
	Broadway.shoppingCart.dispatch({
		methods: {
			getCartItems: { },
			getSummaryInfo: { },
			getPromoCodes: { },
			getDontMissContent: { },
			getUpSellContent: { }
		}
	});

	$('input#btnPromo').click(function() {
		$('input#promocode').focus(function() { $('input#promocode').val(''); $('div.noPromo').hide(); });
		var data = { promocode:$('input#promocode').val() };
		Broadway.shoppingCart.dispatch({
			primaryMethods: { applyPromo:data },
			methods: {
				getCartItems:{ },
				getSummaryInfo:{ },
				getUpSellContent:{ },
				getDontMissContent:{ },
				getPromoCodes:{ }
			}
		});
	});

	$('input#promocode').keypress(function(event) {
		$('input#promocode').focus(function() { $('input#promocode').val(''); $('div.noPromo').hide(); });
		if(parseInt(event.keyCode) == 13) {
			var data = { promocode:$('input#promocode').val() };
			Broadway.shoppingCart.dispatch({
				primaryMethods: { applyPromo:data },
				methods: {
					getCartItems:{ },
					getSummaryInfo:{ },
					getUpSellContent:{ },
					getDontMissContent:{ },
					getPromoCodes:{ }
				}
			});
		}
	});
	$('div#checkout-sidebar-checkout img').css('background-color','#ffffff');
});

Broadway.shoppingCart.processDispatch = function(data) {
	Broadway.shoppingCart.updateCartCounter(data.CARTCOUNTER);

	for(var item in data.primaryMethods) {
		switch(item) {
			case 'applyPromo' :
				var result = $.evalJSON(data.primaryMethods[item].RESULT);
				if(!result.DISCOUNTFOUND) {
					$('input#promocode').val('');
					$('div.noPromo').show();
				}
				break;

			case 'addLink' :
				var result = $.evalJSON(data.primaryMethods[item].RESULT);
				break;

			case 'bonusLink' :
				var result = $.evalJSON(data.primaryMethods[item].RESULT);
				break;

			case 'replaceLink' :
				var result = $.evalJSON(data.primaryMethods[item].RESULT);
				break;

			default : break;
		}
	}

	for(var item in data.methods) {
		switch(item) {
			case 'getSummaryInfo' :
				var summary = $.parseJSON(data.methods[item].RESULT);
				try { $('#checkout-sidebar-summary-subtotal').html(summary.SUBTOTAL); } catch(e) { $('#checkout-sidebar-summary-subtotal').html('-'); };
				try { $('#checkout-sidebar-summary-shipping').html(summary.SHIPPING); } catch(e) { $('#checkout-sidebar-summary-shipping').html('-'); };
				try { $('#checkout-sidebar-summary-tax').html(summary.TAXES); } catch(e) { $('#checkout-sidebar-summary-tax').html('-'); };
				try { $('#checkout-sidebar-summary-ordertotal').html(summary.TOTAL); } catch(e) { $('#checkout-sidebar-summary-ordertotal').html('-'); };
				try {
					(summary.TAXES != '$0.00') ? $('#checkout-sidebar-summary-tax-container').show() : $('#checkout-sidebar-summary-tax-container').hide();
				} catch(e) {
					$('#checkout-sidebar-summary-tax').html('-err');
					$('#checkout-sidebar-summary-tax-container').hide();
				}
				$('div#checkout-sidebar-summary').fadeTo('fast',1);
				break;

			case 'getCartItems' :
				$('table#checkout-cart').html(data.methods[item].RESULT);
				$('form').find("input[name='quantity']").keydown(function(event) {
					if(event.keyCode == '13') {
						event.preventDefault();

						var obj = $(this).parent().parent();
						var quantity = parseInt($(obj).find("input[name='quantity']").val());
						if(quantity > 20) quantity = 20;

						var oquant = parseInt($(obj).find("input[name='oquant']").val());
						var diff = quantity - oquant;
						var packageId = $(obj).find("input[name='packageid']").val();
						var itemId = $(obj).find("input[name='itemid']").val();
						var sku = $(obj).find("input[name='sku']").val();
						var updateQuantity = parseInt(diff) ? parseInt(oquant + diff) : quantity;
						var data = { packageid:packageId, itemid:itemId, quantity:updateQuantity };
						Broadway.shoppingCart.dispatch({
							primaryMethods: { changeQuantity:data },
							methods: {
								getCartItems: { },
								getSummaryInfo: { },
								getDontMissContent: { },
								getUpSellContent: { }
							}
						});

						var skus = '';
						var z = diff;
						if(z < 0) z = z * -1;		// for IE 7 bug
						for(var i=0; i < z; i++) skus += (';' + sku);
						if(skus && (typeof(s) != 'undefined')) {
							s.pageName = 'ShoppingCart';
							s.events = (parseInt(diff) > 0) ? 'scAdd' : 'scRemove';
							s.products = skus;
							try { void(s.t()); } catch(e) { ; };
						}
					}
				});

				$('img[name="itemDec"]').click(function() {
					var obj = $(this).parent().parent();
					var diff = -1;
					var quantity = parseInt($(obj).find("input[name='quantity']").val());
					if(quantity > 20) quantity = 20;

					var oquant = parseInt($(obj).find("input[name='oquant']").val());
					var packageId = $(obj).find("input[name='packageid']").val();
					var itemId = $(obj).find("input[name='itemid']").val();
					var sku = $(obj).find("input[name='sku']").val();
					var price = $(obj).find("input[name='price']").val();
					var updateQuantity = parseInt(diff) ? parseInt(oquant + diff) : quantity;
					var data = { packageid:packageId, itemid:itemId, quantity:updateQuantity };
					Broadway.shoppingCart.dispatch({
						primaryMethods: { changeQuantity:data },
						methods: {
							getCartItems: { },
							getSummaryInfo: { },
							getDontMissContent: { },
							getUpSellContent: { }
						}
					});

					var skus = '';
					if(typeof(s) != 'undefined') {
						skus = ';' + sku + ';' + '1' + ';' + price;
						s.pageName = 'ShoppingCart';
						s.events = 'scRemove';
						s.products = skus;
						try { void(s.t()); } catch(e) { ; };
					}
				});

				$('img[name="itemInc"]').click(function() {
					var obj = $(this).parent().parent();
					var diff = 1;
					var quantity = parseInt($(obj).find("input[name='quantity']").val());
					if(quantity > 20) quantity = 20;

					var oquant = parseInt($(obj).find("input[name='oquant']").val());
					var packageId = $(obj).find("input[name='packageid']").val();
					var itemId = $(obj).find("input[name='itemid']").val();
					var sku = $(obj).find("input[name='sku']").val();
					var price = $(obj).find("input[name='price']").val();
					var updateQuantity = parseInt(diff) ? parseInt(oquant + diff) : quantity;
					var data = { packageid:packageId, itemid:itemId, quantity:updateQuantity };
					Broadway.shoppingCart.dispatch({
						primaryMethods: { changeQuantity:data },
						methods: {
							getCartItems: { },
							getSummaryInfo: { },
							getDontMissContent: { },
							getUpSellContent: { }
						}
					});
					var skus = '';
					if(typeof(s) != 'undefined') {
						skus = (';' + sku + ';' + '1' + ';' + price);
						s.pageName = 'ShoppingCart';
						s.events = 'scAdd';
						s.products = skus;
						try { void(s.t()); } catch(e) { ; };
					}
				});

				$('span[name="itemRemove"]').click(function() {
					var obj = $(this).parent().parent();
					var oquant = parseInt($(obj).find("input[name='oquant']").val());
					var packageId = $(obj).find("input[name='packageid']").val();
					var itemId = $(obj).find("input[name='itemid']").val();
					var sku = $(obj).find("input[name='sku']").val();
					var price = $(obj).find("input[name='price']").val();
					var data = { packageid:packageId, itemid:itemId, quantity:0 };
					Broadway.shoppingCart.dispatch({
						primaryMethods: { changeQuantity:data },
						methods: {
							getCartItems: { },
							getSummaryInfo: { },
							getDontMissContent: { },
							getUpSellContent: { }
						}
					});

					var skus = '';
					var z = oquant;
					if(z < 0) z = z * -1;
					for(var i=0; i < z; i++) skus += (';' + sku + ';' + '1' + ';' + price);

					if(skus && (typeof(s) != 'undefined')) {
						s.pageName = 'ShoppingCart';
						s.events = 'scRemove';
						s.products = skus;
						try { void(s.t()); } catch(e) { ; };
					}
				});

				$('li.cartline-items a').click(function() {
					var data = { bvIndex:$(this).attr('bvIndex') };
					switch($(this).attr('linkType')) {
						case 'addLink' :
							Broadway.shoppingCart.dispatch({ primaryMethods:{ addLink:data }, methods:{ getCartItems:{ }, getSummaryInfo:{ }, getDontMissContent:{ }, getUpSellContent:{ }}});
							break;
						case 'bonusLink' :
							Broadway.shoppingCart.dispatch({ primaryMethods:{ bonusLink:data }, methods:{ getCartItems:{ }, getSummaryInfo:{ }, getDontMissContent:{ }, getUpSellContent:{ }}});
							break;
						case 'replaceLink' :
							Broadway.shoppingCart.dispatch({ primaryMethods:{ replaceLink:data }, methods:{ getCartItems:{ }, getSummaryInfo:{ }, getDontMissContent:{ }, getUpSellContent:{ }}});
							break;
						default : break;
					}
				});

				$('div.spinner-loader').hide();
				$('table#checkout-cart').fadeTo('fast',1);
				break;

			case 'getDontMissContent' :
				$('div#checkout-cart-dontmiss').html(data.methods[item].RESULT);
				$('div.checkout-cart-offers a').click(function() {
					if(typeof(s) != 'undefined') {
						var skus = ';' + $(this).attr('sku') + ',;dummy;;;evar15=' + $(this).attr('sku');
						s.pageName = 'ShoppingCart';
						s.events = 'scAdd,event10';
						s.products = skus;
						try { void(s.t()); } catch(e) { ; };
					}

					var data = { bvIndex:$(this).attr('bvIndex') };
					switch($(this).attr('linkType')) {
						case 'addLink' :
							Broadway.shoppingCart.dispatch({ primaryMethods:{ addLink:data }, methods:{ getCartItems:{ }, getSummaryInfo:{ }, getDontMissContent:{ }, getUpSellContent:{ }}});
							break;
						case 'bonusLink' :
							Broadway.shoppingCart.dispatch({ primaryMethods:{ bonusLink:data }, methods:{ getCartItems:{ }, getSummaryInfo:{ }, getDontMissContent:{ }, getUpSellContent:{ }}});
							break;
						case 'replaceLink' :
							Broadway.shoppingCart.dispatch({ primaryMethods:{ replaceLink:data }, methods:{ getCartItems:{ }, getSummaryInfo:{ }, getDontMissContent:{ }, getUpSellContent:{ }}});
							break;
						default : break;
					}
				});
				break;

			case 'getUpSellContent' :
				$('div#checkout-cart-upsell').html(data.methods[item].RESULT);
				$('div.checkout-cart-upsell-add a').unbind('click');
				$('div.checkout-cart-upsell-add a').click(function() {
					if(typeof(s) != 'undefined') {
						var skus = ';' + $(this).attr('sku') + ',;dummy;;;;evar15=' + $(this).attr('sku');
						s.pageName = 'ShoppingCart';
						s.events = 'scAdd,event5';
						s.products = skus;
						try { void(s.t()); } catch(e) { ; };
					}

					var data = { packageid:$(this).attr('packageId'), itemid:$(this).attr('itemId'), quantity:1 };
					Broadway.shoppingCart.dispatch({
						primaryMethods: { changeQuantity:data },
						methods: {
							getCartItems: { },
							getSummaryInfo: { },
							getDontMissContent: { },
							getUpSellContent: { }
						}
					});
				});
				break;

			case 'getPromoCodes' :
				$('div.promos').html(data.methods[item].RESULT);
				$('div.discountCode a').unbind('click');
				$('div.discountCode a').click(function() {
					var data = { promocode:$(this).attr('promocode') };
					$(this).parent().parent().remove();
					Broadway.shoppingCart.dispatch({
						primaryMethods: { removePromo:data },
						methods: {
							getCartItems:{ },
							getSummaryInfo:{ },
							getUpSellContent:{ },
							getDontMissContent:{ },
							getPromoCodes:{ }
						}
					});
				});

				$('input#promocode').focus(function() { $('input#promocode').val(''); $('div.noPromo').hide(); });
				break;

			default:break;
		}
	}
	Broadway.shoppingCart.unDoFades(data);
};

Broadway.shoppingCart.doFades = function(data) {
	$('div.noPromo').hide();
	$("#header-shopping-cart").fadeOut('fast');

	for(var item in data.primaryMethods) {
		switch(item) {
			case 'getSummaryInfo' :
				$('div#checkout-sidebar-summary').fadeTo('fast',0.5);
				Broadway.shoppingCart.clearSummaryInfo();
				break;

			case 'getCartItems' :
				$('table#checkout-cart').fadeTo('fast',0.5);
				break;

			case 'getDontMissContent' :
				$('div#checkout-cart-dontmiss').fadeTo('fast',0.5);
				break;

			case 'getUpSellContent' :
				$('div#checkout-cart-upsell').fadeTo('fast',0.5);
				break;

			case 'getPromoCodes' :
				$('div.promos').fadeTo('fast',0.5);
				break;

			case 'changeQuantity' :
				$("#header-shopping-cart").fadeOut('fast');
				Broadway.showSpinner($('table#checkout-cart')[0],parseInt($('table#checkout-cart').width()/2)-10,parseInt($('table#checkout-cart').height()/2)-10);
				break;
			default : break;
		}
	}

	for(var item in data.methods) {
		switch(item) {
			case 'getSummaryInfo' :
				$('div#checkout-sidebar-summary').fadeTo('fast',0.5);
				Broadway.shoppingCart.clearSummaryInfo();
				break;

			case 'getCartItems' :
				$('table#checkout-cart').fadeTo('fast',0.5);
				break;

			case 'getDontMissContent' :
				$('div#checkout-cart-dontmiss').fadeTo('fast',0.5);
				break;

			case 'getUpSellContent' :
				$('div#checkout-cart-upsell').fadeTo('fast',0.5);
				break;

			case 'getPromoCodes' :
				$('div.promos').fadeTo('fast',0.5);
				break;

			case 'changeQuantity' :
				$("#header-shopping-cart").fadeOut('fast');
				Broadway.showSpinner($('table#checkout-cart')[0],parseInt($('table#checkout-cart').width()/2)-10,parseInt($('table#checkout-cart').height()/2)-10);
				break;
			default : break;
		}
	}
};

Broadway.shoppingCart.unDoFades = function(data) {
	for(var item in data.primaryMethods) {
		switch(item) {
			case 'getSummaryInfo' :
				$('div#checkout-sidebar-summary').fadeTo('fast',1);
				break;

			case 'getCartItems' :
				$('table#checkout-cart').fadeTo('fast',1);
				break;

			case 'getDontMissContent' :
				$('div#checkout-cart-dontmiss').fadeTo('fast',1);
				break;

			case 'getUpSellContent' :
				$('div#checkout-cart-upsell').fadeTo('fast',1);
				break;

			case 'getPromoCodes' :
				$('div.promos').fadeTo('fast',1);
				break;

			default : break;
		}
	}

	for(var item in data.methods) {
		switch(item) {
			case 'getSummaryInfo' :
				$('div#checkout-sidebar-summary').fadeTo('fast',1);
				break;

			case 'getCartItems' :
				$('table#checkout-cart').fadeTo('fast',1);
				break;

			case 'getDontMissContent' :
				$('div#checkout-cart-dontmiss').fadeTo('fast',1);
				break;

			case 'getUpSellContent' :
				$('div#checkout-cart-upsell').fadeTo('fast',1);
				break;

			case 'getPromoCodes' :
				$('div.promos').fadeTo('fast',1);
				break;

			default : break;
		}
	}
	$("#header-shopping-cart").fadeIn('fast');
};

Broadway.shoppingCart.clearSummaryInfo = function() {
	try { $('#checkout-sidebar-summary-subtotal').html('-'); } catch(e) {  };
	try { $('#checkout-sidebar-summary-shipping').html('-'); } catch(e) {  };
	try { $('#checkout-sidebar-summary-tax').html('-'); } catch(e) {  };
	try { $('#checkout-sidebar-summary-ordertotal').html('-'); } catch(e) {  };
	try { $('#checkout-sidebar-summary-tax').html('-'); } catch(e) { };
};

Broadway.shoppingCart.goToCheckout = function(obj) {
	if(Broadway.shoppingCart.count > 0) {
		Broadway.showSpinner(obj,-38,-3);
		document.location.href='/Checkout';
	}
}

Broadway.shoppingCart.updateCartCounter = function(count) {
	Broadway.shoppingCart.count = parseInt(count.replace('[','').replace(']',''));
	$("#header-cart-qty").html(count);
	if(Broadway.shoppingCart.count > 0) {
		$('#checkout-sidebar-checkout img').fadeTo('normal',1);
		$('#checkout-sidebar-checkout img').css('cursor','pointer');
	} else {
		$('#checkout-sidebar-checkout img').fadeTo('normal',0.5);
		$('#checkout-sidebar-checkout img').css('cursor','auto');
	}
};
