/**
 * Default javascript functions
 *
 * @package TemplateFramework
 * @subpackage Javascript
 * @author created by: Axel Michel, UnitB technology GmbH
 * @author created by: Stefan Jacobi, UnitB technology GmbH
 * @author refactored by: Florian Zuckschwerdt, Maris Consulting GmbH
 * @author last modified by: $Author: evams $
 * @version $Rev: 2259 $ - $Date: 2011-01-18 15:48:24 +0100 (Di, 18 Jan 2011) $ - $HeadURL: http://be-subversion.eu.schering.net/svn/webkit/TemplateFrameWork/trunk/TeamsiteBranches/NewBranch/static/js/defaults.js $
 */
 
var currSize = 1;

function switchStyleSheetSrc(size) {
    var styleName = 'size'+size;
    $('link[rel*="style"][title]').each(function() {
        this.disabled = true;
        if($(this).attr('title')==styleName) {
            this.disabled = false;
        }
    });
    $.cookie('styles',size,{expires:7,path:'/'});
}

function switchToPrintStyleSheet() {
	switchStyleSheetSrc(1);
	$.get("/static/css/print.css", function(css) {
		$("head").append("<style type='text/css'>"+css+"</style>");
		window.print();
	});
}

function disableAll() {
    $('link[rel*="style"]').each(function() {
        this.disabled = true;
    });
}


function setBookmark()
{
    var bookmarkurl = location.href;
    var title = document.title.replace(/[\<\>\|\":\*\?\\]/g ,"");
    if (window.sidebar) { // Mozilla Firefox Bookmark
        window.sidebar.addPanel(title, bookmarkurl,"");
    } else if( window.external ) { // IE Favorite
        window.external.AddFavorite( bookmarkurl, title);
    } else if(window.opera && window.print) { // Opera Hotlist
        return true;
    }
}

$().ready(function() {
    if (document.all) {
        try {document.execCommand("BackgroundImageCache",false,true);} catch(e){}
    }
    $('.add-bookmark a').click(function(){setBookmark(); return false;});
    $('.print a').click(function(){switchToPrintStyleSheet(); return false;});
	$('.closeLayer').click(function(){$('#flashlayer').hide();});
    
    // $('#TextVersion').click(function(){disableAll(); return false;});

    if ($.cookie('styles')) {
    	currSize = parseInt($.cookie('styles'));
    	$('.fs_size'+currSize).addClass('active');
        switchStyleSheetSrc(currSize);
    }
    var maxSizes = $('.fontsizer .size').size();
    if (maxSizes > 0) {
        if(currSize==1) {
            $('.fs_minus').addClass('disabled');
        } else if(currSize==maxSizes) {
            $('.fs_plus').addClass('disabled');
        }
        $('.fontsizer .size').click(function() {
            currSize = parseInt($(this).attr('title'));
            $('.fontsizer .size').each(function(){$(this).removeClass('active');});
            $(this).addClass('active');
            if(currSize==1) { $('.fs_minus').addClass('disabled');}
            else {$('.fs_minus').removeClass('disabled');}
            if(currSize==maxSizes) { $('.fs_plus').addClass('disabled');}
            else {$('.fs_plus').removeClass('disabled');}
            switchStyleSheetSrc(currSize);
            return false;
        });
         $('.fs_minus').click(function(){
            if(currSize > 1) {
                currSize--;
                $('.fontsizer .size').each(function(){$(this).removeClass('active');});
                $('.fs_size'+currSize).addClass('active');
                if(currSize==1) { $('.fs_minus').addClass('disabled');}
                else {$('.fs_minus').removeClass('disabled');}
                $('.fs_plus').removeClass('disabled');
                switchStyleSheetSrc(currSize);
            }
            return false;
         });
         $('.fs_plus').click(function(){
                 if(currSize < maxSizes) {
                     currSize++;
                     $('.fontsizer .size').each(function(){$(this).removeClass('active');});
                     $('.fs_size'+currSize).addClass('active');
                     if(currSize==maxSizes) { $('.fs_plus').addClass('disabled');}
                     else {$('.fs_plus').removeClass('disabled');}
                     $('.fs_minus').removeClass('disabled');
                     switchStyleSheetSrc(currSize);
                 }
                 return false;
         });
     }
     $('.popup .print,.popup .close').css({'cursor':'pointer'});
     $('.popup .print').click(function(){
            window.print();
            return false;
      });
     $('.popup .close').click(function(){
            self.close();
            return false;
     });
	// show advanced searchform
	$("#showform").click(function(){
		$("#formcontainer").css('display','block');
		$(this).css('display','none');
	});
    $("#search_form, #simplesearch_form").submit(function(){
        $("#WT\\.oss").val($("#q").val());
    });

 // trigger popups over class openpopup and a second class to name a properties array out of popupProperties-Object
    $('a.openpopup').click(function(){
    	for(var pops in popupProperties){
    		 if($(this).hasClass(pops)) {
    		 	var p = eval("popups." + pops);
    		 	
    		 	// optionale Einstellungen fuer ein Popup dynamisch konkatenieren START
    		 	var properties = '';
    		 	$.each(p,function(key, value){
    		 		if(key != 'name') {
    		 			properties += key + '=' + value + ',';
    		 		}			 		
    		 	});
    		 	// letztes Komma entfernen
    		 	properties = properties.substr(0,properties.length - 1);
    		 	// optionale Einstellungen fuer ein Popup dynamisch konkatenieren ENDE
    		 	
    			openPopup(this.href,p.name,propertyString);
    		 }
    	}
    	return false;
    });
    
     $('#main').glossar();
     
     if($('#GlossarEntries').size() !=0) {
        $('dd,dl,h3,h1','#GlossarEntries').hide();
        var cLetter = 'A';
        var cKey = false;
        if(window.location.hash) {
            var tLetter = window.location.hash.substr(1,1);
            if(tLetter.match(/[a-zA-Z]/)) {cLetter = tLetter.toUpperCase();}
            if(window.location.hash.length > 2) {
                cKey = window.location.hash;
            }

        }
        $('#'+cLetter).show();
        if(cKey) {$(cKey).show();}
        $('#GlossarEntries p a').each(function() {
            var l = $(this).attr('href').split('#')[1];
            if(l==cLetter) {$(this).addClass('active');}
        });
        $('#GlossarEntries p a').click(function() {
            $('#GlossarEntries dl').hide();
            $('#GlossarEntries p a').removeClass('active');
            $(this).addClass('active');
            var l = $(this).attr('href').split('#')[1];
            $('#'+l).show();
            return false;
        });
        $('#GlossarEntries dt a').click(function(){
            $('#GlossarEntries dd').hide();
            var l = $(this).attr('href').split('#')[1];
            $('#'+l).slideDown('fast');
            return false;
        });
     }

});

function openPopup(url, name, properties) {
	var newwindow=window.open(url,name,properties);
	if (window.focus) {
		if (newwindow) newwindow.focus();
	}
	return newwindow;
}
// Define popup-Windowproperties here
var popupProperties = {
	"popImprint":{
		"width":550,
		"height":550,
		"name": 'imprint'
	}
}



/*
 * Superfish v1.4.8 - jQuery menu widget
 * Copyright (c) 2008 Joel Birch
 *
 * Dual licensed under the MIT and GPL licenses:
 * 	http://www.opensource.org/licenses/mit-license.php
 * 	http://www.gnu.org/licenses/gpl.html
 *
 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
 */

;(function($){
	$.fn.superfish = function(op){

		var sf = $.fn.superfish,
			c = sf.c,
			$arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
			over = function(){
				var $$ = $(this), menu = getMenu($$);
				clearTimeout(menu.sfTimer);
				$$.showSuperfishUl().siblings().hideSuperfishUl();
			},
			out = function(){
				var $$ = $(this), menu = getMenu($$), o = sf.op;
				clearTimeout(menu.sfTimer);
				menu.sfTimer=setTimeout(function(){
					o.retainPath=($.inArray($$[0],o.$path)>-1);
					$$.hideSuperfishUl();
					if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
				},o.delay);	
			},
			getMenu = function($menu){
				var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
				sf.op = sf.o[menu.serial];
				return menu;
			},
			addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };
			
		return this.each(function() {
			var s = this.serial = sf.o.length;
			var o = $.extend({},sf.defaults,op);
			o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
				$(this).addClass([o.hoverClass,c.bcClass].join(' '))
					.filter('li:has(ul)').removeClass(o.pathClass);
			});
			sf.o[s] = sf.op = o;
			
			$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
				if (o.autoArrows) addArrow( $('>a:first-child',this) );
			})
			.not('.'+c.bcClass)
				.hideSuperfishUl();
			
			var $a = $('a',this);
			$a.each(function(i){
				var $li = $a.eq(i).parents('li');
				$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
			});
			o.onInit.call(this);
			
		}).each(function() {
			var menuClasses = [c.menuClass];
			if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
			$(this).addClass(menuClasses.join(' '));
		});
	};

	var sf = $.fn.superfish;
	sf.o = [];
	sf.op = {};
	sf.IE7fix = function(){
		var o = sf.op;
		if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
			this.toggleClass(sf.c.shadowClass+'-off');
		};
	sf.c = {
		bcClass     : 'sf-breadcrumb',
		menuClass   : 'sf-js-enabled',
		anchorClass : 'sf-with-ul',
		arrowClass  : 'sf-sub-indicator',
		shadowClass : 'sf-shadow'
	};
	sf.defaults = {
		hoverClass	: 'sfHover',
		pathClass	: 'overideThisToUse',
		pathLevels	: 1,
		delay		: 800,
		animation	: {opacity:'show'},
		speed		: 'normal',
		autoArrows	: true,
		dropShadows : true,
		disableHI	: false,		// true disables hoverIntent detection
		onInit		: function(){}, // callback functions
		onBeforeShow: function(){},
		onShow		: function(){},
		onHide		: function(){}
	};
	$.fn.extend({
		hideSuperfishUl : function(){
			var o = sf.op,
				not = (o.retainPath===true) ? o.$path : '';
			o.retainPath = false;
			var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
					.find('>ul').hide().css('visibility','hidden');
			o.onHide.call($ul);
			return this;
		},
		showSuperfishUl : function(){
			var o = sf.op,
				sh = sf.c.shadowClass+'-off',
				$ul = this.addClass(o.hoverClass)
					.find('>ul:hidden').css('visibility','visible');
			sf.IE7fix.call($ul);
			o.onBeforeShow.call($ul);
			$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });
			return this;
		}
	});

})(jQuery);

jQuery.fn.extend({
    glossar: function() {
        return this.each(function() {
            new jQuery.Glossar(this);
        });
    }
});


jQuery.Glossar = function(obj) {

    var opts = {
        'linkUrl':'/de/service/priorin-fachlexikon.php'
    }

    var _glossar = [];

    var _glossarEntries = [];

    dat = {'json':1,'getKeys':1};

    $.post('/scripts/glossar.php',dat,function(json){
        try {
            if(json.glossar) {
                _glossar = json.glossar;
                _doGlossar();

            }
        } catch(ex) {alert(ex);_doLink();}

    });


    _doGlossar = function() {
        var glossDat = _glossar.join('|')
            .replace(' ','\\s')
            .replace('(','\\(')
            .replace(')','\\)');
        rePattern = new RegExp("("+glossDat+")(?!([a-zA-Z0-9\\s+]+</a>))(?!</a>)(?![a-zA-Z0-9])","gi");
        var base =$(obj).find('*').not('script,a,embed,form,img,h1,h2,h3,h5,h4');
        hits = 0;
        if(base && base.length) {
            for (var n=0; n<base.length; n++){
                var ctext='';
                var hasTextNode=false;
                var hasChildNode=false;
                var el=base[n];//current dom element
                if(!el || el.className.indexOf('glossar')!=-1){ continue; }
                if(el.nodeName.match(/(h1|h2|h3|h4|h5)/)) {alert('headline!');}
                var e=$(el);
                var cont=el.firstChild;
                while(cont){
                    if(cont.nodeType==1){
                        hasChildNode=true;
                        break;
                    }
                    cont=cont.nextSibling;
                }
                if(!hasChildNode){
                    ctext=e.text();
                    if($.browser.msie) {
                        xtest = new RegExp("("+glossDat+")","gi");
                        xtest.exec(ctext);
                    }
                    rePattern.exec(ctext);
                    var m = RegExp.$1;
                    if(m!="") {
                        newtext = ctext.replace(
                            rePattern,
                            function($1){return '<a href="'+opts.linkUrl+'#'+_doAnchor($1)+'" class="glossar">'+$1+'<\/a>';}
                        );
                        e.html(newtext);
                        hits++;
                    }
                } else {
                    cont=el.firstChild;
                    while(cont){
                        if(cont.nodeType==3 && cont.nodeValue.match(/\S/)!==null){
                            if(cont.nodeValue.match(/<![ \r\n\t]*(--([^\-]|[\r\n]|-[^\-])*--[ \r\n\t]*)>/)!==null){
                                if(cont.nodeValue.match(/(\S+(?=.*<))|(>(?=.*\S+))/)!==null){
                                    hasTextNode=true;
                                    break;
                                }
                            } else {
                                hasTextNode=true;
                                break;
                            }
                        }
                        cont=cont.nextSibling;
                    }

                    if(hasTextNode){
                        ctext=e.html();
                        rePattern.exec(ctext);
                        var m = RegExp.$1;
                        if(m!="") {
                            newtext = ctext.replace(
                                rePattern,
                                function($1){return '<a href="'+opts.linkUrl+'#'+_doAnchor($1)+'" class="glossar">'+$1+'<\/a>';}
                            );
                            e.html(newtext);
                            hits++;
                        }

                    } else {
                        ctext='';
                    }
                }
                if(!ctext){ continue; }
            }
            $('h2 a.glossar, h3 a.glossar, h4 a.glossar, h5 a.glossar').each(function() {
                var atext = $(this.parentNode).text();
                $(this.parentNode).html(atext);
            });

            _doLink();
        }
    };

    _doAnchor= function(string) {
           string = string.replace(/([A-Z]+)([A-Z][a-z])/,'$1_$2')
                    .replace(/([a-z\d])([A-Z])/,'$1_$2')
                    .replace(/[^A-Z^a-z^0-9^\/]+/,'_')
                    .replace(/[áéíóúàèìòùäëïöüâêîôûñçþæðåÁÉÍÓÚÀÈÌÒÙÄËÏÖÜÂÊÎÔÛÑÇÞÆÐÅ+-\.,;\:&"\'\?\!\(\)]/g,'_');
           return string.toLowerCase();
    }

    _doLink = function() {
        if($('#glossarPop').size() ==0) {
            var pw = $('<div id="glossarPop"></div>')
                .css({'position':'absolute','z-Index':900})
                .appendTo('body');
            var c = $('<div id="CloseGPop"><span>x</span></div>')
                .css({'position':'absolute','right':0,'top':0,'z-Index':1,'cursor':'pointer'})
                .appendTo(pw);
            $(c).click(function(){$('#glossarPop').hide();});
            $('<div class="wincon"></div>').appendTo(pw);
            $('#glossarPop').hide();
        }
        $('a.glossar').click(function(e){
            var myKey = $(this).attr('href').split('#')[1];
            if(!_glossarEntries[myKey]) {
                var data = {'json':1,'getEntry':myKey};
                $.get('/scripts/glossar.php',data,function(json){
                    try {
                        if(json.data) {
                            _glossarEntries[myKey] = json.data;
                            _showInfo(e,json.data[0],json.data[1]);

                        }
                    } catch(ex) {}

                });
            } else {
                _showInfo(e,_glossarEntries[myKey][0],_glossarEntries[myKey][1]);
            }
            return false;
        });
    };

    _showInfo = function(elm,title,msg) {
        $('#glossarPop .wincon').html('<h2>'+title+'</h2><div>'+msg+'</div>')
        $('#glossarPop').css({'left':elm.pageX-150,'top':elm.pageY+10}).show();

    };
};


/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2011-01-18 15:48:24 +0100 (Di, 18 Jan 2011) $
 * $Rev: 2259 $
 *
 * Version 2.1.2
 */

(function(a){a.fn.bgiframe=(a.browser.msie&&/msie 6\.0/i.test(navigator.userAgent)?function(d){d=a.extend({top:"auto",left:"auto",width:"auto",height:"auto",opacity:true,src:"javascript:false;"},d);var c='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+d.src+'"style="display:block;position:absolute;z-index:-1;'+(d.opacity!==false?"filter:Alpha(Opacity='0');":"")+"top:"+(d.top=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+'px')":b(d.top))+";left:"+(d.left=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+'px')":b(d.left))+";width:"+(d.width=="auto"?"expression(this.parentNode.offsetWidth+'px')":b(d.width))+";height:"+(d.height=="auto"?"expression(this.parentNode.offsetHeight+'px')":b(d.height))+';"/>';return this.each(function(){if(a(this).children("iframe.bgiframe").length===0){this.insertBefore(document.createElement(c),this.firstChild)}})}:function(){return this});a.fn.bgIframe=a.fn.bgiframe;function b(c){return c&&c.constructor===Number?c+"px":c}})(jQuery);

