﻿/* panel builder - used to buld panel html using JSON / ajax calls */

/// + wgid(long) the webgateway id
this.panelBuilder = function(wgid){

    this.webGatewayID = wgid;

    // consts...
    var PNL_BASKET = "pnlBasket";
    var PNL_WISH_LIST = "pnlWishList";
    var PNL_MY_ACCOUNT = "pnlMyAccount";
    
    this.initialiseSidePanels = function(){
    
        // init basket, wishlist, myaccount inner html
        var hb = new htmlBuilder();
        $('#' + PNL_BASKET).html(hb.getSidePanelInnerHtmlForBasket());
        $('#' + PNL_WISH_LIST).html(hb.getSidePanelInnerHtmlForWishList());
        $('#' + PNL_MY_ACCOUNT).html(hb.getSidePanelInnerHtmlForMyAccount());
        
        
        
    };

    // build the My Account panel
    // + data (JsonResponse (with data.InnerData.UserInfo = UserInfoJsonData))
    this.buildMyAccount = function(data){
    
        var userInfo = data.InnerData.UserInfo;

        // consts...
        var MAIN_FORMAT_AUTHENTICATED       = "<ul class=\"linkList\">{0}{1}{2}</ul><a href=\"{3}\" title=\"click here to logout\">Click here</a> to logout";
        var MAIN_FORMAT_NOT_AUTHENTICATED   = "<ul class=\"linkList\">{0}</ul>If you have a {1} username and password, please <a href=\"{2}\" title=\"click here to login\">click here</a>";

        var format = userInfo.HasUser ? MAIN_FORMAT_AUTHENTICATED : MAIN_FORMAT_NOT_AUTHENTICATED;

        var hBuilder = new htmlBuilder();
        var args = !userInfo.HasUser 
                    ?   [
                            userInfo.HasCompletedOrders ? getAnchorInListItem(hBuilder, userInfo.MyFavouritesUrl, "My Favourites", "favourites") : "",
                            data.MerchantName, 
                            userInfo.LoginUrl]
                    :   [
                            getAnchorInListItem(hBuilder, userInfo.MyAccountUrl, "My Account", "account"),
                            getAnchorInListItem(hBuilder, userInfo.MyFavouritesUrl, "My Favourites", "favourites"),
                            getAnchorInListItem(hBuilder, userInfo.MyOrdersUrl, "My Orders", "orders"),
                            userInfo.LogoutUrl
                        ];
        
        var header = userInfo.HasUser 
                        ? hBuilder.buildSimpleAnchor(userInfo.MyAccountUrl, "Click here to view your account", userInfo.FriendlyNamePosessiveForm + " Account", "")
                        : hBuilder.buildSimpleAnchor(userInfo.LoginUrl, "Click here to login", "Existing Customers", "");
                
        
        var main = doStringFormat(format, args);

        var panel = $('#' + PNL_MY_ACCOUNT);
        panel.find(".header").html(header);
        panel.find(".main").html(main);
        
    
    };
    
    function getAnchorInListItem(builder, url, title, cssClassName){
        return builder.buildAnchorInListItem(url, title, title, cssClassName, "");
    };
 
}