
$(document).ready(function() {
	$('.langhelper').langHelper();
});

function langHelperReset() {
	$(".langhelper[rel='nohelp']").langHelper();
}

// Below 2 functions are originally grabbed from;
//		http://sundaymorning.jaysalvat.com/
// I modified them for my needs
// ------------------------------------------------------

$.fn.langHelper = function(settings) {
    var settings = $.extend({delay: 500, eventName: "click"}, settings);

    return this.each(function() {
        var $$ = $(this);
		$$.attr('rel', '');
        $$.bind(settings.eventName + '.langhelper', function(evt) {
			
			// To prevent it from opening many times, when event should be triggered once
			if ($$.attr('rel')=="nohelp") return false;
			$$.unbind(settings.eventName + '.langhelper');
			$$.attr('rel', 'nohelp');
			
			text = $$.text();
			text = text.toString();
            if (text.replace(/\W|\d/g, '') == '') {
                return false;
            }

            menuLeft = evt.pageX;
            menuTop  = evt.pageY;

			getTranslation(text, settings, function(response) {
				$('.langhelper-bubble').remove();
				var bubble;
				bubble = $('<div class="langhelper-bubble"><span><b>'+ text +'</b> : '+ response +'</span></div>'); 
				bubble.css({ 
					position:'absolute',  
					left:menuLeft,  
					top:menuTop 
					})
				.hide()
				.appendTo('body');
			($.browser.msie) ? bubble.show() : bubble.fadeIn('fast');
			bubble.bind('mouseleave', function() {
				setTimeout( function() { 
					($.browser.msie) ? bubble.remove() : bubble.fadeOut('fast', function() { bubble.remove() } );
					}, settings.delay);
					langHelperReset();
				});
			if (thickerbox_init) thickerbox_init('.thickerbox');
			});
            
			evt.preventDefault();
			evt.stopPropagation();
        });
    });
};

// ------------------------------------------------------
function getTranslation(text, settings, callback) {
	var tr;
	if ($.jCache) if (tr = $.jCache.getItem(text)) if (tr!="fail") return callback(tr);
    $.ajax({
        url: '?q=langhelper/get',
        dataType: 'html',
        data: { word: ''+ text.substr(0, 5000) },
        success: function(response) { 
			if (response!="fail") {
				if ($.jCache) $.jCache.setItem(text, response);
            	callback(response);
			}
        }
    });                                                       
};

// ------------------------------------------------------

