var guoco = {
    bundle: null,
    generalHelper: null,
    uiHelper: null,
    nwHelper: null,
    serviceHelper: null,
    dlgBox:null,
    authenticationService: null,
    cashWithdrawalService: null,
    eStatementService: null,
    accountOpeningService: null,
    personalProfileService: null,
    marginService: null,
    homeService:null,
    messageService:null,
    language: "E",
    logOnOff: "off",
    showAccountNumber: "on",
    username: "",
    marginGroup: ""
};

var initializeComponents = function() {
    guoco.uiHelper.centerToViewport(dojo.byId("blkMain"));
    dojo.connect(window, "onresize", function(evt) {
        guoco.uiHelper.centerToViewport(dojo.byId("blkMain"));
    });
    guoco.generalHelper.languageAwareInvoke(function(change) {
        dojo.doc.title = guoco.bundle.MessageCompanyName;
    });
};

dojo.addOnLoad(function() {
    dojo.require("dojo.cookie");
    dojo.require("dojo.number");
    dojo.require("dojo.date.locale");
    dojo.require("dojo.data.ItemFileReadStore");
    dojo.require("dijit.layout.ContentPane");
    dojo.require("dijit.form.Button");
    dojo.require("dijit.Menu");
    dojo.require("dijit.Toolbar");
    dojo.require("dijit.TooltipDialog");
    dojo.require("dijit.form.Form");
    dojo.require("dijit.form.ComboBox");
    dojo.require("dijit.form.FilteringSelect");
    dojo.require("dijit.Dialog");
    dojo.require("dijit.form.CheckBox");
    dojo.require("dojox.io.windowName");
    dojo.require("dojox.grid.DataGrid");
    dojo.require("guoco.widget.SpnLocalized");
    dojo.require("guoco.widget.PnlLocalized");
    dojo.require("guoco.widget.BtnLocalized");
    dojo.require("guoco.widget.MniLocalized");
    dojo.require("guoco.widget.LblLocalized");
    dojo.require("guoco.widget.BtnDropDown");
    dojo.require("guoco.widget.TxtValidation");
    dojo.require("guoco.widget.ChkMniLocalized");
    dojo.require("guoco.widget.PopMniLocalized");
    dojo.require("guoco.widget.FilteringSelectLocalized");
    dojo.require("guoco.widget.AnchorLocalized");

    dojo.requireLocalization("guoco", "Bundle");
    guoco.bundle = dojo.i18n.getLocalization("guoco", "Bundle");

    dojo.require("guoco.util.GeneralHelper");
    guoco.generalHelper = new guoco.util.GeneralHelper();

    dojo.require("guoco.util.UiHelper");
    guoco.uiHelper = new guoco.util.UiHelper();

    dojo.require("guoco.util.NwHelper");
    guoco.nwHelper = new guoco.util.NwHelper();
    
    dojo.require("guoco.util.ServiceHelper");
    guoco.serviceHelper = new guoco.util.ServiceHelper();

    dojo.require("guoco.service.Authentication");
    guoco.authenticationService = new guoco.service.Authentication();

    dojo.require("guoco.service.CashWithdrawal");
    guoco.cashWithdrawalService = new guoco.service.CashWithdrawal();

    dojo.require("guoco.service.EStatement");
    guoco.eStatementService = new guoco.service.EStatement();

    dojo.require("guoco.service.AccountOpening");
    guoco.accountOpeningService = new guoco.service.AccountOpening();

    dojo.require("guoco.service.Margin");
    guoco.marginService = new guoco.service.Margin();

    dojo.require("guoco.service.Home");
    guoco.homeService = new guoco.service.Home();

    dojo.require("guoco.service.PersonalProfile");
    guoco.personalProfileService = new guoco.service.PersonalProfile();

    dojo.require("guoco.service.Message");
    guoco.messageService = new guoco.service.Message();

    if (dojo.cookie("language") != null) {
        guoco.language = dojo.cookie("language");
    }

    switch (guoco.language) {
        case "E":
            guoco.generalHelper.switchBundle("en");
            break;
        case "C":
            guoco.generalHelper.switchBundle("zh");
            break;
        case "S":
            guoco.generalHelper.switchBundle("zh-cn");
            break;
        default:
            break;
    }

    if (dojo.cookie("showAccountNumber") != null) {
        guoco.showAccountNumber = dojo.cookie("showAccountNumber");
    }

    dlgBox = new dijit.Dialog({
        style: "width: 300px",
        draggable: false
    });

    dojo.addOnLoad(function() {
        initializeComponents();
        dojo.toggleClass(dijit.byId("blkMain").domNode, "invisible");
    });
});

