﻿//---------------------------------------------
// CartInfoBusiness.js 
// Copyright (C) Jetshop AB 2009
//---------------------------------------------
Type.registerNamespace('JetShop.StoreControls'); 

JetShop.StoreControls.CartInfoBusiness = function(element)
{
    JetShop.StoreControls.CartInfoBusiness.initializeBase(this, [element]);
    
    this._succeededHandler = null;
    this._failedHandler = null;
    this._divWrapper = null;
    
    this._cartTextCssClass =  null;
    this._cartText = null;
    this._cartItemsCssClass = null;
    this._sumLabelCssClass = null;
    this._sumCssClass = null;
    this._sumText = null;
    this._cartDetailsPage =  null;
    this._cartDetailsButtonTooltip = null;
    this._showCartDisabledImageUrl = null;
    this._showCartImageUrl = null;
    this._cartIsEmptyTextCssClass = null;
    this._cartIsEmptyText = null;
    
    this._useSecureCheckout = null;
    
    this._changeInfoImageUrl = null;
    this._changeUserInfoPage = null;
    this._myInfoImageUrl = null;
    this._signOutPage = null;
    this._logoutImageUrl = null;
    
    this._myInfoImageToolTip = null;
    this._changeInfoButtonToolTip = null;
    this._logoutButtonToolTip = null
    this._loginButtonWrapperCssClass = null;
    this._loginButtonWrapperCssClass = null;
}

JetShop.StoreControls.CartInfoBusiness.prototype = 
{
    initialize : function() 
    {
            // initialize the base
        JetShop.StoreControls.CartInfoBusiness.callBaseMethod(this,'initialize');
        
        this._succeededHandler = Function.createDelegate(this, this._onSucceeded);
        this._failedHandler = Function.createDelegate(this, this._onFailed);
        
        this._divWrapper = $get(this.get_id() + "_wrapper");
    },
					
	get_CartTextCssClass : function()
	{
		return this._cartTextCssClass;
	},
	
	set_CartTextCssClass :  function(value)
	{
		this._cartTextCssClass = value;
	},
	
	get_CartText : function()
	{
		return this._cartText;
	},
	
	set_CartText :  function(value)
	{
		this._cartText = value;
	},
	
	get_CartItemsCssClass : function()
	{
		return this._cartItemsCssClass;
	},
	
	set_CartItemsCssClass :  function(value)
	{
		this._cartItemsCssClass = value;
	},
	
	get_SumLabelCssClass : function()
	{
		return this._sumLabelCssClass;
	},
	
	set_SumLabelCssClass :  function(value)
	{
		this._sumLabelCssClass = value;
	},
	
	get_SumCssClass : function()
	{
		return this._sumCssClass;
	},
	
	set_SumCssClass :  function(value)
	{
		this._sumCssClass = value;
	},
	
	get_SumText : function()
	{
		return this._sumText;
	},
	
	set_SumText :  function(value)
	{
		this._sumText = value;
	},
	
	get_CartDetailsPage : function()
	{
		return this._cartDetailsPage;
	},
	
	set_CartDetailsPage :  function(value)
	{
		this._cartDetailsPage = value;
	},
	
	get_CartDetailsButtonTooltip : function()
	{
		return this._cartDetailsButtonTooltip;
	},
	
	set_CartDetailsButtonTooltip :  function(value)
	{
		this._cartDetailsButtonTooltip = value;
	},
	
	get_ShowCartDisabledImageUrl : function()
	{
		return this._showCartDisabledImageUrl;
	},
	
	set_ShowCartDisabledImageUrl :  function(value)
	{
		this._showCartDisabledImageUrl = value;
	},
	
	get_ShowCartImageUrl : function()
	{
		return this._showCartImageUrl;
	},
	
	set_ShowCartImageUrl :  function(value)
	{
		this._showCartImageUrl = value;
	},
	
	get_CartIsEmptyTextCssClass : function()
	{
		return this._cartIsEmptyTextCssClass;
	},
	
	set_CartIsEmptyTextCssClass :  function(value)
	{
		this._cartIsEmptyTextCssClass = value;
	},
	
	get_CartIsEmptyText : function()
	{
		return this._cartIsEmptyText;
	},
	
	set_CartIsEmptyText :  function(value)
	{
		this._cartIsEmptyText = value;
	},
	
    get_UseSecureCheckout : function()
    {
		return this._useSecureCheckout;
    },
    
    set_UseSecureCheckout : function(value)
    {
		this._useSecureCheckout = value;
    },	
	
    get_ChangeInfoImageUrl : function()
    {
		return this._changeInfoImageUrl;
    },
    
    set_ChangeInfoImageUrl : function(value)
    {
		this._changeInfoImageUrl = value;
    },	
	
    get_ChangeUserInfoPage : function()
    {
		return this._changeUserInfoPage;
    },
    
    set_ChangeUserInfoPage : function(value)
    {
		this._changeUserInfoPage = value;
    },		
	
    get_MyInfoImageUrl : function()
    {
		return this._myInfoImageUrl;
    },
    
    set_MyInfoImageUrl : function(value)
    {
		this._myInfoImageUrl = value;
    },		
	
    get_SignOutPage : function()
    {
		return this._signOutPage;
    },
    
    set_SignOutPage : function(value)
    {
		this._signOutPage = value;
    },			
	
    get_LogoutImageUrl : function()
    {
		return this._logoutImageUrl;
    },
    
    set_LogoutImageUrl : function(value)
    {
		this._logoutImageUrl = value;
    },		
	
    get_MyInfoImageToolTip : function()
    {
		return this._myInfoImageToolTip;
    },
    
    set_MyInfoImageToolTip : function(value)
    {
		this._myInfoImageToolTip = value;
    },	
	
    get_ChangeInfoButtonToolTip : function()
    {
		return this._changeInfoButtonToolTip;
    },
    
    set_ChangeInfoButtonToolTip : function(value)
    {
		this._changeInfoButtonToolTip = value;
    },	
    
    get_LogoutButtonToolTip : function()
    {
		return this._logoutButtonToolTip;
    },
    
    set_LogoutButtonToolTip : function(value)
    {
		this._logoutButtonToolTip = value;
    },    

    get_LoginButtonWrapperCssClass : function()
    {
		return this._loginButtonWrapperCssClass;
    },
    
    set_LoginButtonWrapperCssClass : function(value)
    {
		this._loginButtonWrapperCssClass = value;
    },  
    
    get_LogoutButtonWrapperCssClass : function()
    {
		return this._logoutButtonWrapperCssClass;
    },
    
    set_LogoutButtonWrapperCssClass : function(value)
    {
		this._logoutButtonWrapperCssClass = value;
    },  

    loadCartInfo : function(displayType)
    {
		JetShop.StoreControls.Services.CartInfoService.LoadCartInfo(this._succeededHandler, this._failedHandler, this.get_id());    
    },
    
    _onSucceeded : function(result)
    {
		var objInfo = $get(this.get_id() + "_info");
		
		
		if (result.TotalItems > 0)
		{
			if (objInfo != null && objInfo != "undefined")
			{
				this._createLayout(false);
			}
		}
		else
		{
			if (objInfo == null || objInfo == "undefined")
			{
				this._createLayout(true);
			}
		}
		
		if (result.TotalItems > 0)
		{
			var id = this.get_id();
			// Update existing structure
		
			if (result.GlobalShowSumInclVAT)
			{    
				$get(id + "_sum").innerHTML = result.DynamicTotalSumWithDiscount;
			}
			else
			{
				$get(id + "_sum").innerHTML = result.TotalSum;
			}
			
			$get(id + "_cartItems").innerHTML = result.TotalItems;
		}
		
		if (result.IsAuthenticated == true)
		{
			var divLogoutButtonWrapper = $get(this.get_id() + "_divLogoutButtonWrapper");
			if (divLogoutButtonWrapper != "undefined" && divLogoutButtonWrapper != null)
			{
			    divLogoutButtonWrapper.style.visibility = "visible";
			}
			
			var imgLoginButton = $get(this.get_id() + "_imgLoginButton");
			if (imgLoginButton != "undefined" && imgLoginButton != null)
			{
				imgLoginButton.src = this._changeInfoImageUrl;
				imgLoginButton.alt = this._changeInfoButtonToolTip;
				imgLoginButton.title = this._changeInfoButtonToolTip;
			}
		}
		else
		{
			var divLogoutButtonWrapper = $get(this.get_id() + "_divLogoutButtonWrapper");
			if (divLogoutButtonWrapper != "undefined" && divLogoutButtonWrapper != null)
			{
			    divLogoutButtonWrapper.style.visibility = "hidden";
			}
			
			var divLoginButtonWrapper = $get(this.get_id() + "_divLoginButtonWrapper");
			if (divLoginButtonWrapper != "undefined" && divLoginButtonWrapper != null)
			{
			    divLogoutButtonWrapper.className = this._loginButtonWrapperCssClass;
			}			
			
			var imgLoginButton = $get(this.get_id() + "_imgLoginButton");
			if (imgLoginButton != "undefined" && imgLoginButton != null)
			{
				imgLoginButton.alt = this._myInfoImageToolTip;
				imgLoginButton.title = this._myInfoImageToolTip;
			}			
		}
    },
    
    _onFailed : function(result)
    {
		var test = 100;
    },
    
    _createLayout : function(emptyCart)
    {
		// Empty nodes

		while (this._divWrapper.hasChildNodes())
		{
			this._divWrapper.removeChild(this._divWrapper.firstChild);
		}

		if (emptyCart == true)
		{
			objInfo = document.createElement("div");
			objInfo.id = this.get_id() + "_info";
			
			this._divWrapper.appendChild(objInfo);
			
			objButton = document.createElement("img");
			objButton.src = this._showCartDisabledImageUrl;
			objButton.alt = this._cartDetailsButtonTooltip;
			this._divWrapper.appendChild(objButton);		
		}
		else
		{
			objCartText = document.createElement("div");
			objCartText.id = this.get_id() + "_cartText";
			objCartText.className = this._cartTextCssClass;
			objCartText.innerHTML = this._cartText;
			this._divWrapper.appendChild(objCartText);
			
			objCartItems = document.createElement("div");
			objCartItems.id = this.get_id() + "_cartItems";
			objCartItems.className = this._cartItemsCssClass;
			objCartItems.innerHTML = "";
			this._divWrapper.appendChild(objCartItems);
		
			objSumLabel = document.createElement("div");
			objSumLabel.id = this.get_id() + "_sumLabel";
			objSumLabel.className = this._sumLabelCssClass;
			objSumLabel.innerHTML = this._sumText;
			this._divWrapper.appendChild(objSumLabel);
		
			objSum = document.createElement("div");
			objSum.id = this.get_id() + "_sum";
			objSum.className = this._sumCssClass;
			objSum.innerHTML = "";
			this._divWrapper.appendChild(objSum);
			
			objCartButton = document.createElement("a");
			objCartButton.id = this.get_id() + "_cartButton";
			objCartButton.href = this._cartDetailsPage;
			this._divWrapper.appendChild(objCartButton);

			objCartButtonImage = document.createElement("img");
			objCartButtonImage.src = this._showCartImageUrl;
			objCartButtonImage.alt = this._cartDetailsButtonTooltip;
			objCartButton.appendChild(objCartButtonImage);		
		}
		
        objLoginButtonWrapper = document.createElement("div");
        objLoginButtonWrapper.id = this.get_id() + "_divLoginButtonWrapper";
        objLoginButtonWrapper.setAttribute("class", this._loginButtonWrapperCssClass);
        this._divWrapper.appendChild(objLoginButtonWrapper);
		
		objLoginButton = document.createElement("a");
		objLoginButton.id = this.get_id() + "_aLoginButton";
		objLoginButton.href = this._changeUserInfoPage;
		objLoginButtonWrapper.appendChild(objLoginButton);

		objLoginButtonImage = document.createElement("img");
		objLoginButtonImage.id = this.get_id() + "_imgLoginButton";
		objLoginButtonImage.src = this._myInfoImageUrl;
		objLoginButtonImage.alt = this._myInfoImageToolTip;
		objLoginButtonImage.title = this._myInfoImageToolTip;
		objLoginButton.appendChild(objLoginButtonImage);
		
        objLogoutButtonWrapper = document.createElement("div");
        objLogoutButtonWrapper.id = this.get_id() + "_divLogoutButtonWrapper";
        objLoginButtonWrapper.setAttribute("class", this._logoutButtonWrapperCssClass);
        this._divWrapper.appendChild(objLogoutButtonWrapper);		
		
		objLogoutButton = document.createElement("a");
		objLogoutButton.id = this.get_id() + "_aLogoutButton";
		objLogoutButton.href = this._signOutPage;
		objLogoutButtonWrapper.appendChild(objLogoutButton);

		objLogoutButtonImage = document.createElement("img");
		objLogoutButtonImage.id = this.get_id() + "_imgLogoutButton";
		objLogoutButtonImage.src = this._logoutImageUrl;
		objLogoutButtonImage.alt = this._logoutImageToolTip;
		objLogoutButtonImage.title = this._logoutImageToolTip;
		objLogoutButton.appendChild(objLogoutButtonImage);		
    },
    
    dispose : function() 
    {
        // call to the base to do its dispose
        JetShop.StoreControls.CartInfoBusiness.callBaseMethod(this,'dispose'); 
    }
}

JetShop.StoreControls.CartInfoBusiness.registerClass('JetShop.StoreControls.CartInfoBusiness', Sys.UI.Control);

function CI_Update(controlID, displayType)
{   
	$find(controlID).loadCartInfo(displayType);
}
CartInfoText={
"ShowShoppingCartText":"Visa kundvagn",
"ShowCartText":"Visa varukorgen",
"ShowPriceExclVATText":"Visa priser exkl. moms koko",
"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();