//on page load (as soon as its ready) call JT_init
$(document).ready(JT_init);

function JT_init(){
	   $("a.jTip")
	   .hover(function(){ JT_show(this.name,this.id)},function(){$('#JT').remove()});
}

function JT_show(url,linkId){
	var de = document.documentElement;
	var w = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
  
	var hasArea = w - getAbsoluteLeft(linkId);
	var clickElementy = getAbsoluteTop(linkId);// + 30; // - 3; //set y position
	
	var queryString = url.replace(/^[^\?]+\??/,'');
	var params = parseQuery( queryString );
	if(params['ttwidth'] === undefined){params['ttwidth'] = 250};
	var width = params['ttwidth']*1;
	var stl = "position: absolute;	z-index:100; background-color:white;border: 1px solid black;	padding: 3px;";

	if(hasArea>(width+25)){
		var leftOffset = 11;//getElementWidth(linkId) + 11;
		var clickElementx = getAbsoluteLeft(linkId) + leftOffset; //set x position
		$("body").append("<div id='JT' style='"+stl+"width:"+width+"px'><div id='JT_content' style='margin:5pt'></div></div>");//right side
	}else{
		var clickElementx = /* getAbsoluteLeft(linkId)*/ w - (width + 15); //set x position
		if (clickElementx < 10) {
		  clickElementx=10;
		  if (clickElementx + width > w - 20)
		    width = w - 30;
		} 
		$("body").append("<div id='JT' style='"+stl+"width:"+width+"px'><div id='JT_content'></div></div>");//left side
	}
	
	$('#JT').css({left: clickElementx+"px", top: clickElementy+"px"});
	$('#JT').hide();
  $('#JT_content').load(url, function() { 
        var s = $("#JT_content").html(); 
        if ( s != null &&  s.length>1) 
          $('#JT').show(); 
          var tiph = $('#JT').height(); 
          clickElementy -= tiph+25;
         $('#JT').css({top: clickElementy+"px"});
	      }
    );
	
}

function getElementWidth(objectId) {
	x = document.getElementById(objectId);
	return x.offsetWidth;
}

function getAbsoluteLeft(objectId) {
	// Get an object left position from the upper left viewport corner
	o = document.getElementById(objectId)
	oLeft = o.offsetLeft            // Get left position from the parent object
	while(o.offsetParent!=null) {   // Parse the parent hierarchy up to the document element
		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
	o = document.getElementById(objectId)
	oTop = o.offsetTop            // Get top position from the parent object
	while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element
		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;
}

