/*
 * 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
$(document).ready(function(){   
	JT_init();
});

$.fn.image = function(src){
    return this.each(function(){
        var img = new Image();
        img.src = src;
        this.appendChild(img);
    });
}

function JT_init(){
	$("a.jTip")
	.hover(function(){JT_show(this.href,this.id,this.title,this.imgURL)},function(){$('#JT').hide()})
	.click(function(){return false});	   
}

function JT_show(url,linkId,title,imgURL){
	if(title == false)title="&nbsp;";

	var queryString = url.replace(/^[^\?]+\??/,'');
	var params = parseQuery( queryString );
	var linkObj = $('#' + linkId);

	if(params['link'] !== undefined){
		linkObj.bind('click',function(){window.location = params['link']});
		linkObj.css('cursor','pointer');
	}
	
	var jDiv = $('#JT');
	$('#JT_title').text(title);
	$('#JT_copy').html("");
	var jImage = $('#JT_copy');
	$('#JT_copy').image(url);
	//winBottom = $(window).attr('pageYOffset') + $(window).height();
	jDiv.show();
	jDiv.hide();
	winBottom = $(window).attr('scrollY') + $(window).height();
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		winBottom = window.pageYOffset + $(window).height();
		//scrOfY = window.pageYOffset;
		//scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		winBottom = document.body.scrollTop + $(window).height();
		//scrOfY = document.body.scrollTop;
		//scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		winBottom = document.documentElement.scrollTop + $(window).height();
		//scrOfY = document.documentElement.scrollTop;
		//scrOfX = document.documentElement.scrollLeft;
	}
	jDiv.css({left:linkObj.offset().left-(jDiv.width()+12)+"px", top:linkObj.offset().top+"px"});
	jDiv.css('display','block');
	if ((jDiv.offset().top + jImage.height()) > winBottom) {
		jDiv.css({left:linkObj.offset().left-(jDiv.width()+12)+"px", top:(winBottom-(jDiv.height()+20))+"px"});
		jDiv.css('display','block');
		//alert("div moved...");
	} else {
		//alert("linkObj.offset().top:"+linkObj.offset().top+" $(window).height()"+$(window).height()+" $(window).attr('scrollY'):"+$(window).attr('scrollY')+" jImage.height():"+jImage.height()+" jDiv.offset().top"+jDiv.offset().top);
	}
	//alert("winBottom:"+winBottom+" jImage.height():"+jImage.height());
	jDiv.show();
}

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;
}

