// JavaScript Document
/**
* Function : dump()
* Arguments: The data - array,hash(associative array),object
*    The level - OPTIONAL
* Returns  : The textual representation of the array.
* This function was inspired by the print_r function of PHP.
* This will accept some data as the argument and return a
* text that will be a more readable version of the
* array/hash/object that is given.
*/
function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects
	 for(var item in arr) {
	  var value = arr[item];
	 
	  if(typeof(value) == 'object') { //If it is an array,
	   dumped_text += level_padding + "'" + item + "' ...\n";
	   dumped_text += dump(value,level+1);
	  } else {
	   dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
	  }
	 }
	} else { //Stings/Chars/Numbers etc.
	 dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
} 

function scrolling(init) 
	{		
		if ( $(init) != null) 
			{
				var scroller = new Fx.Scroll(window); 
				var el = $(init).getElements('a');
				var index=0;for (var i=0;i<=el.length-1;i++)	
					{
						var element = el[i];	
						$(element).addEvent('click', function(){								
							scroller.toElement(this.href.substring(this.href.lastIndexOf('#')+1,this.href.length));								
						});
					}
			}
	}


window.addEvent('load', function() {
									 
	if ($('topspeaker'))
		{
			//hole die Topspeaker
			
			var module	=	$('topspeaker').getProperty('title');
			var host	=	window.location.host;						
				url		=	'http://'+host+'/konferenzen/ext_scripts/v1/php/topspeaker.php?module='+module;				
		    var data	=	new Ajax(url, {	method: 'get', update: $('topspeaker') });
		    	data.request();
		    ( function () { data.request(); }).periodical(8000);
		    
				
		}		
		
		
	if ($('twitter')) {
			
			twitterContainer	=	$('twitter');
			twitterID			=	twitterContainer.getProperty('user');
			twitterName			=	twitterContainer.getProperty('name');
			twitterLimit		=	4;
			
			// http://twitter.com/statuses/user_timeline/*twitterID*.json
			twitterRequestUrl		=	"/konferenzen/ext_scripts/v1/php/twitterJSON.php?twitterID=" + twitterID;
			
			
	
			var twitterJSON = new Json.Remote(twitterRequestUrl, {onComplete: function(twitter){
				// alert(dump(twitter));
				sortTwitterData(twitter);
			}}).send();
			
			
			
			function sortTwitterData(data) {
				//alert(dump(data[0]));
				
				// auslesen der elemente des twitterObjects
				twitterObjectLength	=	data.length;
				twitterObject		=	data;
				twitterResults		= 	new Array();
				
				
			var	twitterList	=	new Element('ul').setProperty('id','twitterlists');	
				
				twitterObject.each(function(item,index) {
					if (index < twitterLimit)	{
						twitterResults[index]				= 	new Array();					
						twitterResults[index]["name"]		=	twitterObject[index]["user"]["name"];
						twitterResults[index]["location"]	=	twitterObject[index]["user"]["location"];
						twitterResults[index]["url"]		=	"http://twitter.com/"+twitterObject[index]["user"]["name"];
						twitterResults[index]["date"]		=	twitterObject[index]["created_at"];
						twitterResults[index]["text"]		=	twitterObject[index]["text"];	
						
						
						// Datum transformieren
						// Fri Jun 27 13:31:43 +0000 2008 => Freitag, 27. Juni, 13:31 Uhr
						
						twitterResults[index]["date"]	=	twitterResults[index]["date"].substr(0, twitterResults[index]["date"].lastIndexOf("+"));


						// Urls in texten finden und ggfls formatieren					
						if (twitterResults[index]["text"].contains('http')) {					
							twitterResults[index]["text"] = twitterResults[index]["text"].replace(/(http:\/\/\S*)/g, '<a href="$1">$1<\/a> ');						
						} else if (twitterResults[index]["text"].contains('www') ){
							twitterResults[index]["text"] = twitterResults[index]["text"].replace(/(www.\S*)/g, '<a href="http://$1">$1<\/a> ');						
						}
						
						// erstellen des HTML Quellcoed
						li	=	new Element('li').setStyle('visibility','hidden');
						div	=	new Element('div').setProperty('class','content');					
						// new Element('a').setProperty('href',twitterResults[index]["url"]).setText(twitterResults[index]["name"]+": ").injectInside(div);	
						new Element('span').setHTML(twitterResults[index]["text"]).injectInside(div);					
						new Element('div').setText(twitterResults[index]["date"]).setProperty('class','date').injectInside(div);
						div.injectInside(li); 
						li.injectInside(twitterList); 
					}
					if (index == twitterLimit)	{					
						li	=	new Element('li').setStyle('visibility','hidden');
						new Element('div').setProperty('class','content').setHTML("Latest <b>"+ twitterLimit +"</b> Messages from Twitter.<br> More under <a href='http://twitter.com/"+twitterName+"'>http://twitter.com/"+twitterName+"</a> ").injectInside(li);	
						
						li.injectInside(twitterList); 					
					}
				});

				
				twitterList.injectInside(twitterContainer);
				// shcnell holen der höhe und sofort verstecken!
				twitterContainerHeight	=	$('twitter').getStyle('height');
			
				if (window.ie != true) {
					// alert(twitterContainerHeight);
					twitterContainer.setStyle('height', 70);
					
					new Fx.Style(twitterContainer, 'height', {duration: 250, transition: Fx.Transitions.linear}).start(70,twitterContainerHeight);
				} else {
					col3Height	=	col3.getStyle('height').toInt();
					col3.setStyle('height', col3Height+600);	
				}
					
				twitterListings	=	$('twitterlists').getElements('li');
				twitterListings.each(function(item,index) {
					( function(){	
							  new Fx.Style(item, 'opacity', {duration: 250, transition: Fx.Transitions.linear}).start(0.0,1.0);
					}).delay(500*(index+1));						
				});
				
				
				// einfaden und ausfahren der twitterbox
			}
			
			
	
			
			
			
			
			
	}
	
	
	
	
	
	
	
	if ($('generateSidebar'))
		{
		if ($('sessions-js'))
			{
				new Element('h2').setText('Sessions').injectInside('col3_content');	
			}	
			
		// hole alle h3s
		headlines	=	$('col1_content').getElements('h3');		
		output	=	new Element('div',{ 'id': 'col3_anchors', 'class': 'box'});
		ul		=	new Element('ul');		
		headlines.each(function(item, index)
				{
					
						if (item.getElement('span[class=company]'))
							{
								company	=	item.getElement('span[class=company]').getText();
											item.getElement('span[class=company]').setText('');
								name	=	item.getText('');
											item.getElement('span[class=company]').setText(company);
							}
						else if (item.getElement('span[class=info]'))
							{
								company	=	item.getElement('span[class=info]').getText();
											item.getElement('span[class=info]').setText('');
								name	=	item.getText('');
											item.getElement('span[class=info]').setText(company);
							}
						else
							{
								name	=	item.getText('');
							}
						li	=	new Element('li');
						a	=	new Element('a').setText(name).setStyle('cursor','pointer');
						a.addEvent('click', function()
							{
									scroller.toElement(item);							
							});
						a.injectInside(li);
						li.injectInside(ul);
				
				});
				
		ul.injectInside(output);
		output.injectInside('col3_content');
		
		
		
		

		
		}
	else
		{
			scrolling('col3_anchors');
		}
		
	
	
	// Tool Tips		
	
	var Tips1 = new Tips($$('.tooltip'));		
	var Tips2 = new Tips($$('.tooltip_arrow'), { className: 'arrow'	});
	
	// Navigation
	if ( $('nav') != null) 
		{		
								 
			
		var	links		=	$('nav_main').getElements('li[class=link]');		
		var	homebtn         =	$('nav_main').getElements('li[class=home]');
		var	subitems	=	$('nav_main').getElements('ul[class=nav_sub]');
		var lastItem            =	0;
		var navPosition 	= 	$('nav_main').getPosition().x;
		var navheight           = 	$('nav_main').getStyle('height').toInt();
		
		window.addEvent('resize', function(){
			navPosition = 	$('nav_main').getPosition().x;
		});
		window.addEvent('load', function(){
			navPosition = 	$('nav_main').getPosition().x;
		});
		for (var i=0;i<=links.length-1;i++)	
				{
					var element	= links[i];
					var elmPosition = null;
					var curIndex = i;
					
					
					element.setProperty('rel',i);
					
					element.addEvent('mouseover', function()
						{	
							elmPosition		=	this.getPosition().x;
							submenuPosition = 	(elmPosition) - navPosition;							
							show(parseInt(this.getProperty('rel')), submenuPosition);
					});
					
					subitems.addEvent('mouseleave', function()
						{							
							hide(parseInt(this.getProperty('rel')));
					});				
				}
				
		}	
		
		if ($('nav_main')) {
			homebtn.addEvent('mouseover', function() {
				hide(lastItem);
			});	
		}

		
		$('header-out').addEvent('mouseover', function() {
			hide(lastItem);
		});
		
		function show(index, pos) {

			hide(lastItem);
			subitems[index].setStyles({
					'display':'block',
					'position':'absolute',
					'top': (navheight),
					'left': (pos+10)+'px',
					'z-index':'999'
			});	
			lastItem = index;
		}
				
		function hide(index, pos) {
			subitems.setStyles({ 'display':'none' });	
		}

	
	
			
	if ( $('feed-icon') != null)  {		
			$('feed-icon').addEvent('mouseover', function()	{	this.src='/konferenzen/img/layout/feed-active.png';	});				
			$('feed-icon').addEvent('mouseout', function()	{	this.src='/konferenzen/img/layout/feed-inactive.png';	});				
			$('blog-icon').addEvent('mouseover', function()	{	this.src='/konferenzen/img/layout/blog-active.png';	});				
			$('blog-icon').addEvent('mouseout', function()	{	this.src='/konferenzen/img/layout/blog-inactive.png';	});				
			$('flickr-icon').addEvent('mouseover', function(){	this.src='/konferenzen/img/layout/blog-active.png';	});				
			$('flickr-icon').addEvent('mouseout', function(){	this.src='/konferenzen/img/layout/blog-inactive.png';	});				
			$('speaker-icon').addEvent('mouseover', function(){	this.src='/konferenzen/img/layout/blog-active.png';	});				
			$('speaker-icon').addEvent('mouseout', function(){	this.src='/konferenzen/img/layout/blog-inactive.png';	});		
	}			
	
	if ( $('toplink') != null) 	{			                   
		$('toplink').addEvent('click', function() { scroller.toTop();  	}); 
	}		
		
		var scroller = new Fx.Scroll(window);   
		var el	=	$('col1_content').getElements('a[name=top]');		
		for (var i=0;i<=el.length-1;i++)	
				{
					var element	= el[i];	
					$(element).addEvent('click', function() { scroller.toTop();  	}); 					
				}

	
	



	 if (navigator.appName.indexOf("Explorer") != -1)
			{
				var col1Height	=	$('col1').getStyle('height');
				var col3Height	=	$('col3').getStyle('height');	
				col1Height	=	col1Height.replace('px','');
				col1Height	=	parseInt(col1Height);
				col3Height	=	col3Height.replace('px','');
				col3Height	=	parseInt(col3Height);	
				if (col1Height >= col3Height)
					{
				 		$('col3').setStyle('height', col1Height); 
					}
			
			}


});


/* Googlemaps Implementierung */

	var googleMaps	=	new Array();
	var	googleAdressIndex	=	"";
	var map			=	new Array();
	var geocoder	=	new Array();
	
window.addEvent('load', function() {
		if (googleMaps.length > 0) {			
			containerMaps	=	$('col1').getElements('div[id=google]'); 
			googleMaps.each(function(item, index){
			/* Google API:begin --------------------------------------------------- */
							map[index] 			= null;
							geocoder[index] 	= null;
						
							containerMaps[index].setStyles({'height':375,
															'margin':'0px 0px 0px 0px',
															'overflow':'hidden'});
	
							
						  if (GBrowserIsCompatible()) {
							  
								map[index] = new GMap2(containerMaps[index]);
								
								//map[index].setOnLoadCallback(function() { alert('fertig geladen'); });
								
								map[index].addControl(new GSmallMapControl());
								map[index].addControl(new GScaleControl());			
								geocoder[index] = new GClientGeocoder();
								
								eventTabOne	=	"<b>"+item['name']+"</b><br/>"+item['strasse']+"<br/>"+item['ort']+"<br/><a href='"+item['webseite']+"'>"+item['webseite']+"</a>";
								eventTabTwo	=	"";
								
								var tabsArray		=	new Array();
									tabsArray[0]	=	new GInfoWindowTab("Adresse", eventTabOne);
								address	=	item['adress'];
							
							  if (geocoder[index]) {
								geocoder[index].getLatLng(
								  address,
								  function(point) {
									if (!point) {
									  alert(address + " not found");
									} 
									  map[index].setCenter(point, 13);
									  
									 
									  var marker = new GMarker(point);
									  map[index].addOverlay(marker);
									  marker.openInfoWindowTabs(tabsArray); 				  
									  GEvent.addListener(marker, "click", function() { marker.openInfoWindowTabs(tabsArray); });
									  
									  
								
											 
				
									  
									  
									
								  }
								);
							  }		
						  }											 
			/* Google API:en ----------------------------------------------------- */		 
			});
		}		
});
	
	
	


window.addEvent('load', function() {
	
	
	if ($('shortlinks'))
		{
			$('col3_content').empty();	
			$('shortlinks').injectInside('col3_content');	
			
		}
	
	
	if ( $('bookmark') != null) 
			{ 
				if ($('teaser-start'))
					{
						teaserHeight	=	parseInt($('teaser-start').getSize().size.y);
					}
				else if ($('teaser-location'))
					{
						teaserHeight	=	parseInt($('teaser-location').getSize().size.y);
					}
				else if ($('slideshow'))
					{
						teaserHeight	=	parseInt($('slideshow').getSize().size.y);
					}
				else
					{
						teaserHeight	=	0;
					}
					
					
					$('bookmark').setStyles({
						'position': 'absolute', 
						'top': (teaserHeight+10)+'px',
						'right': '10px',
						'z-index': '99',
						'display': 'block'
					})
				

			}
	
	

	
	if ( $('teaser-location') != null) 
			{		
			(function()
			{
				$('teaser-location').effect('opacity', {duration: 1500, transition: Fx.Transitions.linear}).start(0.0,1.0);
			}).delay(10);
	}	
	

	
	
	
	
	
	


});

// PopUp Script //

var pop = null;

function popdown() {
  //if (pop && !pop.closed) pop.close();
}

function popup(obj,w,h) {
  var url = (obj.getAttribute) ? obj.getAttribute('href') : obj.href;
  if (!url) return true;
  w = (w) ? w += 20 : 150;  // 150px*150px is the default size
  h = (h) ? h += 25 : 150;
  var args = 'width='+w+',height='+h+',resizable,'+'scrollbars=yes';
  popdown();
  pop = window.open(url,'',args);
  return (pop) ? false : true;
}

window.onunload = popdown;
window.onfocus = popdown;


/**
 * adds the title (second h1-tag) at the end of the url in the link-object
 */
function addTitle(linkObj) {
	linkObj.href += document.getElementsByTagName("h2")[0].innerHTML;
}


//v1.7
// Flash Player Version Detection
// Detect Client Browser type
// Copyright 2005-2007 Adobe Systems Incorporated.  All rights reserved.
var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
	var version;
	var axo;
	var e;

	// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

	try {
		// version will be set for 7.X or greater players
		axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		version = axo.GetVariable("$version");
	} catch (e) {
	}

	if (!version)
	{
		try {
			// version will be set for 6.X players only
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
			
			// installed player is some revision of 6.0
			// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
			// so we have to be careful. 
			
			// default to the first public version
			version = "WIN 6,0,21,0";

			// throws if AllowScripAccess does not exist (introduced in 6.0r47)		
			axo.AllowScriptAccess = "always";

			// safe to call for 6.0r47 or greater
			version = axo.GetVariable("$version");

		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 4.X or 5.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = axo.GetVariable("$version");
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 3.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
			version = "WIN 3,0,18,0";
		} catch (e) {
		}
	}

	if (!version)
	{
		try {
			// version will be set for 2.X player
			axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			version = "WIN 2,0,0,11";
		} catch (e) {
			version = -1;
		}
	}
	
	return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer(){
	// NS/Opera version >= 3 check for Flash plugin in plugin array
	var flashVer = -1;
	
	if (navigator.plugins != null && navigator.plugins.length > 0) {
		if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
			var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
			var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
			var descArray = flashDescription.split(" ");
			var tempArrayMajor = descArray[2].split(".");			
			var versionMajor = tempArrayMajor[0];
			var versionMinor = tempArrayMajor[1];
			var versionRevision = descArray[3];
			if (versionRevision == "") {
				versionRevision = descArray[4];
			}
			if (versionRevision[0] == "d") {
				versionRevision = versionRevision.substring(1);
			} else if (versionRevision[0] == "r") {
				versionRevision = versionRevision.substring(1);
				if (versionRevision.indexOf("d") > 0) {
					versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
				}
			}
			var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
		}
	}
	// MSN/WebTV 2.6 supports Flash 4
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
	// WebTV 2.5 supports Flash 3
	else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
	// older WebTV supports Flash 2
	else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
	else if ( isIE && isWin && !isOpera ) {
		flashVer = ControlVersion();
	}	
	return flashVer;
}

// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
	versionStr = GetSwfVer();
	if (versionStr == -1 ) {
		return false;
	} else if (versionStr != 0) {
		if(isIE && isWin && !isOpera) {
			// Given "WIN 2,0,0,11"
			tempArray         = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
			tempString        = tempArray[1];			// "2,0,0,11"
			versionArray      = tempString.split(",");	// ['2', '0', '0', '11']
		} else {
			versionArray      = versionStr.split(".");
		}
		var versionMajor      = versionArray[0];
		var versionMinor      = versionArray[1];
		var versionRevision   = versionArray[2];

        	// is the major.revision >= requested major.revision AND the minor version >= requested minor
		if (versionMajor > parseFloat(reqMajorVer)) {
			return true;
		} else if (versionMajor == parseFloat(reqMajorVer)) {
			if (versionMinor > parseFloat(reqMinorVer))
				return true;
			else if (versionMinor == parseFloat(reqMinorVer)) {
				if (versionRevision >= parseFloat(reqRevision))
					return true;
			}
		}
		return false;
	}
}

function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '';
  if (isIE && isWin && !isOpera)
  {
    str += '<object ';
    for (var i in objAttrs)
    {
      str += i + '="' + objAttrs[i] + '" ';
    }
    str += '>';
    for (var i in params)
    {
      str += '<param name="' + i + '" value="' + params[i] + '" /> ';
    }
    str += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblclick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
      case "id":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}

	
