

var History = {
    messages: [],
    ite: -1,
    maxSize: 20,
    message: '',

    add: function(message){
        History.truncate();

        if( message.length == 0){
            return;
        }
        var index = jQuery.inArray(message, History.messages);
        if( index > 0 ){
            History.messages.splice(index, 1);
        }

        History.messages.unshift(message);
    },

    push: function(message){
        History.truncate();
        History.message = message;
    },

    truncate: function(){
        if( History.messages.length > History.maxSize ){
            History.messages.pop();
        }
    },

    clean: function(){
        History.message = '';
        History.reset();
    },

    reset: function(){
        History.ite = -1;
    },

    history: function(inc){
        var val = $(Global.MessageInput).val();
        var msg = '';
        if( History.ite == -1 && inc < 0 ){
           if( val != ''){
               History.push(val);
           }
           History.ite = History.messages.length;
           msg = History.run(inc);
        }
        else{
            if( History.ite == -1 && val != ''){
                History.push(val);
            }

            msg = History.run(inc);
        }
        if( msg == null || msg == undefined){
            return false;
        }
        $(Global.MessageInput).val(msg);
        return false;
    },

    run: function(inc){
        if( History.messages.length == 0){
            return null;
        }
        //debug(History.messages);
        //debug("ite=" + History.ite);

        History.ite += inc;
        //debug("ite=" + History.ite);

        if( History.ite >= History.messages.length ){
            History.reset();
            return History.message;
        }

        if( History.ite == -1 ){
            return History.message;
        }

        if( History.ite < 0){
            //History.ite = -1;
            //return '';
            History.ite = History.messages.length + History.ite + 1;
        }

        return History.messages[History.ite];

    },

    history2: function(inc){

        var val = $(Global.MessageInput).val();
        var msg = '';
        if( History.ite == -1 && inc < 0 ){
            if( val == ''){
                if( History.message != ''){
                    History.ite = -2;
                }
                return false;
            }
            else{
                History.push(val);
                History.ite = -2;
            }

        }
        else{
            if( History.ite == -1 && val != ''){
                History.push(val);
            }

            msg = History.run(inc);
        }
        if( msg == null || msg == undefined){
            return false;
        }
        $(Global.MessageInput).val(msg);
        return false;
    },

    run2: function(inc){
        if( History.messages.length == 0){
            return null;
        }
        //debug(History.messages);
        //debug("ite=" + History.ite);

        History.ite += inc;
        //debug("ite=" + History.ite);

        if( History.ite >= History.messages.length ){
            History.reset();
            return History.message;
        }

        if( History.ite == -1 ){
            return History.message;
        }

        if( History.ite < 0){
            History.ite = -2;
            return '';
            //History.ite = History.messages.length + History.ite + 1;
        }

        return History.messages[History.ite];

    }
};

