// Globals
var intContentTop = 196;
var intTopAndFooterHeight = 320;
var intFooterHeight = 70;
var intColofonWidth = 12;
var intExtraNavWidth = 148;
var intMainWidth = 902;
var intMainHeight = 650; //heigth colofon

var intExpandContentAnimationDuration = 250;
var objExpandContentAnimationType = Fx.Transitions.Quad.easeInOut;
var bolContentExpand = false;

var intRowHeight = 19;
var intRowHeightEmpty = 16;
var intSubnavTop = 3;
var intMaxHeightFix = 0;

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: Browser.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

BrowserDetect.init();

if(BrowserDetect.OS == "Windows"){
	intRowHeight = 18;
	intMaxHeightFix = 4;
}
if(BrowserDetect.OS == "Mac" && BrowserDetect.browser == "Firefox" && BrowserDetect.version == 3){
	intRowHeight = 21;
	intMaxHeightFix = -8;
}


function repositionContent(){	
	if(objWdkaElements.content){
		
		// get window height
		var intWindowHeight = objWdkaVariables.intWindowHeight;
		var intNewContentHeight = (intWindowHeight - intTopAndFooterHeight);
		intNewContentHeight = intNewContentHeight - (intNewContentHeight % intRowHeight);
		
		// for height
		objWdkaElements.content.setStyles({ 'display': 'block', 'height': 0});

		// count text rows
		var intMaxContentHeight  = 0;
		var objRowsTotal = objWdkaElements.content.getElements('p');
		var intRowsTotal = objRowsTotal.length;
		objRowsTotal.each(function(el){
			intMaxContentHeight = intMaxContentHeight + el.getSize().y;
			
			if(BrowserDetect.OS == "Windows"){				
				el.setStyle('margin-bottom', '15px');
			}
			if(BrowserDetect.OS == "Mac" && BrowserDetect.browser == "Firefox" && BrowserDetect.version == 3){				
				el.setStyle('margin-bottom', '18px');
			}
		});
		intMaxContentHeight = intMaxContentHeight + ((intRowsTotal-1)*intRowHeightEmpty) - intMaxHeightFix;
		
		// get max text height
		if(intNewContentHeight > intMaxContentHeight) intNewContentHeight = intMaxContentHeight;
		
		if(intNewContentHeight > 0){
			
				
			// display/hide 'readmore'-button
			if(intNewContentHeight == intMaxContentHeight) objWdkaElements.readmore.setStyles({ 'display': 'none' });
			else objWdkaElements.readmore.setStyles({ 'display': 'block' });
			objWdkaElements.readmore.setStyles({ 'left': 515});
			
			// reposition submenu & scale textcontent
			objWdkaElements.content.setStyles({ 'display': 'block', 'height': intNewContentHeight});
			objWdkaElements.subnav.setStyles({ 'display': 'block', 'top': (intContentTop+intNewContentHeight+intSubnavTop)});
			
		}
		else{
			// hide submenu & textcontent if there is no space
			objWdkaElements.content.setStyles({'display':'none'});
			objWdkaElements.subnav.setStyles({'display':'none'});
		}
	}
}

function repositionMain(){
	if(objWdkaElements.main){
		if((objWdkaVariables.intWindowWidth-(intPlayerZoomTop*2)) < intMainWidth){
			objWdkaElements.main.setStyles({ 'left': intPlayerZoomTop, 'margin-left': 0 });
		}
		else{
			objWdkaElements.main.setStyles({ 'left': '50%', 'margin-left': '-'+(intMainWidth/2)+'px' });
		}
	}
}

function repositionFooter(){
	if(objWdkaElements.footer){
		// get window height
		var intWindowHeight = objWdkaVariables.intWindowHeight;
		
		// repostion footer
		objWdkaElements.footer.setStyles({ 'display': 'block', 'top': (intWindowHeight - intFooterHeight) });
	}
}


function repositionColofon(){
	if(objWdkaElements.colofon){
		// get window height
		var intWindowWidth = objWdkaVariables.intWindowWidth;
		var intScrollPosX = window.getScrollLeft();
	
		// reposistion footer
		objWdkaElements.colofon.setStyles({ 'display': 'block', 'left': (intWindowWidth + intScrollPosX - intColofonWidth)});
	}
	if(objWdkaElements.extranav){
		// get window height
		var intWindowWidth = objWdkaVariables.intWindowWidth;
		var intScrollPosX = window.getScrollLeft();
	
		// reposistion footer
		objWdkaElements.extranav.setStyles({ 'display': 'block', 'left': (intWindowWidth + intScrollPosX - intExtraNavWidth)});
	}
}


function setPageOverflow(){
	// get window height
	var intWindowWidth = objWdkaVariables.intWindowWidth;
	var intWindowHeight = objWdkaVariables.intWindowHeight;
	
	//set correct scrollbars
	if((intMainHeight > intWindowHeight) || (intMainWidth > intWindowWidth)){
		
		// set vertical scrollbars
		if((intMainHeight > intWindowHeight)){
			objWdkaElements.html.setStyles({ 'overflow-y': 'scroll', 'width': intWindowWidth, 'height': intWindowHeight });
			if(window.gecko != true){ // firefox fix
				objWdkaElements.body.setStyles({ 'overflow-y': 'scroll', 'width': intWindowWidth, 'height': intWindowHeight });
			}
		}
		
		// set horizontal scrollbars
		if((intMainWidth > intWindowWidth)){
			objWdkaElements.html.setStyles({ 'overflow-x': 'scroll', 'width': intWindowWidth, 'height': intWindowHeight });
			if(window.gecko != true){ // firefox fix
				objWdkaElements.body.setStyles({ 'overflow-x': 'scroll', 'width': intWindowWidth, 'height': intWindowHeight });
			}
		}
		
		// set all scrollbars for safari 2, safari 2 doesn't support overflow-x and overflow-y 
		if(window.webkit419 == true){ //safari 2 fix
			objWdkaElements.html.setStyles({ 'overflow': 'scroll', 'width': intWindowWidth, 'height': intWindowHeight });
			objWdkaElements.body.setStyles({ 'overflow': 'scroll', 'width': intWindowWidth, 'height': intWindowHeight });
		}
	}
	else{
		// remove vertical scrollbars 
		objWdkaElements.html.setStyles({ 'overflow-y': 'hidden', 'width': intWindowWidth, 'height': intWindowHeight});
		objWdkaElements.body.setStyles({ 'overflow-y': 'hidden', 'width': intWindowWidth, 'height': intWindowHeight});
		
		// remove horizontal scrollbars 
		objWdkaElements.html.setStyles({ 'overflow-x': 'hidden', 'width': intWindowWidth, 'height': intWindowHeight});
		objWdkaElements.body.setStyles({ 'overflow-x': 'hidden', 'width': intWindowWidth, 'height': intWindowHeight});
		
		// remove all scrollbars for safari 2
		if(window.webkit419 == true){ //safari 2 fix
			objWdkaElements.html.setStyles({ 'overflow': 'hidden', 'width': intWindowWidth, 'height': intWindowHeight });
			objWdkaElements.body.setStyles({ 'overflow': 'hidden', 'width': intWindowWidth, 'height': intWindowHeight });
		}
		
		// scroll to top is there are no scrollbars
		if(window.ie) { // IE6 & IE7 fix
			var scroll = new Fx.Scroll(objWdkaElements.html, { wait: false, duration: 0 });
			scroll.toTop();
		}
		else{
			var scroll = new Fx.Scroll(objWdkaElements.body, { wait: false, duration: 0 });
			scroll.toTop();
		}
	}
}


function expandContent(){
	
	if(bolContentExpand == false){
		bolContentExpand = true;
		
 		// get window height
		var intWindowWidth = objWdkaVariables.intWindowWidth;
		var intWindowHeight = objWdkaVariables.intWindowHeight;
		
		// set vertical scrollbars
		objWdkaElements.html.setStyles({ 'overflow-y': 'scroll', 'width': intWindowWidth, 'height': intWindowHeight });
		if(window.gecko != true){ // firefox fix
			objWdkaElements.body.setStyles({ 'overflow-y': 'scroll', 'width': intWindowWidth, 'height': intWindowHeight });
		}
		
		// set all scrollbars for safari 2, safari 2 doesn't support overflow-x and overflow-y 
		if(window.webkit419 == true){ //safari 2 fix
			objWdkaElements.html.setStyles({ 'overflow': 'scroll', 'width': intWindowWidth, 'height': intWindowHeight });
			objWdkaElements.body.setStyles({ 'overflow': 'scroll', 'width': intWindowWidth, 'height': intWindowHeight });
		}
		
		// hide the 'readmore'-button
		(function(){ objWdkaElements.readmore.setStyles({ 'display': 'none' }) }).delay(intExpandContentAnimationDuration);
		
		// get total tex rows
		var intMaxContentHeight  = 0;
		var objRowsTotal = objWdkaElements.content.getElements('p');
		var intRowsTotal = objRowsTotal.length;
		objRowsTotal.each(function(el){
			intMaxContentHeight = intMaxContentHeight + el.getSize().y;
			if(BrowserDetect.OS == "Windows"){
				el.setStyle('margin-bottom', '15px');
			}
		});
		intMaxContentHeight = intMaxContentHeight + ((intRowsTotal-1)*intRowHeightEmpty) - intMaxHeightFix;
		
		// Animate/Expand Text
		var objContentFX = new Fx.Morph(objWdkaElements.content, {duration: intExpandContentAnimationDuration, transition: objExpandContentAnimationType});
		objContentFX.start({'height': (intMaxContentHeight)});
		
		// Animate/Expand SubNav
		var objSubNavFX = new Fx.Morph(objWdkaElements.subnav, {duration: intExpandContentAnimationDuration, transition: objExpandContentAnimationType});
		objSubNavFX.start({'top': ((intMaxContentHeight) + intContentTop)});
		
		// Animate/Expand Footer
		var objFooterFX = new Fx.Morph(objWdkaElements.footer, {duration: intExpandContentAnimationDuration, transition: objExpandContentAnimationType});
		objFooterFX.start({'top': ((intMaxContentHeight) + intTopAndFooterHeight - 50)});

		(function(){ resizeBackground('background', intExpandContentAnimationDuration, true); }).delay(intExpandContentAnimationDuration);
	}
	
}


