
//on page load (as soon as its ready) call tooltip_init
$(document).ready(tooltip_init);

function tooltip_init(){
	$("a.tooltip").mouseover(
		function(){
			tooltip_show(this.rev,this.id,'tooltip');	
		}
	).mouseleave(
		function() {
			window.tooltip_process.abort();
			$('#tooltip').remove();
		}
	);

	$("a.tooltip_support").mouseover(
		function(){
			tooltip_show(this.rev,this.id,'tooltip_support');	
		}
	).mouseleave(
		function() {
			window.tooltip_process.abort();
			$('#tooltip_support').remove();		
		}
	);

}

function tooltip_show(url,linkId,format){

	if (url != undefined) {
			if (window.tooltip_process != undefined) {
				window.tooltip_process.abort();
			}
			window.tooltip_process = $.ajax({
			  url: url,
			  cache: true,
				timeout: 5000,
				global: false,
				dataType: "json",
        beforeSend: function() {
					if(format=='tooltip_support'){
						$('#tooltip_support').hide();	
						$('#tooltip_support').remove();
					} else {
						$('#tooltip').hide();
						$('#tooltip').remove();
					}
        },				
			  success: function(json){
					if(format=='tooltip_support'){
						var title = json.support.title;
						var content = json.support.content;
						var tooltip_width = json.support.tooltip_width;
					} else {
						var title = json.tooltip.title;
						var content = json.tooltip.content;
						var tooltip_width = json.tooltip.tooltip_width;
					}
			
					if(width == undefined){
						var width = '300';
					}

						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
						
						
						if(hasArea>((width*1)+75)){
							$("body").append("<div id='"+format+"' style='width:"+tooltip_width*1+"px'><div id='tooltip_arrow_left'></div><div id='tooltip_title_left'>"+title+"</div><div id='tooltip_content'></div></div>");//right side
							var arrowOffset = getElementWidth(linkId) + 11;
							var clickElementx = getAbsoluteLeft(linkId) + arrowOffset; //set x position
						}else{
							$("body").append("<div id='"+format+"' style='width:"+tooltip_width*1+"px'><div id='tooltip_arrow_right' style='left:"+((tooltip_width*1)+1)+"px'></div><div id='tooltip_title_right'>"+title+"</div><div id='tooltip_content'></div></div>");//left side
							var clickElementx = getAbsoluteLeft(linkId) - ((tooltip_width*1) + 15); //set x position
						}
				
				
						if(format=='tooltip_support'){
							$('#tooltip_support').css({left: clickElementx+"px", top: clickElementy+"px"});
							$('#tooltip_content').html(content);
							$('#tooltip_support').show();
							$('#tooltip').remove();
						} else {
							$('#tooltip').css({left: clickElementx+"px", top: clickElementy+"px"});
							$('#tooltip_content').html(content);
							$('#tooltip').show();	
							$('#tooltip_support').remove();
						}

			      }, error:function (x,e){

            }       
        });
	} //END IF NOT URL

} //END FUNCTION

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;
}

function blockEvents(evt) {
	if(evt.target){
		evt.preventDefault();
	} else {
		evt.returnValue = false;
	}
}
