function HELP (helpObject){
    this.helps   = helpObject;
    this.helpBox = null;
    this.helpBoxShadow = null;
    this.timer   = null;
    
    this.config = {
        helpBoxID : 'frameWorkHelpBox',
        helpTextContainerPrefix: 'helpObject_',
        timerDelay: 5000
    }
    
    this.helpObjects = new Array();
    
    
    this.init();
    
}

HELP.prototype.init = function(){
    this.createHelpBox()
    
    for(h in this.helps){
        var help = eval("this.helps."+h)
        
        var helpObjectId = this.config.helpTextContainerPrefix+help.id;
        
        var helpHTMLObject = dom.jquery('<span class="helpTextContainer" position="'+(help.position ? help.position : 'right')+'" id="'+helpObjectId+'"></span>');
        
        var helpHTMLText = '<h1 id="'+this.config.helpBoxID+'_H1">'+help.title+'</h1><div id="'+this.config.helpBoxID+'_DIV">'+help.helpText+'</div>'
        
        helpHTMLObject.html(helpHTMLText)
        dom.jquery(document.body).append(helpHTMLObject)
        
        var oThis = this;
        dom.jquery('#'+help.id).hover(
            function(){
                oThis.showHelpBox(this)
            },
            function(){
                oThis.hideHelpBox();
        })
    }
    
}

HELP.prototype.getHelpText  = function(id){
    eval('var helpText = this.helps.'+id)
    return helpText
}

HELP.prototype.createHelpBox = function(){
    
    if(!dom.jquery('#'+this.config.helpBoxID).attr('id')){
        var helpContainer = dom.jquery('<div id="'+this.config.helpBoxID+'"></div>');
        
        helpContainer.html('<div id="'+this.config.helpBoxID+'_Top"></div><div id="'+this.config.helpBoxID+'_Text">&nbsp;</div><div id="'+this.config.helpBoxID+'_Bottom"></div>')
        
        dom.jquery(document.body).append(helpContainer)
        
        this.helpBox = helpContainer;
    }
}

HELP.prototype.showHelpBox = function(object){
    object = dom.jquery(object);
    
    var helpTextContainer = dom.jquery('#'+this.config.helpTextContainerPrefix+object.attr('id'))
    
    var pos = this.baseParent!=null ? this.baseParent.offset() : object.offset();
    
    var settingPosition = helpTextContainer.attr('position');
    var boublePosLeft = null;
    
    switch(settingPosition){
        case 'left':
            boublePosLeft = (parseInt(pos.left) + 180)
            break;
        case 'right':
            boublePosLeft = (parseInt(pos.left) + parseInt(object.width()) + 10);
            break;
    }
    
    
    this.helpBox.css({
        left:  boublePosLeft + 'px',
        top:   parseInt(pos.top) + 'px'
    })
    
    this.clearTimeoutHideBelpBox();
    
    this.helpBox.find('#'+this.config.helpBoxID+'_Text').html(helpTextContainer.html())
    this.helpBox.show();
    
    this.setTimeoutHideBelpBox();
}

HELP.prototype.hideHelpBox = function(){
    this.clearTimeoutHideBelpBox();
    dom.jquery(this.helpBox).hide();
}

HELP.prototype.setTimeoutHideBelpBox = function(){
    this.clearTimeoutHideBelpBox()
    this.timer = setTimeout("dom.jquery('#frameWorkHelpBox').hide()", this.config.timerDelay);
}

HELP.prototype.clearTimeoutHideBelpBox = function(){
    clearTimeout(this.timer)
}
