/*
 * ToolTip
 * Based on jTip plugin
 */

//on page load (as soon as its ready) call JT_init
$(document).ready(ToolTipInit);

function ToolTipInit(){
  $(".tTip")
  .hover(function(){ToolTipShow(this)},function(){$('#ToolTip').remove()})
  .click(function(){return false});
}

function ToolTipShow(o){
  var title = o.title; 
  var url = o.href;
  if(title == false)title="&nbsp;";
  var de = document.documentElement;
  var w = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
  var hasArea = w - getALeft(o);
  var clickElementy = getATop(o) - 3; //set y position
  var queryString = url.replace(/^[^\?]+\??/,'');
  var params = parseQuery( queryString );
  if(params['width'] === undefined){params['width'] = 250};
  if(params['link'] !== undefined) {
    $('#' + linkId).bind('click',function(){window.location = params['link']});
    $('#' + linkId).css('cursor','pointer');
  }
  
  if(hasArea>((params['width']*1)+75)) {
    $("body").append("<div id='ToolTip' style='width:"+params['width']*1+"px'><div class='larrow'></div><div class='lclose'>"+title+"</div><div class='copy'><div class='loader'><div></div></div>");//right side
    var arrowOffset = getElementWidth(o) + 11;
    var clickElementx = getALeft(o) + arrowOffset; //set x position
  }
  else {
    $("body").append("<div id='ToolTip' style='width:"+params['width']*1+"px'><div class='rarrow' style='left:"+((params['width']*1)+1)+"px'></div><div class='rclose'>"+title+"</div><div class='copy'><div class='loader'><div></div></div>");//left side
    var clickElementx = getALeft(o) - ((params['width']*1) + 15); //set x position
  }
  $('#ToolTip').css({left: clickElementx+"px", top: clickElementy+"px"});
  $('#ToolTip').show();
  $('.copy').load(url+'&amp;ajax=1&amp;rnd='+Math.random());
}

function getElementWidth(o) {return o.offsetWidth;}

function getALeft(o) {
  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 getATop(o) {
  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;
}

function blockEvents(evt) {
  if(evt.target) {evt.preventDefault();} else {evt.returnValue = false;}
}
