if($j.browser.safari){
	include("/js/jquery/plugins/jquery.scrollTo.js");
}

$j(window).resize(function(){
	hideMiniCart()
});

function isArray(a) {
    return isObject(a) && a.constructor == Array;
}
function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}
function isFunction(a) {
    return typeof a == 'function';
}
function isString(a){
	return typeof a=="string";
}
function addItemToCart(form, responseType) {
//responseType  0=do nothing, 1=displaymsg, 2=showminicart, 3=lastitemonly
    if($j('#skuvalue2').get(0) && $j('#skuvalue2').val() == '0') {
  	  	alert('Please select a size to continue.');
    } else {
    	var url = "/AJAXUtil";
	    //----------TODO: Change the appropiate URL parameters------------
		//var parms = "actn=addtocartbase&addajaxitem=50&ITMSUF=e2&itemtype=0&sackname=Me&shipto=Me&IID=" + itemID + "&QTY=" + qty;
		//parms = parms + "&itemskuid=" + itemSKU;
	    var parms = 'addajaxitem=50&' + getFormData(form.name, '', '', 'false', 'true');
	    if (hasPzn){
		if (pznCost>0){
			//alert(pznCost);
			parms = parms + 'PZNCOST=' + pznCost;
		}
	   }
		toggleAddToCartButtons();
		switch (responseType){
			case 0:
				$j.ajax({type:"GET", 
						url:url, 
						data:parms, 
						complete:function(originalRequest) {
							refreshPersonalization();
							toggleAddToCartButtons();
							if (originalRequest.status == 200) {
								if (originalRequest.responseXML) {
									$j("#carttotal").fadeOut("slow", function(){
										$j("#carttotal").html(getCartCountMessage(originalRequest)); 
										$j("#carttotal").fadeIn("slow", function() { updateMiniCartContents(); });
										$j.get('/jsp/campaign/afterAjaxAddToCart.jsp', function(data){ eval(data); });
									});
	        					}
							} else {
								doMiniCartMsg(originalRequest.status + ": " + originalRequest.statusText, 5000);
							}
						}});	
				break;
			case 1:
				$j.ajax({type:"GET", 
						url:url, 
						data:parms, 
						complete:function(originalRequest) {
							toggleAddToCartButtons();
							if (originalRequest.status == 200) {
								if (originalRequest.responseXML) {
									doMiniCartMsg(getMessages(originalRequest), 5000);
									$j("#carttotal").fadeOut("slow", function(){
										$j("#carttotal").html(getCartCountMessage(originalRequest)); 
										$j("#carttotal").fadeIn("slow", function() { updateMiniCartContents(); });
										$j.get('/jsp/campaign/afterAjaxAddToCart.jsp', function(data){ eval(data); });
									});
	        					}
							} else {
								doMiniCartMsg(originalRequest.status + ": " + originalRequest.statusText, 5000);
							}
						}});
				break;
			case 2:
				$j.ajax({type:"GET", 
						url:url, 
						data:parms, 
						complete:function(originalRequest) {
							refreshPersonalization();
							toggleAddToCartButtons();
							if (originalRequest.status == 200) {
								if (originalRequest.responseXML) {
									$j("#carttotal").fadeOut("slow", function(){
										$j("#carttotal").html(getCartCountMessage(originalRequest)); 
										$j("#carttotal").fadeIn("slow", function() { updateMiniCartContents();  $j.get('/jsp/campaign/afterAjaxAddToCart.jsp', function(data){  eval(data); });});
										
									});
	        					}
							} else {
								doMiniCartMsg(originalRequest.status + ": " + originalRequest.statusText, 5000);
							}
						}});
				break;
			case 3:
				$j.ajax({type:"GET", 
						url:url, 
						data:parms, 
						complete:function(originalRequest) {
							refreshPersonalization();
							toggleAddToCartButtons();
							if (originalRequest.status == 200) {
								if (originalRequest.responseXML) {
									$j("#carttotal").fadeOut("slow", function(){
										$j("#carttotal").html(getCartCountMessage(originalRequest)); 
										$j("#carttotal").fadeIn("slow", function() { updateMiniCartContents(); showMiniCart(true); setTimeout("hideMiniCart();", 5000); });
										$j.get('/jsp/campaign/afterAjaxAddToCart.jsp', function(data){ eval(data); });
									});
	        					}
							} else {
								doMiniCartMsg(originalRequest.status + ": " + originalRequest.statusText, 5000);
							}
						}});
				break;
			default : 
		}
    }
}

function doMiniCartMsg(msg, delay) {
	$j("#minicart-msg").html(msg);
	$j("#minicart-msg").fadeIn("slow");
	setTimeout("$j('#minicart-msg').fadeOut('slow')", delay);
}
function doMiniCart(){
		$j.ajax({type:"GET", url:"/api/CartSubtotal", async: true, complete:function (originalRequest) {
			if (originalRequest.status == 200) {
				if (originalRequest.responseXML) {
					$j("#carttotal").hide("slow", function(){
													var total = getCartMessages(originalRequest);
													$j("#carttotal").html(total); 
													$j("#carttotal").show("slow", function(){
															if ( $j('#minicartcontentstotal') ){
																$j('#minicartcontentstotal').html(total);
															}
															updateMiniCartContents();
													});
													
												});
								
				}
			}
		}});
}
function updateMiniCartSubTotal(){
		$j.ajax({type:"GET", url:"/api/CartSubtotal", async: false, complete:function (originalRequest) {
			if (originalRequest.status == 200) {
				if (originalRequest.responseXML) {
					var total = getCartMessages(originalRequest);
					$j("#carttotal").html(total);
					if ( $j('#minicartcontentstotal') ){
						$j('#minicartcontentstotal').html(total);
					}
					if (total=='$0.00'){
						$j('#mcart').css('cursor', '');
						document.getElementById('mcart').onclick = function () {};
						$j('#mcart_open').hide();
					} 
				}
			}
		}});
}
function updateCartCountTotal(){
	$j.ajax({type:"GET", url:"/api/CartCountTotal", async: false, complete:function (originalRequest) {
		if (originalRequest.status == 200) {
			if (originalRequest.responseXML) {
				var count = getCartCountMessage(originalRequest);
				if(count != "0 items"){
					$j("#mycart span#carttotal").html(count);
				} else {
					$j("#mycart span#carttotal").html('');
				}
					
			}
		}
	}});
}
function updateMiniCartContents(){
 	if(!$j('#mcart_open').get(0))
 		$j('#header_content').append('<div id="mcart_open"></div>');

	$j.ajax({type:'GET', 
			url:'/jsp/cart/minicart/minicart_contents.jsp', 
			data:'&seed=' + Math.floor ( Math.random ( ) * 10000 + 1 ),
			dataType:'html', 
			async:false, 
			success: function(transport){ 
						$j('#mcart_open').html(transport);
						updateCartCountTotal();
						$j('#minicart-ajax-loader').hide();
						if ($j("#mycart span#carttotal").html() == ''){
							hideMiniCart();
						}
					}
			});
}

function getMessages(req) {
	var message = "";
	var elements = req.responseXML.getElementsByTagName("error");
	if (elements.length > 0) {
		message = "<div class='ajax_message_error'>" + getText(elements) + "</div>";
	}
	elements = req.responseXML.getElementsByTagName("notice");
	if (elements.length > 0) {
		message = message + "<div class='ajax_message_info'>" + getText(elements) + "</div>";
	}
	return message;
}

function getCartMessages(req) {
	var message = "";
	var elements = req.responseXML.getElementsByTagName("cartsubtotal");
	if (elements.length > 0) {
		message = getText(elements);
	}
	return message;
}
function getCartCountMessage(req) {
	var message = "";
	var elements = req.responseXML.getElementsByTagName("cartcount");
	if (elements.length > 0) {
		message = getText(elements);
	}
	return message;
}
function getText(elements) {
	var text = "";
	for (i = 0; i < elements.length; i++) {
		text = text + elements.item(i).firstChild.nodeValue;
		if (i + 1 < elements.length) {
			text = text + "<br/>";
		}
	}
	return text;
}
function updateItemQty(itemkey, qty) {
	$j('#minicart-ajax-loader').show();
	var url = "/api/UpdateCartItemQty";
	var parms = "actn=addtocartbase&itemkey=" + itemkey + "&qty=" + qty;
    
	$j.ajax({type:"GET", async:false, url:url, data:parms, complete:updateMiniCartContents});
}

function removeItem(itemkey, sack) {
	$j('#minicart-ajax-loader').show();
	var url = '/Shop';
	var parms = 'ACTN=40200&itemkey=' + itemkey + '&sack=' + sack;
    
	$j.ajax({type:"GET", async:false, url:url, data:parms, complete:updateMiniCartContents});
}

function showMiniCart(lastItemOnly){
	if($j('#carttotal').html() != '') {
	 	var left = ( ($j(window).width() - $j('#layout').width()) / 2 ) + 588;
		$j('#mcart_open').slideDown('fast');
		$j('#mcart_open').bgiframe();
	}
}

function hideMiniCart(){
	$j('#mcart_open').slideUp('fast');
	if($j.browser.safari){
		$j.scrollTo( 0, 0, {queue:false} );
	}
}

function toggleAddToCartButtons(){
	if ($j('#addtocartbutton')){
		$j('#addtocartbutton').toggle();
	}
	if ($j('#addtocartnotavailable')){
		$j('#addtocartnotavailable').toggle();
	}
	if ($j('#additem-ajax-loader')){
		$j('#additem-ajax-loader').toggle();
	}
}
