var glossaryOpenTimeout= {};
var glossaryCloseTimeout= {};
var glossaryEntries = new Array();

//TODO - global setzen:
var ecircleBaseUrl = 'http://www.ecircle.com/';

$(document).ready(function(){
	
	$('.glossary-entry abbr, .glossary-entry dfn, .glossary-entry acronym').each(
		function () {
			var bgImg = $(this).css("background-image");
			var target = $(this).attr('target');

			if (bgImg == 'url(' + ecircleBaseUrl + 'fileadmin/sys/gfx/info.gif)' || bgImg == 'url("' + ecircleBaseUrl + 'fileadmin/sys/gfx/info.gif")') {
				
				var entryId = $(this).attr('class');
				var idArray = entryId.split('-');
				var entryUid = idArray[2];
				var popupId = 'glossary-popup-' + entryUid;
				
				if ($.browser.msie && $.browser.version < 7) {
					var fileExt = 'gif';
				} else {
					var fileExt = 'png';	
				}

				var entryExists = $.inArray(entryUid, glossaryEntries);		
				if (entryExists < 0) {
					glossaryEntries.push(entryUid);
					$.get(ecircleBaseUrl + 'index.php?eID=glossary_async&cmd=getGlossaryEntryById&entryUid=' + entryUid + '&L=' + ecircleSysLanguageUid, function(data){
						var content = '<div class="glossary-popup" id="' + popupId + '">';
						content += '<div class="glossary-popup-t"><img class="glossary-popup-tl" src="fileadmin/sys/gfx/glossary_tl.'+fileExt+'" alt="" /><div class="glossary-popup-tm"></div><img class="glossary-popup-tr" src="fileadmin/sys/gfx/glossary_tr.'+fileExt+'" alt="" /></div>';
						content += '<div class="glossary-popup-content">';
						content += data;
						content += '</div>';
						content += '<div class="glossary-popup-b"><img class="glossary-popup-bl" src="fileadmin/sys/gfx/glossary_bl.'+fileExt+'" alt="" /><div class="glossary-popup-bm"></div><img class="glossary-popup-br" src="fileadmin/sys/gfx/glossary_br.'+fileExt+'" alt="" /></div>';
						content += '<div class="glossary-popup-ba"><img src="fileadmin/sys/gfx/glossary_ba.'+fileExt+'" alt="" /></div>';
						content += '</div>';
						$('body').append(content);
					});
				}

				$(this).hover(
					function(e){
						var idArray = $(this).attr('class').split('-');
						var entryUid = idArray[2];
						var popupId = 'glossary-popup-' + entryUid;
						
						popupHeight = $('#' + popupId).height();
						
						var offset = $(e.target).offset();
						var x = offset.left + (e.target.offsetWidth/2) - 70;
						var y = offset.top - popupHeight;

						$('#' + popupId).css('left', x);
						$('#' + popupId).css('top', y);

						glossaryOpenTimeout[entryUid] = window.setTimeout("showGlossaryPopup('" + popupId + "');", 100);
						
						$('#' + popupId).css('background', 'transparent');
						$('#' + popupId).unbind();
						
						$('#' + popupId).hover(
							function(e){	
								var idArray = $(this).attr('id').split('-');
								var entryUid = idArray[2];
								var popupId = 'glossary-popup-' + entryUid;
								window.clearTimeout(glossaryCloseTimeout[entryUid]);								
							},
							function(e){
//console.debug(e.target);
								var idArray = $(this).attr('id').split('-');
								var entryUid = idArray[2];
								var popupId = 'glossary-popup-' + entryUid;
								hideGlossaryPopup(popupId);
							}																			
						);							
					},
					function(e){					
						var idArray = $(this).attr('class').split('-');
						var entryUid = idArray[2];
						var popupId = 'glossary-popup-' + entryUid;
						window.clearTimeout(glossaryOpenTimeout[entryUid]);
						glossaryCloseTimeout[entryUid] = window.setTimeout("hideGlossaryPopup('" + popupId + "');", 300);
					}				
				);					
			}											
		}
	);
	
	$('body').click(
		function(e){
			if(e.target.className.substr(0,14) != 'glossary-entry') {
				$('.glossary-popup:visible').fadeOut(100);				
			}
		}
	);
	
});

function showGlossaryPopup(popupId) {
	$('#' + popupId).css('display', 'none');
	$('#' + popupId).css('visibility', 'visible');
	if ($.browser.msie) {
		$('#' + popupId).show();
	} else {
		$('#' + popupId).fadeIn(200);		
	}
}

function hideGlossaryPopup(popupId) {
	if ($.browser.msie) {
		$('#' + popupId).hide();
	} else {
		$('#' + popupId).fadeOut(100);		
	}
}