$(document).ready(function() {
	
    $("body").append("<div id='gtooltip'></div>");
    $("#gtooltip").css({'width':0+'px','top': 0, 'left': 0});
});
var toolstat = new Array;
(function($){
	// START
 	$.fn.extend({ 
 		tmpTitle : '',
 		gtool: function(options) {
 			
 			var themes = {
 				ghelp: '<div class="gtooltheme"><div class="tt_tresc">[content]</div></div>',
 				ginfo: '<div class="gtooltheme"><div class="tt_tresc22">[content]</div></div>',
 				gnews: '<div class="gtooltheme"><div class="tt_tresc22">[content]</div></div>'
 				
 			};
 			/*
 			var themes = {
 				ghelp: '<table cellpadding="0" cellspacing="0" border="0" class="tt_table"><tbody><tr><td class="tt_nar tt_lg"></td><td class="tt_g"></td><td class="tt_nar tt_pg"></td></tr><tr><td class="tt_l"></td><td class="tt_pomoc tt_s"><div class="tt_nag">[title]</div><div class="tt_tresc">[content]</div></td><td class="tt_p"></td></tr><tr><td class="tt_nar tt_ld"></td><td class="tt_d"></td><td class="tt_nar tt_pd"></td></tr></tbody></table>',
 				ginfo: '<table cellpadding="0" cellspacing="0" border="0" class="tt_table"><tbody><tr><td class="tt_nar tt_lg"></td><td class="tt_g"></td><td class="tt_nar tt_pg"></td></tr><tr><td class="tt_l"></td><td class="tt_s tt_info"><div class="tt_nag">[title]</div><div class="tt_tresc">[content]</div></td><td class="tt_p"></td></tr><tr><td class="tt_nar tt_ld"></td><td class="tt_d"></td><td class="tt_nar tt_pd"></td></tr></tbody></table>',
 				gnews: '<table cellpadding="0" cellspacing="0" border="0" class="tt_table"><tbody><tr><td class="tt_nar tt_lg"></td><td class="tt_g"></td><td class="tt_nar tt_pg"></td></tr><tr><td class="tt_l"></td><td class="tt_s tt_news">[content]</td><td class="tt_p"></td></tr><tr><td class="tt_nar tt_ld"></td><td class="tt_d"></td><td class="tt_nar tt_pd"></td></tr></tbody></table>'
 			};
 			*/
			var defaults = {
				content:'title',
				margin:30,
				marginT:0,
				addWidth:0,
				inText:'',
				theme:'help',
				type: 'html',// html,ajax
				ajaxUrl:false
			};
 			
 			var options = $.extend(defaults, options);
			
	    	return this.each(function() {
	    			$("#gtooltip").gclearClasses();
					
					
		            $("#gtooltip").stop(true, true);
		            
		            tmpTitle = $(this).attr('gtool');		            
		            
		            // pobierz
		            if(options.theme=='help'){
		            	$("#gtooltip").gtoolContent($(this),options,themes.ghelp,'Pomoc');
		            	var direct = 0;
		            }else if(options.theme=='info'){		            	
		            	$("#gtooltip").gtoolContent($(this),options,themes.ginfo,tmpTitle);
		            	var direct = 1;
		            }else if(options.theme=='news'){		            	
		            	$("#gtooltip").gtoolContent($(this),options,themes.gnews,tmpTitle);
		            	var direct = 1;
		            }
		            if(options.theme=='help'){
		            	if(options.addWidth>0){
			            	$("#gtooltip").gsetPosition(this,'right',options,options.addWidth);		            	
			            	$("#gtooltip").gsetPosition(this,'right',options,options.addWidth);	
			            }else{ 
			            	$("#gtooltip").gsetPosition(this,'right',options,300);		            	
			            	$("#gtooltip").gsetPosition(this,'right',options,300);	
			            }
	            	
		            }else if(options.theme=='info'){
		            	$("#gtooltip").gsetPosition(this,'top',options,200);
		            	$("#gtooltip").gsetPosition(this,'top',options,200);
		            }else if(options.theme=='news'){		            	
		            	$("#gtooltip").gsetPosition(this,'top',options,280);
		            	$("#gtooltip").gsetPosition(this,'top',options,280);
		            }    
         
		            
		            
		            
		           
		            
		            if(options.ajaxUrl!=false){
		            	if(toolstat[options.ajaxUrl]){
		            		$("#gtooltip").find('div.tt_tresc22').html(toolstat[options.ajaxUrl]);
		            		$("#gtooltip").show();
		            	}else{
		            		$.get(options.ajaxUrl,function(respi){	   
			            		var oh = $("#gtooltip").find('div.tt_tresc22').height();         		
			            		$("#gtooltip").find('div.tt_tresc22').html(respi);
			            		toolstat[options.ajaxUrl] = respi;
			            		var nh = $("#gtooltip").find('div.tt_tresc22').height();  
			            		var aoffset = $("#gtooltip").position();	
			            		var atop = oh-nh;
			            		var ntop = aoffset.top+atop;
			            		//alert(oh+'->nh: '+nh+" atop: "+atop+" ntop:"+ntop);
			            		if(ntop>370){
			            			$("#gtooltip").css({top:ntop});
			            		}
			            		//alert(ntop);
			            		$("#gtooltip").show();
			               	});	
		            	}
			            		               
		            }else{
		            	$("#gtooltip").show();
		            }
		            $(this).mouseout(function(e) {
			            $("#gtooltip").stop(true, true);
			            $("#gtooltip").hide();
			            $(this).attr('gtool', tmpTitle);
			        });
    		});
    	},
    	gtoolContent: function(obj,o,theme,titlex) {
    		//alert($(obj).next().attr('class'));
    		if(o.type == 'html'){
				$("#gtooltip").html(''); 
				if(o.inText!=''){
					tmpContent = o.inText;
				}else{
					if(o.theme=='help'){
						tmpContent = $(obj).parent().find('.gtool_content').html();
					}else{
						tmpContent = $(obj).next().html();
					}
				}
	    		themex = '';
	    		themex = $("#gtooltip").gtoolPrepare('[title]',titlex,theme);
	    		if(o.ajaxUrl!=false){
	    			if(toolstat[o.ajaxUrl]){
	    				tmpContent = toolstat[o.ajaxUrl];
	    			}else{
	    				tmpContent = '<p class="timeCont" style="text-align:center;margin:0px;padding:0px;"><img style="height:110px;" src="http://gniezno.com.pl/grafika/ajaxAdverts.gif"/></p>';
	    			}
	    			
	    		}
	    		if(tmpContent){
	    				themex = $("#gtooltip").gtoolPrepare('[content]',tmpContent,themex);
	    		}else{
	    				themex = $("#gtooltip").gtoolPrepare('[content]','brak treści..',themex);
	    		}
	    		//if(o.ajaxUrl!=false){
	    		//	$("#gtooltip").find('.tt_tresc22').html('<p class="timeCont" style="text-align:center;"><img src="http://gniezno.com.pl/grafika/ajaxAdverts.gif"/></p>');
	    		//}else{
	    			$("#gtooltip").html(themex);
	    		//}
    		}
    	},
    	gsetPosition: function(el,direction,options,rx) {
    				
		            var position = $(el).position();
		            var width = $(el).width();
					var height = $(el).height();
					
					var gwidth = $("#gtooltip").width();
					var gheight = $("#gtooltip").height();    	
		            var offset = $("#gtooltip").position();		            
		            var winW = $(window).width();
		            var winH = $(window).height();		            
		            var rmaxX = rleft+width;
		            var rmaxY = rtop+height;
		            var pad = $(el).css("padding-left");						
		            var padT = $(el).css("padding-left");
		            var domEl = $(el).get(0);	
		            var tag = domEl.tagName;					
    		if(direction=='right'){						
						var rleft = position.left+width+options.margin;	
						var rtop = position.top + Math.round(height/2) - (Math.round(gheight/2))+3+options.marginT;		
						$("#gtooltip").addClass('gleft');
						if(options.addWidth>0){
							$("#gtooltip").find('.tt_s').css('width',options.addWidth);
						}
						//alert(pad);
						rleft = rleft+parseInt(pad);
						if(tag == 'SPAN' && $(el).attr('class')=='radioSpan'){
							rtop = rtop-4; 
							rleft = rleft-16;
						}
			}else if(direction == 'top'){
						var rleft = position.left+(width/2)-(gwidth/2);	
						var rtop = position.top - gheight - options.margin;		
						$("#gtooltip").addClass('gtop');    			
    		}else if(direction == 'bottom'){
						var rleft = position.left+(width/2)-(gwidth/2);	
						var rtop = position.top + height + options.margin;		
						$("#gtooltip").addClass('gbottom');    			
    		}else if(direction == 'left'){
						var rleft = position.left-width-options.margin;	
						var rtop = position.top + Math.round(height/2) - (Math.round(gheight/2));		
						$("#gtooltip").addClass('gleft');   			
    		}
    		
    		$("#gtooltip").css({'width':rx+'px','top': rtop, 'left': rleft});   		
    		
    	},
    	gclearClasses:function(){
    		 $("#gtooltip").removeClass('ghelp').removeClass('ginfo').removeClass('gnews');
    		 $("#gtooltip").removeClass('gtop').removeClass('gbottom').removeClass('gleft').removeClass('gright');
		            
    	},
    	
    	
		gtoolPrepare: function(search, replace, subject, count) {
		    var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
		            f = [].concat(search),
		            r = [].concat(replace),
		            s = subject,
		            ra = r instanceof Array, sa = s instanceof Array;
		    s = [].concat(s);
		    if (count) {
		        this.window[count] = 0;
		    }
		
		    for (i=0, sl=s.length; i < sl; i++) {
		        if (s[i] === '') {
		            continue;
		        }
		        for (j=0, fl=f.length; j < fl; j++) {
		            temp = s[i]+'';
		            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
		            s[i] = (temp).split(f[j]).join(repl);
		            if (count && s[i] !== temp) {
		                this.window[count] += (temp.length-s[i].length)/f[j].length;}
		        }
		    }
		    return sa ? s : s[0];
		}    	
    	
	});
})(jQuery);

