var cartajaxspinner = '<img class="ajax-spinner" src="/images/ajaxspinners/circleball.gif" />';
var ajaxBlockedTmp = null;
var addLOSLastSubmitted = null;
var cartdata = null;
var reloadCartData = false;

var docreff = (''+document.referrer);
//reload cartdata if referrer is not www.mycricket.com
if (docreff.indexOf('://www.mycricket.com/') == -1 && docreff.indexOf('://test.mycricket.com/') == -1) {
	reloadCartData = true;
}

$(function() {
	
	if ($.cookie('data')) {
		//The data cookie exists, but there is no cart. This can
		//happen if the cart cookie was deleted from myaccount pages.
		//so expire all cart related cookies.
		eval ('tcartdata = ' + $.cookie('data'));
		
		if (reloadCartData || (tcartdata.items > 0 && !$.cookie('MyCricketCartID')) 
	  		|| ($.cookie('LocationInfo') && (tcartdata.lochash != $.cookie('LocationInfo')))
	  		|| (!$.cookie('LocationInfo') && (tcartdata.lochash != ''))) 
		{
	  		reloadCartData = true;
		} else {
			cartdata = tcartdata;
			reloadCartData = false;
	  	}
	} else if ($.cookie('MyCricketCartID')) {
		reloadCartData = true;
	} else {
		reloadCartData = true;
	}
	
	if (reloadCartData && cartDataService != "") {
		$.ajax(
			{
				type: 'POST',
				url: cartDataService,
				dataType: 'json',
				success: function (jsonobj) {
					cartdata = jsonobj;
					displayMiniCart(cartdata);
					if (typeof(displayLocation) != 'undefined') displayLocation(cartdata);
					if (typeof(initLivePersonVars) != 'undefined') initLivePersonVars(cartdata);
				}
			}
		);
	} else if (cartdata != null) {
		displayMiniCart(cartdata);
		if (typeof(displayLocation) != 'undefined') displayLocation(cartdata);
		if (typeof(initLivePersonVars) != 'undefined') initLivePersonVars(cartdata);
	} else {
		if (typeof(initLivePersonVars) != 'undefined') initLivePersonVars(null);
	}
	
	//Attach zipcode check ajax validation.
	$('a.ajax-shop').click(
			function(event) {
				var elem = this;

				event.preventDefault();

				$.ajax(
				{
					type: 'POST',
					url: locationCheckService,
					dataType: 'json',
					success: function (data) {
						var formButton = null;
						if (!data.islocationset) {
						    popupZipForm(data.message, elem.href);
					   } else {
						   document.location = elem.href;
					   }
					},
					error: function(request, status, errorThrown) {
						alert(status + ' ' + locationCheckService);
					}
				});
	});

	$('.addtocart-submit').click(
			function( event ) {
				event.preventDefault();
				submitAddToCart(this, $(this).parents('form'));
			}
	);

	$('.inline-zip-form').ajaxForm(
			{
				dataType: 'json',
				beforeSubmit: function(formData, jqForm, options) {
					if (ajaxBlocked($(jqForm).find('button'))) return false;
				},
				success: function(data) {
					if (data.islocationset || data.doRedirect) {
					  if(data.redirect) {
					    document.location = data.redirect;
					  } else {
						  document.location = document.location;
					  }
					} else {
						ajaxUnblock();

						$('#lightbox-container-content').html(
								'<h3 class="question-title">We\'re sorry.</h3>'+data.message
						);
						$('#lightbox-container').addClass( 'popup-zipcode' );
						$('#lightbox-container-content p').addClass('copy');
						$('#lightbox-container-content h4').remove();

						hbxFailedZip(this.data, 'zipsearch_community_failed');

						$('#lightbox-container').jqmShow();
					}
				}

			}
	);

//	$('#minicart-wrapper').load( minicartService, function() {
//		// Assemble the cast
//		var minicart = $('#minicart');
//		var minicart_inner_wrapper = minicart.find('#minicart-inner-wrapper');
//		var minicart_toggles = minicart.find('.minicart-toggle').find('a');
//		var minicart_toggle_top = minicart.find('#minicart-toggle-top').find('a');
//		var minicart_package_toggles = minicart_inner_wrapper.find('.minicart-package-toggle').find('a');
//		var minicart_packages = minicart_inner_wrapper.find('.minicart-package');
//
//		// Toggle open/closed minicart
//		minicart_toggles.click(function(){
//			if (minicart.hasClass('minicart-opened')) {
//				// For a smooth transition, slideUp first on close...
//				minicart_inner_wrapper.slideUp('slow', function(){
//					minicart
//						.removeClass('minicart-opened')
//						.addClass('minicart-closed');
//					minicart_toggle_top.text("[+] show cart summary");
//				});
//			} else {
//				// ... and slideDown last on open.
//				minicart
//					.removeClass('minicart-closed')
//					.addClass('minicart-opened');
//				minicart_toggle_top.text("[-] hide cart summary");
//				minicart_inner_wrapper.slideDown('slow');
//			}
//
//			return false;
//		});
//
//		// Toggle open/closed minicart-packages
//		minicart_package_toggles.click(function(){
//			// First, close all packages.
//			minicart_packages.slideUp();
//			minicart_package_toggles.find('span').text('+');
//
//			// Then, toggle this package.
//			var my_package = $(this).parent().next('.minicart-package');
//			var state = $(this).find('span');
//
//			if(my_package.css('display') === 'none') {
//				my_package.slideDown();
//				state.text('-');
//			} else {
//				my_package.slideUp();
//				state.text('+');
//			}
//
//			return false;
//		});
//	});
});

function hbxFailedZip(data, type) {
	var result = data.split(/zip=([\d]{5})/i);
	if(result) {
		var ev1 = new _hbEvent('search');
		ev1.keywords = result[1] ? result[1] : '';
		ev1.results = 0;
		ev1.attt1 = 0;
		ev1.attr2 = type;
		ev1.attr3 = 0;
		_hbSend();
	}

}


function nextStep(clicked) {
	$.ajax(
			{
				type: 'POST',
				url: nextStepService,
				dataType: 'json',
				beforeSend: function(request) {
					if (ajaxBlocked(clicked)) return false;
				},
				success: function (jsonobj) {
					document.location = jsonobj.nextURL;
				}
			}
		);
}

function addLOSItem(clicked) {
	submitAddToCart(clicked,  $(clicked).parents('form'));
	return false;
}

function submitAddToCart(clicked, jqForm) {
	jqForm.ajaxSubmit({
		dataType: 'json',
		beforeSubmit: function(formData, jqForm, options) {
			if (ajaxBlocked(clicked)) return false;
			addLOSLastSubmitted = jqForm;
		},
		success: function(data) {
			if (data.success) {
				if (data.cartitem && (typeof(data.cartitem) == 'object') && (typeof('lpAddVars') != 'undefined')) {
					if (data.cartitem.itemType == 'phone') {
						lpAddVars('page', 'lpPhoneType', data.cartitem.itemName);
					} else if (data.cartitem.itemType == 'plan') {
						lpAddVars('page', 'lpPlanType', data.cartitem.itemName);
					}
				} 
				document.location = data.nextstep;
			} else {
				ajaxUnblock();
				$('.addtocart-submit').click(
						function( event ) {
							event.preventDefault();
							submitAddToCart(this, $(this).parents('form'));
						}
				);
				$('#lightbox-container-content').html(data.message);
				$('#lightbox-container').addClass( 'popup-package-conflict' );
				$('#lightbox-container').jqmShow();
			}
		}
	});
}


function popupZipForm(zipformcontent, successurl) {
	$('#lightbox-container-content').html(zipformcontent);
	$('#lightbox-container').addClass( 'popup-zipcode' );

	$('#form-zipentry').ajaxForm(
			{
				dataType: 'json',
				beforeSubmit: function(formData, jqForm, options) {
					if (ajaxBlocked($(jqForm).find('button'))) return false;
				},
				success: function(data) {
					if (data.islocationset) {
						if (successurl != '') {
							document.location = successurl;
						} else {
							//Success url is empty. So refresh the
							document.location = document.location;
						}
					} else {
						ajaxUnblock();
						$('#zipformerror').fadeOut('normal', function() {
							$('#form-zipentry').addClass( 'popup-zipcode-error' );
							$('#zipformerror').html(data.message);
							$('#zipformerror').fadeIn();
						});

						hbxFailedZip(this.data, 'zipsearch_shop_failed');
					}
				}

			}
		);

  $('#lightbox-container').jqmShow();
}

function replaceLOSItem(clicked, packageid) {
	$(addLOSLastSubmitted[0]['addmode']).attr({value : packageid});
	submitAddToCart(clicked, addLOSLastSubmitted);
}

function newLOSItem(clicked, packagetype) {
	$(addLOSLastSubmitted[0]['packagetype']).attr({value : packagetype});
	$(addLOSLastSubmitted[0]['addmode']).attr({value : 'append'});
	submitAddToCart(clicked, addLOSLastSubmitted);
}

function setIntention(clicked, packagetype) {
	$(addLOSLastSubmitted[0]['packagetype']).attr({value : packagetype});
	appendConfirmStack(addLOSLastSubmitted, 'confirmintention');
	submitAddToCart(clicked, addLOSLastSubmitted);
}

function confirmFringeAddToCart(clicked) {
	appendConfirmStack(addLOSLastSubmitted, 'fringezip');
	submitAddToCart(clicked, addLOSLastSubmitted);
}

function appendConfirmStack(jqForm, confirmAction) {
	var confirmstack = $(jqForm[0]['confirmstack']).attr('value');
	confirmstack += (confirmAction + ',');
	$(jqForm[0]['confirmstack']).attr({value : confirmstack});
}

function ajaxBlocked(ajaxButton) {
	if ($('.ajax-spinner').length > 0) return true;
	ajaxBlockedTmp = $(ajaxButton).replaceWith(cartajaxspinner);
}

function ajaxUnblock() {
	$.each(ajaxBlockedTmp, function(intIndex, objValue) {
		$('.ajax-spinner').replaceWith(objValue);
	});
}

function expireCart() {
	var rdi_cart_date = new Date();
	rdi_cart_date.setTime(rdi_cart_date.getTime()+(-7*24*60*60*1000));
	var rdi_cart_expires = "; expires="+rdi_cart_date.toGMTString();
	document.cookie = "MyCricketCartID="+rdi_cart_expires+"; path=/; domain=.mycricket.com";
	document.cookie = "data="+rdi_cart_expires+"; path=/";
	document.cookie = "ShopPhonesNav="+rdi_cart_expires+"; path=/";
	document.cookie = "ShopPlansNav="+rdi_cart_expires+"; path=/";
	document.cookie = "ShopBroadbandNav="+rdi_cart_expires+"; path=/";
	document.cookie = "ShopBroadbandPlansNav="+rdi_cart_expires+"; path=/";
	document.cookie = "ShopFamilyPlansNav="+rdi_cart_expires+"; path=/";
	document.cookie = "ShopAccessoriesNav="+rdi_cart_expires+"; path=/";
}



