﻿//---------------------------------------------
// CartInfoCallback.js 
// Copyright (C) Jetshop AB 2009
//---------------------------------------------
Type.registerNamespace('JetShop.StoreControls'); 

JetShop.StoreControls.CartInfo = function(element)
{
    JetShop.StoreControls.CartInfo.initializeBase(this, [element]);
    
    this._dropDownSucceededHandler = null;
    this._classicSucceededHandler = null;
    this._vatSelectorSucceededHandler = null;
    this._failedHandler = null;
    
    this._type = null;
    this._cartDetailsPage = null;
	this._checkOutPage = null;

	this._cartDetailsPage = null;
	this._startImageUrl = null;
	this._showCartImageUrl = null;
	this._checkoutImageUrl = null;
	this._changeInfoImageUrl = null;
	this._useSecureCheckout = null;
	this._showCartDisabledImageUrl = null;
	this._checkoutDisabledImageUrl = null;
	this._changeUserInfoPageUrl = null;
	this._myInfoImageUrl = null;
	this._myInfoImageToolTip = null;
}

JetShop.StoreControls.CartInfo.prototype = 
{
    initialize : function() 
    {
        // initialize the base
        JetShop.StoreControls.CartInfo.callBaseMethod(this,'initialize');
        
        
		this._dropDownSucceededHandler = Function.createDelegate(this, this._onSucceededDropDown);
		this._classicSucceededHandler = Function.createDelegate(this, this._onSucceededClassic);
		this._vatSelectorSucceededHandler = Function.createDelegate(this, this._onSucceededVATSelector);
		this._failedHandler = Function.createDelegate(this, this._onFailed);
    },
    
    get_Type : function()
    {
		return this._type;
    },
    
    set_Type : function(value)
    {
		this._type = value;
    },
    
    get_CartDetailsPage : function()
    {
		return this._cartDetailsPage;
    },
    
    set_CartDetailsPage : function(value)
    {
		this._cartDetailsPage = value;
    },
    
    get_CheckOutPage : function()
    {
		return this._checkOutPage;
    },
    
    set_CheckOutPage : function(value)
    {
		this._checkOutPage = value;
    },
    
    get_ShowCartImageUrl : function()
    {
		return this._showCartImageUrl;
    },
    
    set_ShowCartImageUrl : function(value)
    {
		this._showCartImageUrl = value;
    },
    
    get_CheckoutImageUrl : function()
    {
		return this._checkoutImageUrl;
    },
    
    set_CheckoutImageUrl : function(value)
    {
		this._checkoutImageUrl = value;
    },
    
    get_StartImageUrl : function()
    {
		return this._startImageUrl;
    },
    
    set_StartImageUrl : function(value)
    {
		this._startImageUrl = value;
    },
    
    get_ChangeInfoImageUrl : function()
    {
		return this._changeInfoImageUrl;
    },
    
    set_ChangeInfoImageUrl : function(value)
    {
		this._changeInfoImageUrl = value;
    },

    get_UseSecureCheckout : function()
    {
		return this._useSecureCheckout;
    },
    
    set_UseSecureCheckout : function(value)
    {
		this._useSecureCheckout = value;
    },
    
    get_ShowCartDisabledImageUrl : function()
    {
		return this._showCartDisabledImageUrl;
    },
    
    set_ShowCartDisabledImageUrl : function(value)
    {
		this._showCartDisabledImageUrl = value;
    },
    
    get_CheckoutDisabledImageUrl : function()
    {
		return this._checkoutDisabledImageUrl;
    },
    
    set_CheckoutDisabledImageUrl : function(value)
    {
		this._checkoutDisabledImageUrl = value;
    },
    
    get_ChangeUserInfoPage : function()
    {
		return this._changeUserInfoPageUrl;
    },
    
    set_ChangeUserInfoPage : function(value)
    {
		this._changeUserInfoPageUrl = value;
    },
    
    get_MyInfoImageUrl : function()
    {
		return this._myInfoImageUrl;
    },
    
    set_MyInfoImageUrl : function(value)
    {
		this._myInfoImageUrl = value;
    },
    
    get_MyInfoImageToolTip : function()
    {
		return this._myInfoImageToolTip;
    },
    
    set_MyInfoImageToolTip : function(value)
    {
		this._myInfoImageToolTip = value;
    },
    
    _reloadPage : function()
    {
        // No label present try reload  cart frame...
		        
	        // Check if frames is used
	        if (top == self)
	        {
	            document.location.reload();    
	        }
	        else
	        {
	            parent.cart.location.reload(); 
	        }
    },
    
    loadCartInfo : function(displayType)
    {
		if (displayType == "standard")
		{
		    var lblShoppingCart = $get(this.get_id() + "_lblShoppingCart");
		    if (lblShoppingCart != "undefined" && lblShoppingCart != null)
		    {
		        JetShop.StoreControls.Services.CartInfoService.LoadCartInfo(this._classicSucceededHandler, this._failedHandler, this.get_id());  
		    }
		    else
		    {
		        this._reloadPage();           
		    } 
		}
		else if (displayType == "dropdown")
		{
		    var ddlItems = $get(this.get_id() + "_ddlItems");       
		    if (ddlItems != "undefined" && ddlItems != null)
		    {
			    JetShop.StoreControls.Services.CartInfoService.GetVATSession();
			    JetShop.StoreControls.Services.CartInfoService.LoadCartInfo(this._dropDownSucceededHandler, this._failedHandler, this.get_id());
	        }
	        else
	        {
	            this._reloadPage();
	        }
		}
		else if (displayType == "VATSelector")
		{
		    var ddlItems = $get(this.get_id() + "_ddlItems");       
		    if (ddlItems != "undefined" && ddlItems != null)
		    {		
			    JetShop.StoreControls.Services.CartInfoService.SetVATSession();
			    JetShop.StoreControls.Services.CartInfoService.GetVATSession();
			    JetShop.StoreControls.Services.CartInfoService.LoadCartInfo(this._vatSelectorSucceededHandler, this._failedHandler, this.get_id());
		    }
		    else
		    {
		        this._reloadPage();
		    }   
		}
    },
    
    _onSucceededDropDown : function(result, controlID, methodName) 
	{
		var ci = $get(controlID);

		// Update sum
		var lblSum = $get(controlID + "_lblSum");
		if (lblSum != "undefined" && lblSum != null)
		{
			if (result.ControlShowSumInclVAT)
			{    
				lblSum.innerHTML = result.DynamicTotalSumWithDiscount;
			}
			else
			{
				lblSum.innerHTML = result.TotalSum;
			}
		}
	    
		// Update dropdown
		var ddlItems = $get(controlID + "_ddlItems");       
		if (ddlItems != "undefined" && ddlItems != null)
		{        
			ddlItems.style.display = "inline";
	        
			var lastOption = 0;
			ddlItems.options.length = 0;
	        
			for (var objIdx = 0; objIdx < result.Items.length; objIdx++)
			{
				lastOption = ddlItems.options.length;
				ddlItems.options[lastOption] = new Option(result.Items[objIdx].Name, result.Items[objIdx].Data + ' - ' + result.Items[objIdx].Quantity.toString());
				if (result.Items[objIdx].IsSelected)
				{
					ddlItems.selectedIndex = objIdx;
				}
			}
		}
	    
		// Update buttons
		var imgShowCart = $get(controlID + "_imgShowCart");
		if (imgShowCart != "undefined" && imgShowCart != null)
		{
			imgShowCart.alt = CartInfoText.ShowCartText; //"Visa varukorgen";
			imgShowCart.title = CartInfoText.ShowCartText; //"Visa varukorgen";
			if (result.Items.length > 0)
			{
				imgShowCart.src = this._showCartImageUrl;
			}
			
			if(result.TotalItems == 0)
			{
			    imgShowCart.src = this._showCartDisabledImageUrl;
			}
		}
	    
		var hlCartInfo = $get(controlID + "_hlCartInfo");
		if (hlCartInfo != "undefined" && hlCartInfo != null)
		{
			hlCartInfo.disabled = false;
			hlCartInfo.href = this._cartDetailsPage;
			
			if(result.TotalItems == 0)
			{
			    hlCartInfo.removeAttribute('href');
			    hlCartInfo.disabled = true;
			}
		}    
	    
		var hlCheckOut = $get(controlID + "_hlCheckOut");
		if (hlCheckOut != "undefined" && hlCheckOut != null)
		{
			hlCheckOut.disabled = false;
			if (this._useSecureCheckout == true)
			{
			    hlCheckOut.href = "javascript:window.top.GoToNavURIPage('" + this._checkOutPage + "', true);";
			}
			else
			{
			    hlCheckOut.href = this._checkoutPage;
			}
			
			if(result.TotalItems == 0)
			{
			    hlCheckOut.removeAttribute('href');
			    hlCheckOut.disabled = true;
			}
		}     

		var imgCheckOut = $get(controlID + "_imgCheckOut");
		if (imgCheckOut != "undefined" && imgCheckOut != null)
		{
			imgCheckOut.alt = CartInfoText.CheckOutText; //"Till kassan";
			imgCheckOut.title = CartInfoText.CheckOutText; //"Till kassan";
			if (result.Items.length > 0)
			{
				//if (result.Items.length == 1)
				//if (result.TotalItems == 1)
				if (result.IsFirstTime)
				{
					imgCheckOut.src = this._checkout_StartImageUrl;
				}
				else
				{
					imgCheckOut.src = this._checkoutImageUrl;
				}
			}
			
			if(result.TotalItems == 0)
			{
			    imgCheckOut.src = this._checkoutDisabledImageUrl;
			}               
		}  
	    
		var lblSum = $get(controlID + "_lblSum");
		if (lblSum != "undefined" && lblSum != null)
		{
			lblSum.style.display = "inline";
		}   
	    
		var lblVATText = $get(controlID + "_lblVATText");
		if (lblVATText != "undefined" && lblVATText != null)
		{
			lblVATText.style.display = "inline";
		}    
	    
		var hlVATSelector = $get(controlID + "_hlVATSelector");
		if (hlVATSelector != "undefined" && hlVATSelector != null)
		{
			hlVATSelector.style.display = "inline";
		}       
	    
		var lblText = $get(controlID + "_lblText");
		if (lblText != "undefined" && lblText != null)
		{
			lblText.innerHTML = CartInfoText.TotalSumText; //"Totalt:&nbsp;";
		}
	    
		if (result.IsAuthenticated)
		{
			var hlLogout = $get(controlID + "_hlLogout");
			if (hlLogout != "undefined" && hlLogout != null)
			{
				hlLogout.disabled = false;
				hlLogout.style.display = "inline";
			}

			var imgUserInfo = $get(controlID + "_imgUserInfo");
			if (imgUserInfo != "undefined" && imgUserInfo != null)
			{
				imgUserInfo.src = this._changeInfoImageUrl;
			}        
		}   
	},

	_onSucceededClassic : function(result, controlID, methodName) 
	{
		var ci = $get(controlID);      
	   
		// Update status
		var lblShoppingCart = $get(controlID + "_lblShoppingCart");
		if (lblShoppingCart != "undefined" && lblShoppingCart != null)
		{
			lblShoppingCart.innerHTML = "[ " + result.TotalItems + " ]";
		}    
	    
		// Update sum
		var lblSum = $get(controlID + "_lblSum");
		if (lblSum != "undefined" && lblSum != null)
		{
			if (result.GlobalShowSumInclVAT)
			{    
				lblSum.innerHTML = result.DynamicTotalSumWithDiscount;
			}
			else
			{
				lblSum.innerHTML = result.TotalSum;
			}		
		}
	    
		// Update buttons
		var imgCart = $get(controlID + "_imgCart");
		if (imgCart != "undefined" && imgCart != null)
		{
			imgCart.alt = CartInfoText.ShowShoppingCartText; //"Visa kundvagn";
			imgCart.title = CartInfoText.ShowShoppingCartText; //"Visa kundvagn";
		}
	    
		var hlCart = $get(controlID + "_hlCart");
		if (hlCart != "undefined" && hlCart != null)
		{
			hlCart.disabled = false;
			hlCart.href = this._cartDetailsPage;
		}
	    
		var imgCartDetails = $get(controlID + "_imgCartDetails");
		if (imgCartDetails != "undefined" && imgCartDetails != null)
		{
			imgCartDetails.alt = CartInfoText.ShowShoppingCartText; // "Visa kundvagn";
			imgCartDetails.title = CartInfoText.ShowShoppingCartText; //"Visa kundvagn";
			if (result.Items.length > 0)
			{
				imgCartDetails.src = this._showCartImageUrl;
			}
			
			if(result.TotalItems == 0)
			{
			    imgCartDetails.src = this._showCartDisabledImageUrl;
			}
		}
	    
		var hlCartDetails = $get(controlID + "_hlCartDetails");
		if (hlCartDetails != "undefined" && hlCartDetails != null)
		{
			hlCartDetails.disabled = false;
			hlCartDetails.href = this._cartDetailsPage;
			
			if(result.TotalItems == 0)
			{
			    hlCartDetails.removeAttribute('href');
			    hlCartDetails.disabled = true;
			}
		}
	    
		var imgCheckOut = $get(controlID + "_imgCheckOut");
		if (imgCheckOut != "undefined" && imgCheckOut != null)
		{
			imgCheckOut.alt = CartInfoText.CheckOutText; //"Till kassan";
			imgCheckOut.title = CartInfoText.CheckOutText; //"Till kassan";
			if (result.Items.length > 0)
			{
				//if (result.Items.length == 1)
				//if (result.TotalItems == 1)
				if (result.IsFirstTime)
				{
					imgCheckOut.src = this._startImageUrl;
				}
				else
				{
					imgCheckOut.src = this._checkoutImageUrl;
				}
			}
			
			if(result.TotalItems == 0)
			{
			    imgCheckOut.src = this._checkoutDisabledImageUrl;
			}        
		}
	    
		var hlCheckOut = $get(controlID + "_hlCheckOut");
		if (hlCheckOut != "undefined" && hlCheckOut != null)
		{
			hlCheckOut.disabled = false;
			if (this._useSecureCheckout == true)
			{
			    hlCheckOut.href = "javascript:window.top.GoToNavURIPage('" + this.get_CheckOutPage() + "', true);";
			}
			else
			{
			    hlCheckOut.href = this.get_CheckOutPage();
			}
			
			if(result.TotalItems == 0)
			{
			    hlCheckOut.removeAttribute('href');
			    hlCheckOut.disabled = true;
			}
		}
	    
		if (result.IsAuthenticated && result.IsUserSessionActive)
		{
			var hlLogout = $get(controlID + "_hlLogout");
			if (hlLogout != "undefined" && hlLogout != null)
			{
				hlLogout.disabled = false;
				hlLogout.style.display = "inline";
			}
			
			var imgChangeInfo = $get(controlID + "_imgChangeInfo");
			if (imgChangeInfo != "undefined" && imgChangeInfo != null)
			{
				imgChangeInfo.src = this._changeInfoImageUrl;
			}
		}
		else
		{
		    var hlLogout = $get(controlID + "_hlLogout");
			if (hlLogout != "undefined" && hlLogout != null)
			{
				hlLogout.disabled = true;
				hlLogout.style.display = "none";
			}
			
			var hlChangeInfo = $get(controlID + "_hlChangeInfo");
			if (hlChangeInfo != "undefined" && hlChangeInfo != null)
			{
				hlChangeInfo.src = this._changeUserInfoPageUrl;
			}
		}
	},

	_onSucceededVATSelector : function(result, controlID, methodName) 
	{
		// Update dropdown
		var ddlItems = $get(controlID + "_ddlItems");       
		if (ddlItems != "undefined" && ddlItems != null)
		{        
			ddlItems.style.display = "inline";
	        
			var lastOption = 0;
			ddlItems.options.length = 0;
	        
			for (var objIdx = 0; objIdx < result.Items.length; objIdx++)
			{
				lastOption = ddlItems.options.length;
				ddlItems.options[lastOption] = new Option(result.Items[objIdx].Name, result.Items[objIdx].Data + ' - ' + result.Items[objIdx].Quantity.toString());
				if (result.Items[objIdx].IsSelected)
				{
					ddlItems.selectedIndex = objIdx;
				}
			}
		}     
	    
		var hlVATSelector = $get(controlID + "_hlVATSelector");
		if (hlVATSelector != "undefined" && hlVATSelector != null)
		{
			if (result.ControlShowSumInclVAT)
			{
				hlVATSelector.innerHTML = CartInfoText.ShowPriceInclVATText; //"Visa priser exkl. moms";
			}
			else
			{
				hlVATSelector.innerHTML = CartInfoText.ShowPriceInclVATText; // "Visa priser inkl. moms";
			}
		}
	    
		var lblVATText = $get(controlID + "_lblVATText");
		if (lblVATText != "undefined" && lblVATText != null)
		{
			if (result.ControlShowSumInclVAT)
			{
				lblVATText.innerHTML = CartInfoText.InclVATText; // "&nbsp;" + "inkl. moms" + "&nbsp;";
			}
			else
			{
				lblVATText.innerHTML = CartInfoText.ExclVATText; // "&nbsp;" + "exkl. moms" + "&nbsp;";
			}
		}
	    
		var lblSum = $get(controlID + "_lblSum");
		if (lblSum != "undefined" && lblSum != null)
		{
			if (result.ControlShowSumInclVAT)
			{
				lblSum.innerHTML = result.DynamicTotalSumWithDiscount;
			}
			else
			{
				lblSum.innerHTML = result.TotalSum;
			}
		}
	    
		if (result.IsAuthenticated)
		{
			var hlLogout = $get(controlID + "_hlLogout");
			if (hlLogout != "undefined" && hlLogout != null)
			{
				hlLogout.disabled = false;
				hlLogout.style.display = "inline";
			}
		}    
	},

	_onFailed : function(result, controlID, methodName) 
	{  
	},
    
    dispose : function() 
    {
        // call to the base to do its dispose
        JetShop.StoreControls.CartInfo.callBaseMethod(this,'dispose'); 
    }
}

JetShop.StoreControls.CartInfo.registerClass('JetShop.StoreControls.CartInfo', Sys.UI.Control);

function CI_Update(controlID, displayType)
{   
	$find(controlID).loadCartInfo(displayType);
}
CartInfoText={
"ShowShoppingCartText":"Visa kundvagn",
"ShowCartText":"Visa varukorgen",
"ShowPriceExclVATText":"Visa priser exkl. moms",
"ShowPriceInclVATText":"Visa priser inkl. moms",
"InclVATText":"&nbsp;inkl. moms&nbsp;",
"CheckOutText":"Till kassan",
"ExclVATText":"&nbsp;exkl. moms&nbsp;",
"TotalSumText":"Totalt:&nbsp;"
};

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();