﻿var helpLevel = "";
var contextHelp = {
    items: {},
    timer: null,
    slider: null,
    curPoint: null,
    helpStatus: true,
    pageHelpMinHeight: 15,
    addItem: function (tekst, elementId, horizontal, vertical) {
		if (document.getElementById(elementId))
		{
        	this.items[elementId] =    {
                                tekst: tekst,
                                element: document.getElementById(elementId)
                            };
        	this.items[elementId].element.onmouseover = function () {contextHelp.showHelp(this, elementId, horizontal, vertical);};
		}
    },
	
	
    showHelp: function (point, id, horizontal, vertical) {
        if (this !== contextHelp) {
            contextHelp.showHelp(point, id);
            return false;
        }
        if (!this.helpDiv) {
            this.createHelpDiv();
        }
        if (this.curPoint) {
            this.hideHelp();
        }
        
        
        this.curPoint = point;
        var that = this;
        
        if (document.all) {
            point.attachEvent("onmouseout", this.setTimer);
            point.attachEvent("onmouseover", this.clearTimer);
        } else {
            point.addEventListener("mouseout", this.setTimer, false);
            point.addEventListener("mouseover", this.clearTimer, false);
        }
        
        var coords = this.findPos(point);
        var scrollCoords = this.scrollDim();
        
        this.helpDiv.innerHTML = this.items[id].tekst;
        
        this.helpDiv.style.display = "";
        
        var diffX = coords[0] - this.helpDiv.offsetWidth;
        var diffY = coords[1] - this.helpDiv.offsetHeight;
        
        if ((diffX > scrollCoords[0] || horizontal === "left") && horizontal !== "right") {
            this.helpDiv.style.left = diffX + "px";
        } else {
            this.helpDiv.style.left = (coords[0] + point.offsetWidth + "px");
        }
        if ((diffY > scrollCoords[1] || vertical === "top") && vertical !== "bottom") {
            this.helpDiv.style.top = diffY + "px";
        } else {
            this.helpDiv.style.top = (coords[1] + point.offsetHeight + "px");
        }
		return true;        
    },
		
	scrollDim: function () {
	    var x,y;
        if (self.pageYOffset) // all except Explorer
        {
	        x = self.pageXOffset;
	        y = self.pageYOffset;
        }
        else if (document.documentElement && document.documentElement.scrollTop)
	        // Explorer 6 Strict
        {
	        x = document.documentElement.scrollLeft;
	        y = document.documentElement.scrollTop;
        }
        else if (document.body) // all other Explorers
        {
	        x = document.body.scrollLeft;
	        y = document.body.scrollTop;
        }
	    return [x,y];
	},
	
    createHelpDiv: function () {
        var div = document.createElement("div");
        this.helpDiv = div;
        div.id = "contextHelpDiv";
        div.className = "contexthelp";
        div.style.display = "none";
        var that = this;
        div.onmouseout = function () {that.setTimer(that);};
        div.onmouseover = function () {that.clearTimer(that);};
        document.body.appendChild(div);
    },
	
	
    findPos: function (obj) {
        var curleft = curtop = 0;
        if (obj.offsetParent) {
            curleft = obj.offsetLeft;
            curtop = obj.offsetTop;
            while (obj = obj.offsetParent) {
	            curleft += obj.offsetLeft;
	            curtop += obj.offsetTop;
            }
        }
        return [curleft,curtop];
    },
	
	
    hideHelp: function () {
        clearTimeout(this.timer);
        this.helpDiv.style.display = "none";
        if (document.all) {
            this.curPoint.detachEvent("onmouseout", contextHelp.setTimer);
            this.curPoint.detachEvent("onmouseover", contextHelp.clearTimer);
        } else {
            this.curPoint.removeEventListener("mouseout", contextHelp.setTimer, false);
            this.curPoint.removeEventListener("mouseover", contextHelp.clearTimer, false);
        }
        this.curPoint = null;
    },
	
	
    setTimer: function (that) {
        contextHelp.timer = setTimeout(function () {contextHelp.hideHelp();}, 300);
    },
    clearTimer: function (that) {
        clearTimeout(contextHelp.timer);
    }	
};

if (helpLevel == "1") {
	contextHelp.helpStatus = true;
}

var showHelp = contextHelp.showHelp;
var addItem = contextHelp.addItem;
var createPageHelp = contextHelp.createPageHelp;
var showPageHelp = contextHelp.showPageHelp;
var hidePageHelp = contextHelp.hidePageHelp;
var toggleHelpOff = contextHelp.toggleHelpOff;
var toggleHelpOn = contextHelp.toggleHelpOn;
var createHelpToggle = contextHelp.createHelpToggle;
