// ToolTip Code
// Copyright 2006, 2007 Bontrager Connection, LLC
// http://bontragerconnection.com/ and http://www.willmaster.com/
// Version: July 28, 2007


var cX = 0;
var cY = 0;
var rX = 0;
var rY = 0;


function UpdateCursorPosition(e) {
    cX = e.pageX;
    cY = e.pageY;
}


function UpdateCursorPositionDocAll(e) {
    cX = event.clientX;
    cY = event.clientY;
}


if (document.all) {
    document.onmousemove = UpdateCursorPositionDocAll;
}
else {
    document.onmousemove = UpdateCursorPosition;
}


function AssignPosition(dd, df) {
    var rH, cH;

    if (self.pageYOffset) {
        rX = self.pageXOffset;
        rY = self.pageYOffset;
        rH = window.innerHeight;
    }
    else if (document.documentElement && document.documentElement.scrollTop) {
        rX = document.documentElement.scrollLeft;
        rY = document.documentElement.scrollTop;
        rH = document.documentElement.clientHeight;
    }
    else if (document.body) {
        rX = document.body.scrollLeft;
        rY = document.body.scrollTop;
        rH = document.body.clientHeight;
    }

    if (document.all) {
        cX -= rX;
        cY += rY;
    }

    cH = cY + dd.offsetHeight;
    //dd.innerHTML = cY + ' -> ' + cH + '<br>' + rY + ', ' + rH + '<br>' + dd.innerHTML;
    
    if (cH > (rY + rH)) {
        cY -= (cH - (rY + rH) + 10);
    }

    dd.style.left = (cX) + "px";
    dd.style.top  = (cY) + "px";

    df.style.left = (cX) + "px";
    df.style.top  = (cY) + "px";
}


function HideContent(d) {
    if (d.length < 1) { return; }
    document.getElementById(d+'IF').style.display = "none";
    document.getElementById(d).style.display = "none";
}


function ShowContent(d) {
    if (d.length < 1) { return; }
    var dd = document.getElementById(d);
    var df = document.getElementById(d+'IF');
    dd.style.display = "block";
    AssignPosition(dd,df);

    df.style.width = (dd.offsetWidth-10)+'px';
    df.style.height = (dd.offsetHeight-10)+'px';
    df.style.zIndex = dd.style.zIndex-1;
    df.style.display = "block";
}


function ReverseContentDisplay(d) {
    if (d.length < 1) { return; }
    var dd = document.getElementById(d);
    var df = document.getElementById(d+'IF');
    AssignPosition(dd);
    if (dd.style.display == 'none') { 
        dd.style.display = 'block'; 
        df.style.display = 'block';
    }
    else {
        df.style.display = 'none';
        dd.style.display = 'none';
    }
}
   


var helptext = new Array();
var curId;
var ajax;
var waiting = false;

function openHelp(helpid) {
    var text = null;
    waiting = false;

    for (var x = 0; x < helptext.length; x++) {
        if (helptext[x].id == helpid) {
            text = helptext[x].text;
            break;
        }
    }

    if (!text) {
        text = 'Loading Help Info...';
       
        if (window.XMLHttpRequest) { 
            ajax = new XMLHttpRequest();
        }
        else {
            ajax = new ActiveXObject('Microsoft.XMLHTTP');
        }

        if (ajax) {
            var url = 'mist_help.pl?' + helpid;
            curId = helpid;

            ajax.onreadystatechange = ajaxLoad; 
            ajax.open("GET", url, true);
            ajax.send(null);
        }
        else {
            text = 'Error retreiving help info...';
        }
        
    }

    displayHelp(text, true);
}


function ajaxLoad() {
    var newText;
    if (ajax.readyState == 4) {
        if (ajax.status == 200) {
            newText = ajax.responseText;
            helptext.push({id:curId,text:newText});
        }
        else {
            newText = 'Error with results...';
        }
        displayHelp(newText);
    }
    else {
        displayHelp(ajax.readystate);
    }
}


function closeHelp(forceClosed) {
    if (forceClosed == null) {
        waiting = true;
        setTimeout( function(){ closeHelp(false); }, 2000);
        return;
    }

    if (waiting || forceClosed) {
        waiting = false;
        displayHelp("", false);
    }
}


function keepHelp() {
    waiting = false;
}


function displayHelp(newText, showHelp) {
    this.myshow = true;

    if (newText != null) {
        document.getElementById('helptip').innerHTML = newText;
    }

    if (showHelp == null) {
        showHelp = this.myshow;
    }
    else {
        this.myshow = showHelp;
    }

    if (showHelp) {
        ShowContent('helptip');
    }
    else {
        HideContent('helptip');
    }
}

