// JavaScript Document

(function($) {
	$.fn.dictionary = function(settings) {
		
		var settings = jQuery.extend({									 
			loadWidth:	50
		}, settings);
		// Caching the jQuery object with all elements matched
		var term = this; // This, in this context, refer to jQuery object
		var text = '';
		var pageX = 0;
		var pageY = 0;
		var pos = "center";
		var dimensions = {width: 0, height: 0};
		
		function _over(i){
			_remove();
			text = $(i.target).text();
			if($(i.target).offset().left < 200){
				pos = "left";
			} else if((_getDimensions().width - ($(i.target).offset().left+$(i.target).width())) < 200){
				pos = "right";
			} else {
				pos = "center";	
			}
			$('body').append('<div id="term-container" class="'+pos+' term-container term-loading"><div id="term-definition"><div class="term-top"><h6></h6></div><div class="term-bottom"><p></p></div></div></div>');
			$('#term-container').css({
				position : 'absolute'
			});
			$('#term-container').hide().fadeIn("fast",_startLoad);
			_mouseMove();
		}
		
		function _out(i){
			_remove();
		}
		
		function _mouseMove(){		
			$().mousemove(function(e){
				if(pos == "center"){
					pageX = e.pageX-200;
				} else if(pos == "left"){
					pageX = e.pageX-15;
				} else if(pos == "right"){
					pageX = e.pageX-385;
				}
					pageY = e.pageY+10;
					$('#term-container').css({
						'left' : pageX+'px',
						'top' : pageY+'px'
					});
			});	
		}
		
		function _startLoad(){
			_replaceText($(term).data('title'));
		}
		
		function _replaceText(data){
			$('#term-container').removeClass('term-loading');
			$('#term-definition .term-top h6').html($(term).html());
			$('#term-definition .term-bottom p').html(data);
		}
		
		function _error(){
			
		}
		
		function _remove(){
			$('.term-container').remove();
		}
	
		$(term).hover(_over,_out);
		$(term).click(function(){
			document.location.href = "?sub=dictionary#" + text.substr(0, 1).toUpperCase();					   
		});
		
		$(term).data('title',$(term).attr('title'));
        $(term).removeAttr('title');

		function _getDimensions(){
			if (document.documentElement) {
				dimensions.width = document.documentElement.offsetWidth;
				dimensions.height = document.documentElement.offsetHeight;
			} else if (window.innerWidth && window.innerHeight) {
				dimensions.width = window.innerWidth;
				dimensions.height = window.innerHeight;
			}
			return dimensions;
		}

	};
})(jQuery);
