﻿/*

* JTip

* By Cody Lindley (http://www.codylindley.com)

* Under an Attribution, Share Alike License

* JTip is built on top of the very light weight jquery library.

*/

//on page load (as soon as its ready) call JT_init
var JTDelay = null;

function JTClose() {

    $('.JT').remove();
}

function JT_show(url, linkId, title, posY) {
    //  if (FlagJTIP == true) {
    //  clearTimeout(JTDelay);
    clearTimeout(JTDelay);
    if (title == false) title = "&nbsp;";
    var de = document.documentElement;
    var w = self.innerWidth || (de && de.clientWidth) || document.body.clientWidth;
    var hasArea = w - getAbsoluteLeft(linkId);
    var clickElementy = getAbsoluteTop(linkId) - 3; //set y position
    var queryString = url.replace(/^[^\?]+\??/, '');
    var params = parseQuery(queryString);
    if (params['width'] === undefined) { params['width'] = 200;
    };
    if (params['link'] !== undefined) {
        $('#' + linkId).bind('click', function () { window.location = params['link']; });
        $('#' + linkId).css('cursor', 'pointer');
    }

    if (hasArea > ((params['width'] * 1)) + 35) {
        $("body").append("<div id='JT'  class='JT' style=' display:none;width:" + params['width'] * 1 + "px; '><div id='JT_close_left'>" + title + "</div><div id='JT_copy' ><div class='JT_loader'><img src='css/Images/loading.gif'/><div></div></div>"); //right side
        var arrowOffset = getElementWidth(linkId);
        var clickElementx = getAbsoluteLeft(linkId) + arrowOffset; //set x position
    } else {
        $("body").append("<div id='JT'   class='JT' style='display:none; width:" + params['width'] * 1 + "px; '><div id='JT_arrow_right' style='left:" + ((params['width'] * 1) + 1) + "px'></div><div id='JT_close_right'>" + title + "</div><div id='JT_copy'><div class='JT_loader'><img src='css/Images/loading.gif'/><div></div></div>"); //left side
        var clickElementx = getAbsoluteLeft(linkId) - ((params['width'] * 1)) - 5; //set x position
    }
    $('#JT_copy').load(url);

    $('#JT').css({ left: clickElementx + "px", top: posY + "px" });
    $('#JT').mouseover(function () {
        clearTimeout(JTDelay);
    });
    $('#JT').mouseout(function () {
        JTDelay = setTimeout(function () {

            JTClose();
        }, 100);

    });


    $('#JT').show();
    // }

}

function getElementWidth(objectId) {
    var x = document.getElementById(objectId);
    return x.offsetWidth;

}

function getAbsoluteLeft(objectId) {
    // Get an object left position from the upper left viewport corner
    var o;
    o = document.getElementById(objectId);
    var oLeft;
    oLeft = o.offsetLeft;             // Get left position from the parent object
    while (o.offsetParent != null) {   // Parse the parent hierarchy up to the document element
        var oParent = o.offsetParent;    // Get parent object reference
        oLeft += oParent.offsetLeft;  // Add parent left position
        o = oParent;
    }
    return oLeft;
}
function getAbsoluteTop(objectId) {
    // Get an object top position from the upper left viewport corner
    var o = document.getElementById(objectId);
    var oTop = o.offsetTop;             // Get top position from the parent object
    while (o.offsetParent != null) { // Parse the parent hierarchy up to the document element
        var oParent = o.offsetParent;  // Get parent object reference
        oTop += oParent.offsetTop;  // Add parent top position
        o = oParent;
    }
    return oTop;
}
function parseQuery(query) {
    var params = new Object();
    if (!query) return params; // return empty object
    var pairs = query.split(/[;&]/);
    for (var i = 0; i < pairs.length; i++) {
        var keyVal = pairs[i].split('=');
        if (!keyVal || keyVal.length != 2) continue;
        var key = unescape(keyVal[0]);
        var val = unescape(keyVal[1]);
        val = val.replace(/\+/g, ' ');
        params[key] = val;
    }
    return params;
}

function blockEvents(evt) {
    if (evt.target) {
        evt.preventDefault();
    } else {
        evt.returnValue = false;
    }
}
