


$( function () {

	function parse_popups () {

		$('.dbglossary_popup').unbind().click( function () {
			$(this).dbglossary_popup( { url:$(this).attr('href'), position:$(this).offset() } );
			return false;
		}).mouseleave( function (){
			$('.dbglossary_popupwindow').fadeOut('fast');
		});
	}
	
	try { register_page_init_func( parse_popups ); } catch (e) {}
	parse_popups();
	
});


(function($){
	$.fn.extend({
	
		'dbglossary_pageslider': function () {
			return this.each( function () {
				$(this).unbind('click').click( function( e ) {
					
					var doc = ($.isIE() ? 'html' : 'body');
					
					var c_off = e.pageY - $(this).offset().top;
					var m_off = e.pageY - $(doc).scrollTop();
					
					var l = $(this).attr('href').split('#a_')[1];
					var a = '.letter_' + l;
					
					$( doc ).animate( { scrollTop: $(a).find('li.l_'+l+' a').offset().top - m_off + c_off }, {duration:1000, easing:'easeInOutQuint'} );
					
					return false;
				});
			});
		},
		
		'dbglossary_scrollToAnchor': function ( opt ) {

			var def = { top:false };
			var opt = $.extend( def, opt);
			
			return this.each( function () {
				$(this).click( function( e ) {
				
					var doc = ($.isIE() ? 'html' : 'body');
					
					var l = $(this).attr('href');
					if (l) l = l.split('#a_')[1];
					var top = opt.top === false ? $('.letter_'+l).offset().top : opt.top;
					
					$(doc).animate( { scrollTop: top}, {duration:1000, easing:'easeInOutQuint'} );
					
					return false;
				});
			});
		},
		
		'dbglossary_accordeon': function ( opt ) {
		
			var def = { closeOther:true, sliderDiv:'.sliderbox' };
			var opt = $.extend( def, opt);
			var _ref = this;
			
			return this.each( function () {	
				$(this).click( function () {
					var isOpen = $(this).parent().find(opt.sliderDiv).is(':visible');
					if (opt.closeOther) {
						$(_ref).parent().find(opt.sliderDiv+':visible').slideUp();
						$(_ref).removeClass('selected');
					}
					if (!isOpen) $(this).addClass('selected');
					$(this).parent().find(opt.sliderDiv).slideToggle();
				});
			});
		},
		
		'dbglossary_tabs': function ( opt ) {
			
			var _ref = this;
			var def = { navi:$(_ref).find('ul.letter_navi') };
			var opt = $.extend( def, opt);
			
			show_sheet('a', false );
			
			$(opt.navi).find('li a').each ( function () {				
				$(this).click( function () {
					var l = $(this).attr('href');
					if (l) l = l.split('#a_')[1];
					show_sheet( l );
					return false;
				});	
			});
			
			return this.each( function () {});
			
			function show_sheet( letter, ani ) {
				if (ani === false) {
					$(_ref).find('.letter_sheet').css({display:'none'});
					$(_ref).find('.letter_'+letter).css({display:'block'});
				} else {
					$(_ref).find('.letter_sheet:visible').animate( {'opacity':0}, {complete:function(){ 
						$(_ref).find('.letter_sheet').css({display:'none'});
						$(_ref).find('.letter_'+letter).css({display:'block', opacity:0}).animate( {opacity:1} );
					}});
				}
				
				$(opt.navi).find('li a').removeClass('selected');
				$(opt.navi).find('li.l_'+letter+' a').addClass('selected');
			}
			
		},
		
		'dbglossary_popup': function ( opt ) {
		
			var _ref = this;
			var def = { url:false, pos:false };
			var opt = $.extend(def, opt);
			
			var vis = $('.dbglossary_popupwindow').is(':visible');
			$('.dbglossary_popupwindow').remove();
			if (vis) return false;
			
			$('body').prepend('<div class="dbglossary_popupwindow"><div class="inner"></div><div class="corner corner_bottom"></div></div>');
			
			var ref = $('.dbglossary_popupwindow');
			var pos = opt.position;
			
			if (pos.top - ref.height() < $('body').scrollTop()) {
				pos.top += 20;
				ref.find('.corner').remove();
				ref.prepend('<div class="corner corner_top"></div>');
			} else {
				pos.top -= ref.height();
			}
			
			if (pos.left + ref.width() > $(window).width()) {
				var o = $(window).width() - ref.width() - 50;
				ref.find('.corner').css( {'margin-left':pos.left - o} );
				pos.left = o;
			}
			
			ref.find('.inner').addClass('loading');
			ref.offset( pos ).hide().fadeIn('fast');
			
			var n = $.ajax({ 	
						url: 	 $.noCacheURL ? $.noCacheURL(opt.url) : opt.url, 
						success: function (data) {
							ref.find('.inner').removeClass('loading');
							if (!data) return false;
							var str = $(data).find('.dbglossary_single');
							ref.find('.inner').append( str );
						}
				});
		}
		
		
	});
})(jQuery);






