
/*
 *Core Application Class
 */
VZT.appcore = new Class({
    Implements: [VZT.Base, Events],
    Events: null,
    Animations: null,

    pagestates: ['init'],               //array of current states associtaed with the page

    //weather or not to enable debuging
    debug: true,

    /**
    * Verboseness of log
    * 1 - Errors only
    * 2 - Warnings
    * 3 - Messages
    */
    verbose: 3,

    setContent: function (dest, text, ana) {
        var contentsetter = new VZT.pagecontent({
            animator: ana,
            content: text,
            destination: dest
        }).setContent();
    },

    /**
    * gets the current page states
    */
    getPageStates: function () {
        return this.pagestates;
    },

    /**
    * checks to see if the page has the current state
    * @param state page state to check
    */
    hasPageState: function (state) {
        return this.pagestates.contains(state);
    },

    /**
    * Adds a state to the page
    * @param state state 
    */
    setPageState: function (state) {
        if (!this.pagestates.contains(state)) {
            this.pagestates.push(state);
        }
        this.Events.Notify("state_change", ["add", state]);
    },

    /**
    * Log a message
    * @param message
    * @param level
    */
    log: function (message, level) {
        if (this.debug === true && this.verbose >= level) {
            var el = $('console');
            if (el) {
                if (!$chk(message)) { message = 'empty string'; }
                el.adopt((new Element('br')));
                el.appendText(message);
            }
        }
    },

    /**
    * Removes a page state for current states
    * @param state state to remove
    */
    removePageState: function (state) {
        this.Events.Notify("state_change", ["delete", state]);
        this.pagestates.erase(state);
    },

    /**
    * Initialization
    * Sets up the application core and history object. Also binds the timer and the click
    * events
    */
    initialize: function () {
        //VZT.AppCore = this;
        //VZT.History = new VZT.appcore.history();

        var self = this;
        this.Animations = new VZT.appcore.animations();
        this.Events = new VZT.appcore.events();
        this.History = new VZT.appcore.history();
        

    }
});


