var o5_ribbon_height_isStartup = true;
var o5_ribbon_height = $('.ribbonbackground').height();
var o5_ribbon_last_height = $('.ribbonbackground').height();
var o5_ribbon_check_interval = window.setInterval(function(){
	o5_ribbon_last_height = o5_ribbon_height;
	o5_ribbon_height = $('.ribbonbackground').height();
	if(!o5_ribbon_height_isStartup && o5_ribbon_last_height != o5_ribbon_height) {		
		var $window = $(window);
		var scrollTop = $window.scrollTop();
		var adjustScroll = o5_ribbon_height - o5_ribbon_last_height;
		$('.outerWrapper').css({
			marginTop: o5_ribbon_height
		});
		$window.scrollTop(scrollTop + adjustScroll);
	}
	o5_ribbon_height_isStartup = false;
}, 250);

function openCloseWebpart(id)
{
	
	var wphd = 'wpdh_'+id;
	var wp   = 'wp_'+id;
	
	var imagePath = '/SiteCollectionImages/';
	var openImg   = 'webpart_open.gif';
	var closeImg  = 'webpart_close.gif';		
	
	var openClassName  = 'openCollapsableWebpart';
	var closeClassName = 'closeCollapsableWebpart';


	
	var btn       = $('#'+wphd);		
	var tgElement = document.getElementById(wp);
	
	function changeBtn()
	{

		$(btn).attr('class', btn.attr('class') == openClassName?closeClassName:openClassName);
		$(btn).children('img').attr('src',btn.attr('class') == openClassName?imagePath + openImg:imagePath + closeImg);
	};
	
	function changeWebpart()
	{
		$(tgElement).attr('class', btn.attr('class') == openClassName?closeClassName:openClassName);
	};
	changeBtn();
	changeWebpart();
};

function agivideoteaserwebpart_popitup(url) {
	window.open(url, '', 'height=576,width=685, scrollbars=yes');
};

function scrollTeaser2TopPosition()
{
	var mHeight  = 75;
	var scrollTo = 0;

	var $teaserFrame  = $('.wpscrollableteaserbody');
	$teaserFrame.css({
		'position': 'relative',
		'top': 0,
		'overflow':'scroll',
		'overflow-x':'hidden'
	});

	var $teaserTarget = $('.scrollableteaserbold');
	var $teaserPrev   = $teaserTarget.prev('.textteaser');

	if($teaserPrev.length>0 && $teaserTarget.length>0)
	{
		
		var tTp              = $teaserTarget.position();
		var tTpTop           = tTp.top;
		var teaserPrevHeight = $teaserPrev.find('.scrollableteaserbody').height();		
		if(tTpTop>0)
		{					
			if(teaserPrevHeight<=mHeight)
				scrollTo = tTpTop-$teaserPrev.outerHeight();
			else
				scrollTo = tTpTop;

			if(scrollTo>0)
				$('.wpscrollableteaserbody').scrollTop(scrollTo);
		}	
	}
};


function checkWorldMapTeaser(){
	$wT = $('#worldmapwrapper');
	if($wT.length>0)
		$wT.parent('div.teaserbody').css({
			position: 'relative'
		});
}
$(document).ready(function(){
	// init toggle teaser
	$('.relatedarea').toogleTeaser({
		cTeaserClass:'et_collapsable',
		cTeaserCollapsedClass:'et_collapsed',
		imgPath:'/SiteCollectionImages/'
	});
	// sitemap init
	$('.largearea').toggleContentParagraphs ({
		tabClass: 'sitemap',
		templateHeadClass: 'sitemapLevel0',
		templateBodyClass:'sitemap_table',
		templateOpenImage: 'plus_teaser.gif',
		templateCloseImage: 'minus_teaser.gif'
	});
	// interactiveTeaser 
	$('.maincontent').interactiveTeaser({});
	// check if world map teaser is displayed and set style to teaserbody
	checkWorldMapTeaser();
	// add/remove editmode styles/attributes	
	$(window).setEditModeStyles ({
		edtClassName: 'ms-SPZoneLabel',
		focusElements: [{elementclass: 'contentmainheadline ', elementtype: 'input'},{elementclass: 'contentsubheadline', elementtype: 'input'},{elementclass: 'leftsidetext ', elementtype: 'textarea'}],
		teaserClassName: 'teaser',
		relAreaClassName: 'relatedarea',
		contNaviClassName: 'contentnaviarea',
		contentTemplAreaClassName: 'contenttemplatearea',
		contAreaClassName: 'contentarea'
	});		
	
	if($('.ms-siteactionsmenuinner').length>0){		
		$('.s4-ribbonrowhidetitle').css({
			height: 'auto'
		});
		$('.ribbonbackground').css({'display':'block', 'visibility':'visible'});
	}else{	
		$('.outerWrapper').css({marginTop: 0});
		$('.ribbonbackground').css({'display':'none', 'visibility':'hidden'});
	}
	
	var $scBox = $('.legalnoticebox');
	if($scBox.length){
		$($("head > *")[0]).prepend('<script language="text/javascript" src="/Style%20Library/jquery.jscrollpane.js"></script>');	
		$($("head > *")[0]).prepend('<script language="text/javascript" src="/Style%20Library/jquery.mousewheel.js"></script>');		
		$scBox.jScrollPane({
			showArrows: true,
			horizontalGutter: 0
		});	
	}	
	scrollTeaser2TopPosition();
});

function showDiv(id){
	var $parentObj = $('.interactiveRightSideFrame').find('#'+id).parents('div.interactiveTeaser');	
	// right side add/remove visibility class	
	if($parentObj.find('.showInterActiveItem').length>0)
		$parentObj.find('.showInterActiveItem').removeClass('showInterActiveItem');
	$('.interactiveRightSideFrame').find('#'+id).addClass('showInterActiveItem');
	
	// left side add/remove active class
	var rightidx =$parentObj.find('#'+id).index();
	if($parentObj.find('.teasernavigationlistitemactive'))
		$parentObj.find('.teasernavigationlistitemactive').removeClass('teasernavigationlistitemactive');
		
	$parentObj.find('.interactiveleftside::nth('+$('.interactiveRightSideFrame').find('#'+id).index()+')').addClass('teasernavigationlistitemactive');	
}


(function($){
	$.fn.extend({
		setEditModeStyles : function(settings){
		
			var defaults = {
				edtClassName: '',
				focusElements : [],
				teaserClassName: '',
				relAreaClassName: '',
				contNaviClassName: '',
				contentTemplAreaClassName: '',
				contAreaClassName: ''
			};
			var o              		 = $.extend(defaults, settings);			
			var $obj                 = $(this);
			var spZoneLabel          = ($('.'+o.edtClassName).length)?true:false;
			var contentSubNavigation = ($('.'+o.contNaviClassName).length)?true:false;
			var dispRelatedarea 	 = ($('.'+o.relAreaClassName).length)?true:false;
			
			var browserVersion = function(){
				return $.browser.version;
			};
			
			var detectIE = function(){
				if($.browser.msie)
					return true;
			};
			
			function handleTeaserStyles(){
				$('.'+o.teaserClassName).css({
					overflow: (spZoneLabel)?'visible':'hidden'
				});
				if(dispRelatedarea&&$('.'+o.relAreaClassName).find('.'+o.teaserClassName).length>0){
					$('.'+o.relAreaClassName).find('.'+o.teaserClassName+':first').css({
						paddingTop: 2
					});
				}
			}
			
			function handleContenNaviAreaStyles(){
				if(detectIE && browserVersion() == 8){
					if(contentSubNavigation){	
						$('.'+o.contentTemplAreaClassName).css({
							overflow: (spZoneLabel)?'visible':'hidden',
							height:  (spZoneLabel)?$('.'+o.contAreaClassName).height():'auto'
						});
						$('.'+o.contNaviClassName).css({
							overflow: (spZoneLabel)?'visible':'hidden'
						});			
					}						
				}
			}
			// this is not realy working, in templates with richtext field is the focus in this field			
			function setInputFocus(){
				if(spZoneLabel){
					for(i=0;i<o.focusElements.length;i++){
						if($('.'+o.focusElements[i].elementclass).find(o.focusElements[i].elementtype).length)
							$('.'+o.focusElements[i].elementclass).find(o.focusElements[i].elementtype).focus();
					}
				}
			}
	
			return this.each(function(){
				handleTeaserStyles();
				handleContenNaviAreaStyles();
				setInputFocus();
			});
		}
	});
	
	// interactive Teaser
	$.fn.extend({	
		interactiveTeaser : function(settings){
		
			var defaults = {				
				showFirstItem: true,
				leftsideFrame: 'interactiveLeftSideFrame',
				rightsideFrame: 'interactiveRightSideFrame',
				leftSideInnerClass: 'interactiveleftside',
				activeItemClass: 'showInterActiveItem',
				teaserHeadClass:'teaserhead',
				teaserBodyClass:'teaserbody',
				teaserListFirstItem: 'firstInteractiveTeaserLinkItem teasernavigationlistitemactive',
				parentItemClass: 'contentarea',
				teaserLeftSideSpacerClass:'interactiveleftsidespacer'
			};		

			var options = $.extend(defaults, settings);			
			var $obj = $(this);
			var $iT = $obj.find('.interactiveTeaser');
			var teaserLastDivClassName;			
			
			mapItemsInToDiv = function(elem, item){				
				elem.appendTo(item)
			}						
			
			this.each(function(){
				$iT.each(
					function(){
						
						// remove style attribute
						$(this).removeAttr('style');
						
						// div für linke und rechte seite erzeigen
						$(this).append('<div class="'+options.leftsideFrame+'">');
						$(this).append('<div class="'+options.rightsideFrame+'">');

						if($('.ms-SPZoneLabel').length==0){
							// inhalte auslesen und in linkes/rechtes div einfügen  //.'+options.teaserBodyClass
							mapItemsInToDiv($(this).find('.'+options.leftSideInnerClass+', .teaserbody').not('.teaser > .teaserbody'), $(this).find('.'+options.leftsideFrame));
							mapItemsInToDiv($(this).children('div.teaser'), $(this).find('.'+options.rightsideFrame));
							// erstes div links bekommt eine zusätzliche klasse
							$('.'+options.leftsideFrame).find('.'+options.leftSideInnerClass+':first').addClass(options.teaserListFirstItem);
							// first item sichtbar
							if(options.showFirstItem)
								$(this).find('.'+options.rightsideFrame).children().first().addClass(options.activeItemClass);
							// abfrage ob content oder related area	
							teaserLastDivClassName=$(this).parents('.'+options.parentItemClass)?'twoColLeftside':'oneColLeftside'
							// spacer wenn links<6 setzen						
							if($(this).find('.'+options.leftsideFrame+' div.'+options.leftSideInnerClass).length<5){	
								if($('.largearea').length>0){
									$(this).css({
										height: 'auto',
										paddingBottom: 0
									});
									var ITInnerHeight = $(this).parents('td').find('div.relatedarea .teaserbody').height()-(($(this).find('.'+options.leftsideFrame+' .'+options.leftSideInnerClass).length)*24)-$(this).find('.'+options.teaserBodyClass).outerHeight()-25;	
									$(this).find('.'+options.leftsideFrame).append('<div class="'+options.teaserLeftSideSpacerClass+'" style="height:'+ITInnerHeight+'px">&nbsp;</div><div class="'+teaserLastDivClassName+'">&nbsp;</div>');
								}else{							
									$(this).find('.'+options.leftsideFrame).append('<div class="'+options.teaserLeftSideSpacerClass+'" style="height:'+(5-$(this).find('.'+options.leftsideFrame+' .'+options.leftSideInnerClass).length)*24+'px">&nbsp;</div><div class="'+teaserLastDivClassName+'">&nbsp;</div>');
								}
							}else if($(this).find('.'+options.leftsideFrame+' div.'+options.leftSideInnerClass).length==5){
								$(this).find('.'+options.leftsideFrame).append('<div class="'+teaserLastDivClassName+'">&nbsp;</div>');
							}else{	
								$(this).find('.'+options.leftsideFrame+' .'+options.leftSideInnerClass+':last').addClass(teaserLastDivClassName);
							}				
							// click event entfernen
							$(this).find('.interactiveleftside a').click(function(evt){
								evt.preventDefault();
							});
							
						}else{
							$(this).css({
								height: 'auto'
							});
						}					
					}
				);				
			});			
		}
	});
	
	$.fn.extend({	
		toogleTeaser : function(settings){
		
			var defaults = {
				cTeaserClass:'et_td_collapsable',
				cTeaserCollapsedClass:'et_td_collapsed',
				hTeaserClass:'hiddenteaser',
				sTeaserClass:'visibleteaser',
				imgPath:'SiteCollectionImages/',
				ttImgPlus:'plus_teaser.gif',
				ttImgMinus:'minus_teaser.gif',
				ttImgAltC:'Collapse Teaser',
				ttImgAltE:'Expand Teaser',
				ttCursor:'pointer',
				ttImgClass:'collapsableteaserimage',
				ttHead:'teaserhead',
				ttBody:'teaserbody',
				ttHeadline:'teaserheadline'
			};		

			var options = $.extend(defaults, settings);
			
			var $obj = $(this);
			if(!$obj.length)
				return;
			var $tt = $obj.find('.'+options.cTeaserClass);	
			var td, nc;
			
			var tImage = function(tobj){				
				$('<img />')
					.insertBefore(tobj)
						.attr({
							src:options.imgPath+setImageSrc(td),
							alt:setImagealt(td),
							title:setImagealt(td),
							'class':options.ttImgClass
						});				
			}	
			
			var setImageSrc = function(vis){
				return vis==options.sTeaserClass?options.ttImgMinus:options.ttImgPlus;				
			}
			
			var setImagealt = function(vis){
				return vis==options.sTeaserClass?options.ttImgAltC:options.ttImgAltE;
			}
			
			var changetImage = function(obj){
				obj.find('img.'+options.ttImgClass).attr({
					src: options.imgPath+setImageSrc(nc),
					alt:setImagealt(nc),
					title:setImagealt(nc)
				});
			}
			
			var tEvHandler = function(evt){
				evt.preventDefault();
				var $po = $(this).parents('div.'+options.cTeaserClass);
				var oc = elemHasClass($po, options.sTeaserClass, [options.sTeaserClass, options.hTeaserClass]);
				nc = elemHasClass($po, options.sTeaserClass, [options.hTeaserClass, options.sTeaserClass]);
				switch(evt.type){
					case 'mouseover':			
						$(this).css({cursor:options.ttCursor});
					break;
					case 'click':							
						$(this).next('.'+options.ttBody).toggle(); 		
						setTParentClass($po, nc, oc);
						changetImage($(this));
					break;
				}		
			}		
			
			var elemHasClass = function(elem, classname, val){
				return $(elem).hasClass(classname)?val[0]:val[1];
			}
			
			var getHline = function(obj){
				return obj.find('.'+options.ttHeadline);
			}
			
			var setTParentClass = function(obj, newclassname, oldclassname){
				if(elemHasClass(obj, oldclassname, [true, false]))
					obj.removeClass(oldclassname).addClass(newclassname);
				else
					obj.addClass(newclassname);
			}
					
			$tt.each(function(){					
					td   = elemHasClass($(this), options.cTeaserCollapsedClass, [options.hTeaserClass, options.sTeaserClass]);					
					var hl = getHline($(this));
					tImage(hl);		
					setTParentClass($(this), td);
					$(this).find('.'+options.ttHead).bind('click mouseover', tEvHandler);				
			});	
		}
	});
	
	// default properties
	$.fn.toggleContentParagraphs = function(settings){
		// default settings
		var defaults = {	
			activeClass:'showblock',
			tabClass: '',
			templateHeadClass: '',
			templateBodyClass:'',
			imagePath: '/SiteCollectionImages/',
			templateOpenImage: '',
			templateCloseImage: '',
			expandFirst: true
		};	
		
		var options = $.extend(defaults, settings);
		
		var $obj = $(this);		
		var $tabs = $obj.find('.'+options.tabClass);
		var $img;		 		

		this.each(function(){
		
			$tabs.addClass(options.activeClass);
			$tablinks = [];
			$tabs.find('div.'+options.templateHeadClass).each(function(){		
				if($(this).next('table.'+options.templateBodyClass).find('td').length>0){
					if($(this).next('table.'+options.templateBodyClass).hasClass(options.activeClass))
						$img = $('<img src="'+options.imagePath+options.templateCloseImage+'" alt="" class="navigationheadericon" />');
					else
						$img = $('<img src="'+options.imagePath+options.templateOpenImage+'" alt="" class="navigationheadericon" />');
					$(this).find('a').append($img);
				}
			});			
			var $tablinks  = $tabs.find('.'+options.templateHeadClass+' a');
			// expand first if wanted in options
			if(options.expandFirst&&$tablinks.first().parent('div').next('table.'+options.templateBodyClass).find('td').length>0){
				$tabs.find('table.'+options.templateBodyClass+':first').addClass(options.activeClass);	
				$tabs.find('div.'+options.templateHeadClass).first().find('img').attr('src', options.imagePath+options.templateCloseImage)
			}			
			$tablinks.click(function(evt){
				evt.preventDefault();
				if($(this).parent('div').next('table.'+options.templateBodyClass).find('td').length>0){
					var $activetab = $().getActiveTab($tabs, options.activeClass);	
	
					var id = $().getIDX($activetab, '.'+options.templateHeadClass+' a', $(this));
	
					var $acticeTeaser = $activetab.find('.'+options.templateBodyClass+':nth('+id+')');				
					
					if($acticeTeaser.hasClass(options.activeClass))
						$activetab.find('.'+options.templateBodyClass+':nth('+id+')').removeClass(options.activeClass);								
					else
						$activetab.find('.'+options.templateBodyClass+':nth('+id+')').addClass(options.activeClass);									
					
					var imgSrc =$acticeTeaser.hasClass(options.activeClass)?options.imagePath+options.templateCloseImage:options.imagePath+options.templateOpenImage;
					
					$activetab.find('.'+options.templateHeadClass+':nth('+id+') img.navigationheadericon').attr({
						src: imgSrc
					});	
				}	
			});
		});							
	};	
	
	$.fn.getActiveTab = function(obj, classname){
		var result;
		obj.each(function(){
			if($(this).hasClass(classname))
				result = $(this);
		});
		return result;
	}						

	$.fn.getIDX = function(context, ob, el){
		return $(context).find(ob).index(el);
	}
})(jQuery);
