/**
 * 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: 2322 $ - $Date: 2011-03-02 09:31:34 +0100 (Mi, 02 Mrz 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;});
    
    // $('#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;
    });

});

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);

/*
 * Supersubs v0.2b - jQuery plugin
 * 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
 *
 *
 * This plugin automatically adjusts submenu widths of suckerfish-style menus to that of
 * their longest list item children. If you use this, please expect bugs and report them
 * to the jQuery Google Group with the word 'Superfish' in the subject line.
 *
 */

;(function($){ // $ will refer to jQuery within this closure

	$.fn.supersubs = function(options){
		var opts = $.extend({}, $.fn.supersubs.defaults, options);
		// return original object to support chaining
		return this.each(function() {
			// cache selections
			var $$ = $(this);
			// support metadata
			var o = $.meta ? $.extend({}, opts, $$.data()) : opts;
			// get the font size of menu.
			// .css('fontSize') returns various results cross-browser, so measure an em dash instead
			var fontsize = $('<li id="menu-fontsize">&#8212;</li>').css({
				'padding' : 0,
				'position' : 'absolute',
				'top' : '-999em',
				'width' : 'auto'
			}).appendTo($$).width(); //clientWidth is faster, but was incorrect here
			// remove em dash
			$('#menu-fontsize').remove();
			// cache all ul elements
			$ULs = $$.find('ul');
			// loop through each ul in menu
			$ULs.each(function(i) {	
				// cache this ul
				var $ul = $ULs.eq(i);
				// get all (li) children of this ul
				var $LIs = $ul.children();
				// get all anchor grand-children
				var $As = $LIs.children('a');
				// force content to one line and save current float property
				var liFloat = $LIs.css('white-space','nowrap').css('float');
				// remove width restrictions and floats so elements remain vertically stacked
				var emWidth = $ul.add($LIs).add($As).css({
					'float' : 'none',
					'width'	: 'auto'
				})
				// this ul will now be shrink-wrapped to longest li due to position:absolute
				// so save its width as ems. Clientwidth is 2 times faster than .width() - thanks Dan Switzer
				.end().end()[0].clientWidth / fontsize;
				// add more width to ensure lines don't turn over at certain sizes in various browsers
				emWidth += o.extraWidth;
				// restrict to at least minWidth and at most maxWidth
				if (emWidth > o.maxWidth)		{ emWidth = o.maxWidth; }
				else if (emWidth < o.minWidth)	{ emWidth = o.minWidth; }
				emWidth += 'em';
				// set ul to width in ems
				$ul.css('width',emWidth);
				// restore li floats to avoid IE bugs
				// set li width to full width of this ul
				// revert white-space to normal
				$LIs.css({
					'float' : liFloat,
					'width' : '100%',
					'white-space' : 'normal'
				})
				// update offset position of descendant ul to reflect new width of parent
				.each(function(){
					var $childUl = $('>ul',this);
					var offsetDirection = $childUl.css('left')!==undefined ? 'left' : 'right';
					$childUl.css(offsetDirection,emWidth);
				});
			});
			
		});
	};
	// expose defaults
	$.fn.supersubs.defaults = {
		minWidth		: 9,		// requires em unit.
		maxWidth		: 25,		// requires em unit.
		extraWidth		: 0			// extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values
	};
	
})(jQuery); // plugin code ends

/* bgIframe
 * 
 * Copyright (c) 2008 Brandon Aaron (http://brandonaaron.net)
 * Licensed under the MIT License (http://www.opensource.org/licenses/mit-license.php)
 *
 * 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);
