	(function($){			
				function MyTooltip(elem, conf, tooltip){							
					var self 		= this;	
					
					self.conf 		= conf;
					self.busy 		= false;
					self.elemOrig 	= elem;				
					self.elem 		= $(elem);					
					self.timeout 	= null;
				
					if(!self.tooltip){	
						
						var tip  	= document.getElementById(tooltip);						
						var klon 	= tip.cloneNode(true); 					
						klon   	= $(klon);						
						klon.css({position: 'absolute', zIndex: '6000'});				
						$(document.body).append(klon);						
						self.tooltip = $(klon);
					}	
					
					
					self.content = self.tooltip.find('#mytooltip-content');							
					
					if(self.conf.ajaxUse !== true){	
						
						var content = '';
						
						switch (self.conf.contentType){
							case 'alt':							
								content = self.elem.attr('alt');
								break;
							case 'href':
								var href = self.elemOrig.href.split('#')[1];						
								content = $('#' + href).html();		
								break;
							default:
								content = self.conf.contentType;
											
						}
						
						self.content.append(content);
					}					
				
					
					/** Dodawanie akcji do przycisku zamknij ***/
					if(self.conf.showCloseLink === true && !self.linkClose){						
						self.linkClose = self.tooltip.find('#mytooltip-close');							
						if(self.linkClose !== null){
							self.linkClose.click(function(event){							
								event.preventDefault(); 															
								self.busy = false;
								self._hide(event);
								//self._clearContent();															
								}
							);
						}
					}						
					
					switch (self.conf.triggerEvent){
						case 'hover':							
							self.hideTimeout = null;
							
							self.elem.hover(
									function(event){
											try{
												clearTimeout(self.hideTimeout);
											}catch(exception){
												
											};									
											self._show(event);						
														
														
									},
									
									function(event){
											self.hideTimeout  = setTimeout(function(event){self._hide(event)}, 200);											
									}
							);
							
							self.tooltip.hover(
									function(event){								
										clearTimeout(self.hideTimeout);									
									},
									
									function(event){									
										self.hideTimeout  = setTimeout(function(event){self._hide(event)}, 0)
									}						
							);			
							
							
							
							break;
						default:
							self.elem.click(function(event){
											event.preventDefault();													
											self._show(event);
									}
							)					
					}				
				
				
					$.extend(self, {
					
						_show: function(event){								
							if(self.busy) return;
						
							self._updatePos();							
							if(self.conf.ajaxUse === true){	
									self._clearContent();
									self._showSpinner();
									self.busy = true;										
									setTimeout(function(){self._request();}, self.conf.ajaxDelay);									
							}							
							
							self.tooltip.fadeIn('fast');	
							
						},
						
						_hide: function(event){								
							self.tooltip.hide();
						},	

						_updateContent: function(data){															
							self._clearContent();
							self.content.append(data);
							self._updatePos();					
						},
						
						_clearContent: function(){							
							self.content.empty();						
						},
						
						_showSpinner: function(){							
							self.content.append('<center><img src="' + self.conf.spinner + '" /></center>');
						},
						
						_updatePos: function() {
							
							var tooltipWidth 	= self.tooltip.outerWidth();
							var tooltipHeight 	= self.tooltip.outerHeight();							
											
							var elemPos 	= self.elem.offset();
							var elemWidth 	= self.elem.outerWidth();
							var elemHeight 	= self.elem.outerHeight();				
							
							  
							switch(self.conf.position){
								 case 'top':									
									var posX = elemPos.left - (tooltipWidth / 2) + (elemWidth / 2);
									var posY = elemPos.top - tooltipHeight;						
									break;
									
								 case 'top-left':									
										var posX = elemPos.left;
										var posY = elemPos.top - tooltipHeight ;						
										break;								
									
								 case 'bottom':
									var posX = elemPos.left - (tooltipWidth / 2) + (elemWidth / 2);
									var posY = elemPos.top + elemHeight;
									break;
								 
								 case 'left':
									var posX = elemPos.left - tooltipWidth;
									var posY = elemPos.top - (tooltipHeight / 2) + (elemHeight / 2);
									break;
									
								 case 'right':
									var posX = elemPos.left + elemWidth + 20;
									var posY = elemPos.top - (tooltipHeight / 2) + (elemHeight / 2);
									break;
								 
								 default:
								 case 'default':
									var posX = (elemWidth / 2) + elemPos.left + 20;
									var posY = elemPos.top;
									break;
							  };
							  
							  posX = posX + parseInt(self.conf.offset.x);
							  posY = posY + parseInt(self.conf.offset.y);							
							  
							  self.tooltip.css({left: posX + 'px', top: posY + 'px'});					
						},

						_request: function(){								
							var url 	=  self.elemOrig.href;							
							self.conf.ajaxStart.call(self);						
							
							$.ajax({						
								async: 	true,
								url: 	url,								

								error: function(data){										
									self.conf.ajaxError.call(self, data);								
								},
								
								success: function(data){								
									var response 	= data.split('|');									
									var code 		= response[0];																		
									var content		= response[1];									
									
									if(code == '1'){
										self.conf.ajaxSuccess.call(self, content);
									}else{
										self.conf.ajaxError.call(self, content);
									}									
									
									self.conf.ajaxComplete.call(self, content);									
									self.busy = false;
								}
							});
						}	
						}
		
					)
				}
			
				$.fn.mytooltip = function(conf, tooltip){
				
					var defaults = {
						
						contentType: 'href',
						offset: {x: '0', y: '0'},	
						triggerEvent: 'click',
						hoverDelay: 1000,
						position: 'top-left',
					
						preventDefault: true,
						defaultContent: null,						
						spinner: 	'./design/img/ajax-loading.gif',
						
						showCloseLink:  true,					
						ajaxUse: 		false,
						ajaxDelay: 		1000,
						ajaxStart: 		function(data){},
						ajaxSuccess: 	function(data){this._updateContent(data);},
						ajaxComplete: 	function(data){this._updateContent(data);},
						ajaxError: 		function(data){}						
					}		
				
					var konfiguracja = $.extend(true, {}, defaults, conf);				
					
					this.each(function(index){						
						var temp = new MyTooltip(this, konfiguracja, tooltip);				
					});			
				}			
		})(jQuery)