/**
 * 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 $
 */
 

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;});

	// show advanced searchform
	$("#showform").click(function(){
		$("#formcontainer").css('display','block');
		$(this).css('display','none');
	});
	$("a.more span").hover(function(){
		$(this).css({cursor:'link',textDecoration:'underline'});
	},
	function(){
		$(this).css({cursor:'default',textDecoration:'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;
    });
    // Modify Flash Navigation
    var flashNaviElements = $('#flashNavi li');
    var flashPagingElements = $("#flashPaging li");
    flashNaviElements.each(function(index, elem) {
    	elem = $(elem);
	    // Find Link, remove it text and add CLick event
	    elem.find('a').empty().click(function () {
	    	// If element is active, do nothing, otherwise make it active
	    	if (!elem.hasClass('active')) {
	    		elem.addClass("active")
				    .removeClass("over")
				    .siblings()
				    .removeClass("active")
				    .removeClass("postActive")
				    .end()
				    .next()
				    .addClass("postActive");
			    // Switch flash content or fallback image
			    var flashContent = $('#flashcontent');
			    if (flashContent.find('div').length > 0) {
			    	flashContent.find('div').hide().eq(index).show();
			    } else {
			    	flashContent = flashContent.get(0);
			    	if (typeof flashContent.startFlash == 'function') {
			    		flashContent.startFlash(index+1);
			    	}
			    }
			    // Switch text
			    var textWrapper = $('#flashtext div.Teaser').hide().eq(index).show();
			    // eTracker log
			    // Hide Paging Links
			    flashPagingElements.show();
			    if (index <= 0) {
			    	flashPagingElements.filter('.prev').hide();
			    } else if (index >= flashNaviElements.length - 1) {
			    	flashPagingElements.filter('.next').hide();
			    }
	    	}
	    	return false;
	    }).hover(function() {
	    	if (!elem.hasClass('active')) {
	    		elem.addClass('over');
	    	}
	    }, function() {
	    	elem.removeClass('over');
	    });
    }).eq(0).find('a').click();
    // ^ This makes the first entry active!
    // Add Events to flash Paging
    flashPagingElements.filter('.next')
    	.find('a').click(function() {
    		flashNaviElements.filter('.active').next().find('a').click();
    	})
    	.end().end().filter('.prev')
    	.find('a').click(function() {
    		flashNaviElements.filter('.active').prev().find('a').click();
    	});
    $("#cpr200 a").click(function(){
    	$("#cpr200").css('display','none');
    	$("#cpr20").css('display','block');
    	return false;
    });
    $("#cpr20 a").click(function(){
    	$("#cpr20").css('display','none');
    	$("#cpr200").css('display','block');
    	return false;
    });
    //bubble
    jQuery().ready(function(){
//        $("a.glossaryTerm").sodbrennenGlossary();

    	$("#bayergroup").hover(function(){
    		$(this).css('backgroundColor','#f1f1f1');
    		$(".bayergroup ul").css('display','block');
    		},function(){
    		$(this).css('backgroundColor','transparent');
    		$(".bayergroup ul").css('display','none');
    	}); 
    	
        /* Fix to solve the IE6 z-index bug */
    	if ($.browser.msie && $.browser.version <= '7.0') {
            var offset = $('#bubble').show().offset();
            $("#bubble").appendTo('body').css({
                top: offset.top,
                left: offset.left
            });    
        }
        /* Fix to solve png issues in IE6 */
        if ($.browser.msie && $.browser.version <= '6.0') {
            var image = $('#stoererBG');
            image.attr('src', image.attr('src').replace(/\.png$/i, '.gif'));
            image = $('#bayerLogo img');
            image.attr('src', image.attr('src').replace(/\.png$/i, '.gif'));
        }
        /* Bubble Animation */
        $("#sternchentext").hide();
        $("#bubble").hide();
        function BubbleScaleDown (dur) {
            $("#stoererBG").animate({
                marginTop: "52px",
                marginLeft: "0",
                width: "115px",
                height: "116px"
            },dur);
            setTimeout(function(){
                $("#subnav").css("z-index", "3");
                $(".LinkBoxInner").css("z-index", "3");                    
            },dur); 
            setTimeout(function(){
                $("#bubble").show();
            }, 100);
        }
        BubbleScaleDown(1);
        
        function BubbleScaleUp (dur) {
            $("#subnav").css("z-index", "1");
            $(".LinkBoxInner").css("z-index", "1");
            $("#stoererBG").animate({
                marginTop: "0",
                marginLeft: "0",
                width: "295px",
                height: "298px"
            }, dur);
        }
        
        $("#stoererText").click(function(){
            $("#stoererText").fadeOut(100);
            setTimeout(function(){
                //$("#stoererBG").animate({width:"81px",height:"82px",marginTop:"199px",marginLeft:"17px"},100);
                BubbleScaleUp(600);
                setTimeout(function(){
                    $("#stoererDetailText").fadeIn(200);
                    $("#sternchentext").fadeIn(200);
                }, 500);
            }, 200);
        });
        
        $("#stoererDetailText").click(function(){
            $("#stoererDetailText").fadeOut(100);
            setTimeout(function(){
                BubbleScaleDown(600);
                $("#sternchentext").fadeOut(200);
                setTimeout(function(){
                    $("#stoererText").fadeIn(200);
                }, 400);
            },100);
        });
    });
});

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	: true,		// 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);

jQuery.extend( jQuery.easing,
		{
		    easeInBackOutCubic: function (x, t, b, c, d, s) {
		        if (s == undefined) s = 1.70158;
		        if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
		        return c/2*((t-=2)*t*t + 2) + b;
		    },
		    easeOutBack: function (x, t, b, c, d, s) {
		        if (s == undefined) s = 1.70158;
		        return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
		    }
		});

		/**
		 * Functionalities for the "Darreichungsformen" teaser.
		 * 
		 * A callback from the flash movie shows and hides the teaser. A link in the
		 * navigation bar swappes the teaser againt a list with package inserts.
		 */
		$(function() {
		    // Flag for a runnign flash animation
		    var flashAnimated = false;
		    // Select Teaser Wrapper and show it
		    var wrapper = $('#packages').show();
		    // Select Navigation
		    var nav = $('#main-navigation li.teaserLink').show();
		    // Define initial state
//		    wrapper.height(0).find('.packagesTeaser').hide();
		    // function to close the teaser
		    var closeTeasers = function(callbackFunction, timeout) {
		        if (wrapper.hasClass('teaserOpen')) {
		            wrapper.removeClass('teaserOpen');
		            wrapper.animate({height: 0}, 1000, 'easeInBackOutCubic', function() {
		                wrapper.find('.packagesTeaser, .instructionTeaser').hide();
		                if (typeof callbackFunction == 'function') {
		                    window.setTimeout(callbackFunction, timeout);
		                }
		            });
		        }
		    };
		    // function to open the teaser
		    var openPackageTeaser = function(callbackFunction, timeout) {
		        if (!wrapper.hasClass('teaserOpen') && !wrapper.is(':animated')) {
		            wrapper.addClass('teaserOpen');
		            wrapper.width(346);
		            var packagesTeaser = wrapper.find('.packagesTeaser').show();
		            //var endHeight = packagesTeaser.height() - 22;
		            var endHeight = packagesTeaser.height();
		            wrapper.animate({height: endHeight}, 750, 'easeOutBack', function() {
		                try {
		                    ET_Event.click('Darreichungs-Teaser angezeigt.');
		                } catch (e) {}
		                if (typeof callbackFunction == 'function') {
		                    window.setTimeout(callbackFunction, timeout);
		                }
		            });
		        }
		    };
		    // function to open the teaser
		    var openInstructionTeaser = function(callbackFunction, timeout) {
		        if (!wrapper.hasClass('teaserOpen') && !wrapper.is(':animated')) {
		            wrapper.addClass('teaserOpen');
		            wrapper.width(209);
		            var packagesTeaser = wrapper.find('.instructionTeaser').show();
		            var endHeight = '117';
//		            var endHeight = packagesTeaser.height();
		            wrapper.animate({height: endHeight}, 650, 'easeOutBack', function() {
		                try {
		                    ET_Event.click('Beipackzettel-Teaser angezeigt.');
		                } catch (e) {}
		                if (typeof callbackFunction == 'function') {
		                    window.setTimeout(callbackFunction, timeout);
		                }
		            });
		        }
		    };   
		    // Define callbacks for flash
		    window.onAnimationStart = function() {
		        flashAnimated = true;
		        closeTeasers();
		        // Hide button for Apothekenfinder
		        $("#apoButton").fadeOut(500);
		    };
		    window.onAnimationEnd = function() {
		        flashAnimated = false;
		        openPackageTeaser();
		        // Show button for Apothekenfinder
		        $("#apoButton").fadeIn(350);
		    };
		    // Click event for menu link
		    nav.find('a').click(function() {
		        if (wrapper.hasClass('teaserOpen')) {
		            var packageTeasers = wrapper.find('.packagesTeaser');
		            var instructionTeasers = wrapper.find('.instructionTeaser');
		            if (packageTeasers.length > 0 && !flashAnimated) {
		                if(packageTeasers.is(':hidden')) {
		                    closeTeasers(openPackageTeaser, 100);
		                } else {
		                    closeTeasers(openInstructionTeaser, 100);
		                }
		            } else {
		                if (instructionTeasers.is(':hidden')) {
		                    openInstructionTeaser();
		                } else {
		                    closeTeasers();
		                }
		            }
		        } else {
		            openInstructionTeaser();
		        }
		    });
		});
