﻿var AddToCartJsonUrl = '/addToCart.aspx?ref=json';

// overwrite all add to cart links with the overlay calls when the page is loaded
$(document).ready(function(){
    var links = $("a");
    var href;
    var index;
    var queryString;
    var qsValueArray;
    var qsArray;
    var onClick;
    var pid;
    var gid;
    var rempid;
    var giftNow;
    var buyNow;
    var removeAll;
    
    // loop through list of links
    jQuery.each(links, function(i, link){
        href = $(link).attr("href");
        if (href && href.toLowerCase().indexOf("addtocart.aspx") > -1)
        {
            pid = gid = rempid = 0;
            giftNow = buyNow = removeAll = null;
            
            // look for querystring
            index = href.indexOf("?");
            queryString = href.substring(index + 1);
            qsArray = queryString.split("&");
            
            // go through each key/value pair
            for(var i = 0; i < qsArray.length; i++)
            {
                qsValueArray = qsArray[i].split("=");
                
                // assign values based on querystring
                switch (qsValueArray[0].toLowerCase())
                {
                    case "pid": 
                        pid = qsValueArray[1]; 
                        break;
                    case "gid":
                        gid = qsValueArray[1];
                        break;
                    case "rempid":
                        rempid = qsValueArray[1];
                        break;
                    case "giftnow":
                        giftNow = qsValueArray[1];
                        break;
                    case "buynow":
                        buyNow = qsValueArray[1];
                        break;
                    case "removeall":
                        removeAll = qsValueArray[1];
                        break;
                }
            }
            
            // replace href in links with javascript
            if (!(giftNow || buyNow || removeAll))
            {
                if (rempid > 0)
                    $(link).attr("href", "javascript:removeProductFromCart(" + rempid + ");");    
                else if (gid > 0 && pid > 0)
                    $(link).attr("href", "javascript:addProductToCart(" + pid + ", " + gid + ");");
                else if (pid > 0)
                    $(link).attr("href", "javascript:addProductToCart(" + pid + ");");
            }
        }
    })
})

function getData()
{
    showLoading();
    $.getJSON(AddToCartJsonUrl, showData);
}

function addProductToCart(productID)
{
    showLoading();
    $.getJSON(AddToCartJsonUrl, {pid: productID}, overlayShowData);
}

function addProductToCart(productID, genreID)
{
    showLoading();
    $.getJSON(AddToCartJsonUrl, {pid: productID, gid: genreID}, overlayShowData);
}

function removeProductFromCart(productID)
{
    $.getJSON(AddToCartJsonUrl, {rempid: productID}, showData);
}

function removeProductFromOverlay(productID)
{
    $("#TB_window").fadeOut("fast",function(){$('#TB_window,#TB_overlay,#TB_HideSelect').trigger("unload").unbind().remove();});
    showLoading();
    
    $.getJSON(AddToCartJsonUrl, {rempid: productID}, overlayShowData);
}

function overlayShowData(jsonData)
{
    showData(jsonData);
    
    var height = $("#cartOverlayWrapper").height() + 10;
    
    // display overlay
    tb_callshow("", "#TB_inline?width=584&height=" + height + "&inlineId=cartOverlayWrapper", "");
}

function showData(jsonData)
{
    var productCount = jsonData.Products.length;
    var info = $("#cartOverlayDiv");
	var cartTotalDiv = $("#cartTotalDiv");
    var cartMiniDiv = $("#cartMiniDiv");
	var cartMaxItems = $("#cartMaxItems");
	var cartOverlayNoItems = $("#cartOverlayNoItems");
	var cartOverlayDP = $("#cartOverlayDP");
	var noItemsDiv = $("#noItemsDiv");
	var cartOverlayRight = $(".cartOverlayRight");
    var maxItemsDiv;
    var cartProductsDiv;
    
    
    // clear overlay contents
    info.html("");
    
    // clear cartmini html
    cartMiniDiv.html("");
	
    if (productCount == 0)
    {
        noItemsDiv.html('<div class="noitems">Your shopping cart is empty</div>');
        noItemsDiv.show();
        cartOverlayNoItems.show();
        cartMiniDiv.hide();
        cartOverlayDP.hide();
        cartTotalDiv.hide();
        cartOverlayRight.hide();
    }
    else
    {
        noItemsDiv.hide();
        cartOverlayNoItems.hide();
        cartMiniDiv.show();
		cartTotalDiv.show();
		cartOverlayDP.show();
		
		cartOverlayRight.show();
        
        // create divs for content
        cartMiniDiv.append('<div id="maxItemsDiv"/>');
        cartMiniDiv.append('<div id="cartProductsDiv"/>');
        
        maxItemsDiv = $("#maxItemsDiv");
        cartProductsDiv = $("#cartProductsDiv");
		
		cartOverlayDP.html('<div class="dpro">' +
						   '<div class="one">' +
						   '<img src="/Sites/ubisoft/_img/checkout/overlay/dp_logo.gif" width="265" height="39" alt="Download Protection" />' +
						   '<div class="link">' +
						   '<a href="javascript:DP();">what is this?</a>' +
						   '</div>' +
						   '</div>' +
						   '<div class="two">' +
						   '<img src="/Sites/ubisoft/_img/checkout/overlay/free.gif" width="57" height="32" alt="FREE" />' +
						   '</div>' +
						   '<div class="price">' +
						   '$0.00' +
						   '</div>' +
						   '</div>');

					      
		// cartmini subtotal section
        cartMiniDiv.append('<div class="subtotalcontainer">' +
		                   '<div class="subtotal"></div>' +
	                       '</div>');
	                       
	    // cartmini checkout button
	    cartMiniDiv.append('<div class="checkoutbtn">' +
		                   '<a href="/checkout.aspx" class="chkOut"><img src="/Sites/ubisoft/_img/right/shoppingcart_chkout_btn.gif" width="198" height="20" alt="Checkout and Download Now" border="0" /></a>' +
	                       '</div>');

    }

    // Generate HTML for each product
    for(var x = 0; x < productCount; x++)
    {    


		var couponList = jsonData.Products[x].Coupons;
		var couponsString = "";
		if(couponList !=null)
		{
			var couponsCount = couponList.length ;
	    
			for(var y = 0; y < couponsCount; y++)
			{
				couponsString = couponsString + ('<div class="promoprice_overlay">' + jsonData.Products[x].Coupons[y] + '</div>');
						
			}
		}         
		
		var priceDiv = '<div class="cartOverlayPrice">' +
				    jsonData.Products[x].Price  +
				    '</div>';
		if(jsonData.Products[x].Price != jsonData.Products[x].OriginalPrice)
		{
			priceDiv = '<div class="OriginalPrice_Overlay">' +
				    jsonData.Products[x].OriginalPrice  +
				    '</div>' + priceDiv;
		}
		
		
        // HTML for Cart Overlay
        info.append('<div id="cartOverlay">' +
				    '<div class="one">' +
				    '<div id="cartOverlayImage">' +
				    '<img src="/images/product/icon/' + jsonData.Products[x].ProductID + '.jpg">' +
				    '</div>' +
				    '<div class="cartOverlayName">' +
				    jsonData.Products[x].Name +
				    '</div>' +
				    couponsString +
				    '</div>' +
				    '<div class="two">' +
				    '1 - <a href="javascript:void(0);" onclick="removeProductFromCart(' + jsonData.Products[x].ProductID + ');">remove</a>' +
				    '</div>' +
				    '<div class="three2">' +
				     priceDiv +
				    '</div>' +
				    '</div>');
			

          
        // HTML for CartMini
        cartProductsDiv.append('<div class="productname2">' +
                               '<a href="/product.aspx?pid=' + jsonData.Products[x].ProductID + '">' + jsonData.Products[x].Name + '</a>');
                               


	
    
		//Hide if the price matches
		if(jsonData.Products[x].Price != jsonData.Products[x].OriginalPrice)
		{
			  cartProductsDiv.append( '<div class="original_padding">' +
			                          '<div class="originalprice_mini">' + jsonData.Products[x].OriginalPrice + '</div></div>');  
    
		}
		
		                
    
		
		cartProductsDiv.append( '<div class="original_padding2">' +
		                        '<div class="price">' + jsonData.Products[x].Price + '</div>' +
		                        '<div><a href="javascript:removeProductFromCart(' + jsonData.Products[x].ProductID + ');" class="remove">remove</a></div>' +
								'<div class="sc_dots">' + '</div></div>');
    
    }
    
    
	        
    $(".subtotal").html("Subtotal: " + jsonData.Subtotal);
    
    cartTotalDiv.html('<div class="one">' +
				      'Subtotal:' +
				      '</div>' +
				      '<div class="sub">' +
				      jsonData.Subtotal +
				      '</div>');
				      		
    hideLoading();
    try
    {
        setCartOverlayEvents();
    }
    catch(err)
    {
    }
}

function showLoading()
{
    fadeBackground();
    $("body").append("<div id='TB_load'><img src='"+imgLoader.src+"' /></div>"); //add loader to the page
	$('#TB_load').show(); //show loader
}

function hideLoading()
{
    $('#TB_load').remove();
}

function fadeBackground()
{
    if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
		$("body","html").css({height: "100%", width: "100%"});
		$("html").css("overflow","hidden");
		if (document.getElementById("TB_HideSelect") === null) {//iframe to hide select elements in ie6
			$("body").append("<iframe id='TB_HideSelect'></iframe><div id='TB_overlay'></div><div id='TB_window'></div>");
			$("#TB_overlay").click(tb_remove);
		}
	}else{//all others
		if(document.getElementById("TB_overlay") === null){
			$("body").append("<div id='TB_overlay'></div><div id='TB_window'></div>");
			$("#TB_overlay").click(tb_remove);
		}
	}
    if(tb_detectMacXFF()){
		$("#TB_overlay").addClass("TB_overlayMacFFBGHack");//use png overlay so hide flash
	}else{
		$("#TB_overlay").addClass("TB_overlayBG");//use background and opacity
	}
}

function DP()
{
    window.open('/Sites/ubisoft/_includes/dp.htm', 'dp', 'width=430, height=280, resizable=no, scrollbars=no, status=no, toolbar=no'); 
}

function setCartOverlayEvents()
{
    urchinTracker("/atc_overlay");
    
    $("#TB_overlay").click(function() {cartOverlayClose("/atc_overlay/clickout")});
    $("#cartOverlay_close").click(function() {cartOverlayClose("/atc_overlay/close")});
    $("#cartOverlay_continue").click(function() {cartOverlayClose("/atc_overlay/continue")});
    $("#cartOverlay_checkout").click(function() {cartOverlayClose("/atc_overlay/checkout")});
    
    document.onkeyup = function(e)
    { 	
		if (e == null) { // ie
			keycode = event.keyCode;
		} else { // mozilla
			keycode = e.which;
		}
		if(keycode == 27){ // close
			cartOverlayClose("/atc_overlay/esc");
		}	
	};
}

function cartOverlayClose(path)
{
    urchinTracker(path);
    tb_remove();
}
