/*
 * @category Java Script Module Pattern
 * @version $Rev$
 * @author Joel Bair <joelb@baseltd.biz>
 *
 */

// reference local blank image
Ext.BLANK_IMAGE_URL = '../extjs/resources/images/default/s.gif';

// create namespace
Ext.namespace('content');

// create application
content = function() {
    // do NOT access DOM from here; elements don't exist yet

    // private variables
    var tokenDelimiter = '/';

    // private functions
    var subnav = function() {
            var submenu = Ext.get("subnav-menu");

            if(submenu){
                var buttons = submenu.dom.childNodes;
                for (i = 0; i < buttons.length; i++){
                    if(buttons[i].id){
                        if(buttons[i].id.match(/subnav-/)) {
                            var btn = Ext.get(buttons[i].id);
                            btn.removeAllListeners();
                            btn.removeClass('btns_selected');
                            if(myPage.name === btn.id.replace(/subnav-/,"")) {
                                btn.addClass('btns_selected');
                            }
                            btn.on('click', function() {
                                myPage.subnavkey = this.id.replace(/subnav-/,"");
                                myPage.name = this.id.replace(/subnav-/,"");
                                pageload();
                            });
                        }
                    }
                }
            }
        };

        var primnav = function() {
            var navmenu = Ext.get("nav-menu");

            if(navmenu){
                var buttons = navmenu.dom.childNodes;
                for (i = 0; i < buttons.length; i++){
                 if(buttons[i].id){
                    if(buttons[i].id.match(/nav-/)) {
                        var btn = Ext.get(buttons[i].id);
                        btn.removeAllListeners();
                        btn.removeClass('navbutton_selected');
                        if(myPage.prinavkey === btn.id.replace(/nav-/,"")) {
                            btn.addClass('navbutton_selected');
                        }
                        btn.on('click', function(event, target, opts) {
                            myPage.prinavkey = this.id.replace(/nav-/,"");
                            myPage.subnavkey = '';
                            myPage.name = this.id.replace(/nav-/,"");
                            pageload();
                        });
                    }
                 }
                }
              }
        };

        var pageload = function() {
            //Ext.History.add((myPage.subnavkey) ? myPage.prinavkey+tokenDelimiter+myPage.subnavkey : myPage.prinavkey);
            var cnt = Ext.get("contentframe");
            var cntmgr = cnt.getUpdater();

            var mask = new Ext.LoadMask(cnt, { removeMask: true });
            mask.show();

            cntmgr.update({
                url: '/content/'+myPage.name,
                timeout: 60,
                callback: function(el, success, response) {
                    if(success) {
                        myPage.tracker._trackPageview(myPage.name);
                        primnav();
                        subnav();
                    } else {
                        Ext.MessageBox.alert('Error', "The server tool long to respond.\n Please try your request again later...\n");
                    }
                }
            });
        };

    // public space
    return {
        // public properties, e.g. strings to translate
        // methods and varibles defined in here always preface w/ "this."

        // public methods
        init: function() {
            //Ext.History.init();
            /*Ext.History.on('change', function(token){
                if(token){
                    var parts = token.split(tokenDelimiter);
                    myPage.subnavkey = parts[1];
                    myPage.prinavkey = parts[0];
                    if(parts[1]) {
                        myPage.name = parts[1];
                        pageload();
                    } else {
                        myPage.name = parts[0];
                        pageload();
                    }
                }else{
                    // This is the initial default state.  Necessary if you navigate starting from the
                    // page without any existing history token params and go back to the start state.
                    myPage.prinavkey = myPage.name = 'home';
                    pageload();
                }
            });*/
            pageload();
        },

        load: function() {
            pageload();
        }

    };
}();
