$(document).ready(jtip);

function jtip(){
$("a.jtip")
.hover(function(){jshow(this.href,this.id,this.name)},function(){$('#j').remove()})
.click(function(){return false});
}

function jshow(url,linkId,title){
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) - 300;
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']});
}

if(hasArea>((params['width']*1)+100)){
$("body").append("<div id='j' style='width:"+params['width']*1+"px'><div id='jleft'>"+title+"</div><div id='jread'><div class='jrun'><div></div></div>");
var arrowOffset = getElementWidth(linkId) + 10;
var clickElementx = getAbsoluteLeft(linkId) + arrowOffset;
}

else{
$("body").append("<div id='j' style='width:"+params['width']*1+"px'><div id='jright'>"+title+"</div><div id='jread'><div class='jrun'><div></div></div>");
var clickElementx = getAbsoluteLeft(linkId) - ((params['width']*1) + 100);
}

$('#j').css({left: clickElementx+"px", top: clickElementy+"px"});
$('#j').show();
$('#jread').load(url);
}

function getElementWidth(objectId){
x = document.getElementById(objectId);
return x.offsetWidth;
}

function getAbsoluteLeft(objectId){
o = document.getElementById(objectId)
oLeft = o.offsetLeft
while(o.offsetParent!=null){
oParent = o.offsetParent
oLeft += oParent.offsetLeft
o = oParent
}

return oLeft
}

function getAbsoluteTop(objectId){
o = document.getElementById(objectId)
oTop = o.offsetTop
while(o.offsetParent!=null){
oParent = o.offsetParent
oTop += oParent.offsetTop
o = oParent
}

return oTop
}

function parseQuery ( query ){
var Params = new Object ();
if ( ! query ) return Params;
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;
}

}
