/*
 * ZoomTip
 *
 * Licensed under the revised BSD License.
 * Copyright 2010 Ralf Bjarne Taraldset
 * All rights reserved.
 */
(function($){  
	 $.fn.zoomtip = function(options) {  
	  
	  var defaults = {  
	   'css': 'zoomtipicon',  
	   'text': null,
	   'fadeInSpeed': 200,
	   'fadeOutSpeed': 200,
	   'fadeInTo': 1,
	   'fadeOutTo': 0.15
	  };
	  
	  var options = $.extend(defaults, options);  
	      
	  return this.each(function() {  
		  var obj = $(this);
		  	  
		  // zoomtip
		  var text = (options.text != null) ? options.text : ""; 
		  var zoomtip = $("<div class='" + options.css + "'>" + text + "</div>");
		  zoomtip.css("position", "absolute");
		  zoomtip.hide();
		
		  // find closest realtive parent - to pervent to become encapsualted by other tags (eg. a href)
		  var relativeParent = obj.parents().filter(function() { 
			  // reduce to only relative position or "body" elements
			  return $(this).is('body') || $(this).css('position') == 'relative';
		  }).slice(0,1); // grab only the "first"
		  
		  // add to dom
		  zoomtip.appendTo(relativeParent);
		  		  
		  // geometircs
		  zoomtip.css('top', obj.position().top + obj.padding().top + obj.margin().top + obj.border().top);
		  var left = obj.position().left + obj.margin().left + obj.border().left + obj.padding().left + obj.width(); // relations to the image
		  left = left - zoomtip.border().left - zoomtip.border().right - zoomtip.padding().right - zoomtip.padding().left - zoomtip.width(); // relations to the the zoom tip itselfe
		  zoomtip.css('left', left);
		  
		  // redirect click
		  zoomtip.click(function() {
			  obj.click();
		  });
		  
		  zoomtip.css("opacity", options.fadeOutTo);
		  zoomtip.show();
		  // mouse over (for both)
		  $.each([obj, zoomtip], function() {
			  this.hover(function(){
				 zoomtip.stop().fadeTo(options.fadeInSpeed, options.fadeInTo);
				},function(){
				 zoomtip.stop().fadeTo(options.fadeOutSpeed, options.fadeOutTo);
			  });
		  });
		  
		  
	  });  
     };  

})(jQuery);
