// default onload-functions called in the body-tag

function onloadFunctions()
{
	//skads_showFallbacks('adsd_banner_top', 'adsfallback_banner_top', 10);
	//skads_showFallbacks('adsd_skyscraper', 'adsfallback_skyscraper', 10);
	skads_showCoupleFallbacks('adsd_banner_top', 'adsfallback_banner_top', 10, 'adsd_skyscraper', 'adsfallback_skyscraper', 10);
    skads_showFallbacks('adsd_contentad_r1', 'adsfallback_contentad_r1', 15);
    
    pageLoaded = true;
}

//window.onload = function() { }

// simple show-hide based on visibility and position:absolute

function showhide(fieldid)
{
	var a = document.getElementById(fieldid);
	
	if(a.style.visibility == "hidden") 
	{
		a.style.visibility = 'visible';
		a.style.position = 'static';
	}
	else 
	{
		a.style.visibility = 'hidden';
		a.style.position = 'absolute';
	}
}

/* Toggle image upload iframe */

function uploadWindow(uploadbox, uploadvalue)
{
	var uplframestyle = document.getElementById(uploadbox);
	if(uplframestyle.style.visibility != 'hidden')
	{
		uplframestyle.style.visibility = 'hidden';
		uplframestyle.style.position = 'absolute';
	}
	else
	{
		uplframestyle.style.visibility = 'visible';
		uplframestyle.style.position = 'static';
	}
}

/* Value for upload iframe */

// FIXME using mootools

function uploadSetValue(uploadbox, uploadvalue)
{
	var uplframebox = document.getElementById(uploadbox);
	var uplval = window.frames[uploadbox].document.getElementById('uploadimg').src;

	uplval = uplval.split(/\//);
	document.getElementById(uploadvalue).value = uplval[(uplval.length - 1)];
}

/************************************** Form elements ************************************/

/*
Show/hide elements related to a checkbox,
Use the the css-class .hidden for invisible elements on load.
*/

function showhideRelatedToCheckbox(checkboxid, relid)
{
	var a = document.getElementById(checkboxid), b = document.getElementById(relid);
	if(a.checked == true) b.style.visibility = 'visible'; else b.style.visibility = 'hidden';
}

/* Show/hide for radio-elements. Mutliple radioboxids, comma-separated. One rel-element */

function showhideRelatedToRadiobox(radioboxids, relid, changePosition)
{
	var b = document.getElementById(relid), i;
	radioboxids = radioboxids.split(/,/);
	for(i = 0; i < radioboxids.length; i++)
	{
		if(document.getElementById(radioboxids[i]).checked == true)
		{
			b.style.visibility = 'visible';
			if(changePosition) { b.style.position = 'static'; }
			break;
		}
		else {
			if(changePosition) { b.style.position = 'absolute'; }
			b.style.visibility = 'hidden';
		}

	}
}

/*
 * Animation for rating stars
 */

function ratingAnimation(ratingBox, toReset, requestParms)
{
	var ri = ratingBox.getElementsByTagName('IMG'), i, images = new Object();
	images["empty"] = "/images/layout/default/rating-empty.gif";
	images["full"]  = "/images/layout/default/rating-full.gif";
	images["half"]  = "/images/layout/default/rating-half.gif";

	toReset = toReset.split(/,/);
	ratingBox.onmouseout = function() {
		for(i=0; i<ri.length; i++) { ri[i].src = images[toReset[i]]; }
	}

	ri[0].onmouseover = function() {
		ri[0].src = images["full"]; ri[1].src = images["empty"]; ri[2].src = images["empty"]; ri[3].src = images["empty"]; ri[4].src = images["empty"];
	}
	ri[0].onclick = function() { ratingOnClick(0) }

	ri[1].onmouseover = function() {
		ri[0].src = images["full"]; ri[1].src = images["full"]; ri[2].src = images["empty"]; ri[3].src = images["empty"]; ri[4].src = images["empty"];
	}
	ri[1].onclick = function() { ratingOnClick(1) }

	ri[2].onmouseover = function() {
		ri[0].src = images["full"]; ri[1].src = images["full"]; ri[2].src = images["full"]; ri[3].src = images["empty"]; ri[4].src = images["empty"];
	}
	ri[2].onclick = function() { ratingOnClick(2) }

	ri[3].onmouseover = function() {
		ri[0].src = images["full"]; ri[1].src = images["full"]; ri[2].src = images["full"]; ri[3].src = images["full"]; ri[4].src = images["empty"];
	}
	ri[3].onclick = function() { ratingOnClick(3) }

	ri[4].onmouseover = function() {
		ri[0].src = images["full"]; ri[1].src = images["full"]; ri[2].src = images["full"]; ri[3].src = images["full"]; ri[4].src = images["full"];
	}
	ri[4].onclick = function() { ratingOnClick(4) }
}

// draft
function ratingOnClick(ratingElement)
{
	window.location.href = "?rating=" + (ratingElement + 1);
}

/************************************** Mootools related ************************************/
/* glowing */
function glow (effect) { // let the text pulsate one time   
    effect.start("#FFFFFF").chain(function() {
        effect.start("#FF0000");
    });
    effect.start("#FF0000").chain(function() {
        effect.start("#FFFFFF");
    });
}

function glows(effect, annoyFactor) { // let the text pulsate as often as you like
    if (!annoyFactor) { annoyFactor = 1; }
    for (i=0;i<annoyFactor;i++) {
        glow(effect);
    }
}

/* menu */

function slideMenu() {
	if(!window.opera) {
		var slideEventElement, i1 = 0;
		var slideElements = $$('#nav .navLevel1');
		var calcduration = slideElements.length * 20;
		slideElements.each(function(slideEventElement){
			slideMenuEntry(slideEventElement, i1, calcduration);
			i1++;
		});
	}
}

function slideMenuEntry(slideEventElement, i1, calcduration)
{
	var navSlide = new Fx.Slide('navlevel2_'+i1, {duration: calcduration});
	if($('navlevel2_'+i1).className.indexOf('navCurrentShow') == -1) navSlide.hide();
	slideEventElement.addEvent('click', function(e){
		e = new Event(e);
		navSlide.toggle();
		e.stop();
	});
}


/* toggle other content elements */

function slideBox(slideElementId, slideEventElementId, durationTime, hideOnStart)
{
	slider(slideElementId, slideEventElementId, hideOnStart, 'toggle', {duration: durationTime});
}

function slider(slideElementId, slideEventElementId, hideOnStart, slidetype, parameters)
{
	if(!window.opera) {
		slideElement = $(slideElementId);
		var doSlide = new Fx.Slide(slideElement, parameters);
		slideElement.style.display = 'block';
		if(hideOnStart) {
			doSlide.hide(); // inital hiding
		}
	
		$(slideEventElementId).addEvent('click', function(e){
			e = new Event(e);
			switch(slidetype) {
				case 'in':
				doSlide.slideIn();
				break;
	
				case 'out':
				doSlide.slideOut();
				break;
	
				case 'toggle':
				doSlide.toggle();
				break;
	
				case 'hide':
				doSlide.hide();
				break;
			}
			e.stop();
		});
	}
}


/* checkboxes */

function checkOrUncheckCheckboxes(parentId)
{
	var chks = $$("#"+parentId+" input type=checkbox"), i, allAreChecked  = true;

	for(i = 0; i < chks.length && allAreChecked; i++)
	{
		allAreChecked = chks[i].checked;
	}
	for(i = 0; i < chks.length; i++)
	{
		chks[i].checked = ! allAreChecked;
	}
}

/* external links in user generated content
 * Load this function allways with windo.onload cause of IE problems.
 * window.onload = function()  { externalUserLinks("Sie verlassen die Seite nun auf eigene Gefahr. Der angegebene Link wurde von uns nicht verifiziert.", "Es wird ein neues Fenster geöffnet"); }
 */

function externalUserLinks(textConfirm, textTitleAttr)
{
	$$(".externalUserLink").each(function(l) {
		l.setAttribute("target", "_blank");
		l.setAttribute("title", textTitleAttr);
		l.addEvent('click', function(e) {
			e = new Event(e);
			if(confirm(textConfirm+"\nURL: "+this.href)) {return true}
			e.stop();
			return false;
		});
	})
}

/* tooltips */

function wlGetWindowHeight() // TODO: fix mootools
{
	if(window.ie) {
		return document.body.clientHeight;
	}
	else {
		return document.documentElement.clientHeight;
	}
}

function wlGetScrollTop() // TODO: fix mootools window.getScrollTop()
{
	if(window.ie) {
		return document.body.scrollTop;
	}
	else {
		return window.pageYOffset;
	}
}

function hoverAvatarBoxElement(l)
{
	var hoverBoxWidth, hoverBoxHeight, pageWidth = 844, mouseDistance = 14,
	box, posLeft, posTop, mouseTop, mouseLeft;

	l.addEvent("mouseenter", function(e) {
		e = new Event(e);
		box = $(this.id + "_box");
		box.style.visibility = "visible";
		
		dynamicImpression();
		
		e.stop();
	});

	l.addEvent("mousemove", function(e) {
		e = new Event(e);
		box = $(this.id + "_box");

		hoverBoxWidth = box.offsetWidth;
		hoverBoxHeight = box.offsetHeight;
		mouseTop = e.page.y;
		mouseLeft = e.page.x;

		// calculate top position

		if(mouseLeft + (hoverBoxWidth / 2) > pageWidth) {
			posLeft = pageWidth - hoverBoxWidth;
		}
		else if(mouseLeft - (hoverBoxWidth / 2) <= 0) {
			posLeft = 0;
		}
		else {
			posLeft = mouseLeft - (hoverBoxWidth / 2);
		}

		// calculate top position
/*
		if(mouseTop - wlGetScrollTop() > (wlGetWindowHeight() - hoverBoxHeight - mouseDistance)) {
			posTop = mouseTop - hoverBoxHeight - mouseDistance;
			if(window.ie6) { posTop = posTop + wlGetScrollTop() }
		}
		else
		{
*/
			posTop = mouseTop + mouseDistance;
			if(window.ie6) { posTop = posTop + wlGetScrollTop() }
		//}

       posTop = posTop - 91;        

		box.style.top = posTop + "px";
		box.style.left = posLeft + "px";
		e.stop();
	});

	l.addEvent("mouseout", function(e) {
		e = new Event(e);
		box = $(this.id + "_box");
		box.style.visibility = "hidden";
		box.style.left = "-1000px";
		e.stop();
	});
}
 
function hoverAvatarBox(className)
{
	$$(className).each(function(l) {
		hoverAvatarBoxElement(l);
	});
}

function hoverFixedBox(className)
{
	$$(className).each(function(l) {
		l.addEvent("click", function(e) {

			showhide(this.id + "_box");
			
			box = $(this.id + "_box");
			box.style.position = 'fixed';
			box.style.top = '10px';
			box.style.left = '10px';	
		});
	});
}


/* Flash HTML */

function swfObjectTag(url, attributes, params, text)
{	
	var default_attributes = new Object(), default_params = new Object(), content = '', name;
		
	// default-ie-attributes
	if(document.all) {
		//default_attributes['classid'] = 'clsid:8FFBE65D-2C9C-4669-84BD-5829DC0B603C';
		default_attributes['classid'] = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
		default_attributes['codebase'] = 'http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0';
	}
	else {
		default_attributes['data'] = url;
		default_attributes['type'] = 'application/x-shockwave-flash';
	}

	
	// default-ie-params
	if(document.all) {
		default_params['movie'] = url;
	}
	
	// default-params
	default_params['quality'] = 'height';
	default_params['allowScriptAccess'] = 'sameDomain';
	
	// start object-tag	
	content += '<object';
	
	// add attributes
	for (name in attributes) {
		content += ' ' + name + '="' + attributes[name] + '"';
		if(default_attributes[name] !== undefined)
			delete default_attributes[name];
	}
	
	if(default_attributes !== undefined) {
		for (name in default_attributes) {
			content += ' ' + name + '="' + default_attributes[name] + '"';
		}
	}
	
	content += '>';
	
	// start params	
	for (name in params) {
		content += ' <param name="' + name + '" value="' + params[name] + '" />';
		if(default_params[name] !== undefined)
			delete default_params[name];		
	}	
	
	if(default_params !== undefined) {
		for (name in default_params) {
			content += ' <param name="' + name + '" value="' + default_params[name] + '" />';
		}
	}
	
	// close object tag	
	content += ' ' + text + ' </object>';
	
	return content;
}

// For the content menu 

function menuTimer(languageCode)
{
	var t1 = document.getElementById("menuTimeH");
	var t2 = document.getElementById("menuTimeI");
	var ap = document.getElementById("menuTimeAmpm");

	var now = new Date();
	var hour = now.getHours();
	var minute = now.getMinutes();

	switch(languageCode) {
	   case "de":
	       // nothing to to	       
	   break;
	
	   default:
			if(hour > 12) {
				hour = hour - 12;
				ap.innerHTML = "p.m.";
			}
			else {
				ap.innerHTML = "a.m.";
		    }
	   break;
    }

	if(hour < 10)
		t1.innerHTML = "0"+hour;
	else {
		t1.innerHTML = hour;
	}
	if(minute < 10)
		t2.innerHTML = "0"+minute;
	else
		t2.innerHTML = minute;

	window.setTimeout("menuTimer('"+languageCode+"')", 1000);
}

function switchTown(el)
{
	var wLocation = window.location.href;
	
	if(wLocation.indexOf("?") == -1)
	{
		if ( wLocation.indexOf( "townCategoryIdref/" ) == -1 )
		{
			window.location.href = wLocation + "/townCategoryIdref/" + el.value;
		}
		else
		{
			window.location.href = wLocation.replace( /townCategoryIdref\/.+(\/?)/, "townCategoryIdref/" + el.value + "$1" );
		}
	}
	else
	{
		wLocation = wLocation.replace("frontend\.php/", "");
		wLocation = wLocation.replace("frontend_dev\.php/", "");	
		var wLocation2 = wLocation.match("http://[^/]+?/([^/]+?)/");
		window.location.href = "/"+wLocation2[1] + "/home/index/townCategoryIdref/" + el.value;
	}
}

function switchLang(languageCode)
{
	var wLocation = window.location.href;
	var local = $("languageLinkLocal");
	var en = $("languageLinkEn");
	
	local.href = wLocation.replace("/en/", "/"+languageCode+"/");
	en.href    = wLocation.replace("/"+languageCode+"/", "/en/");
}

// ads
// skads_minheight is the height of ads div is smaller than that show fallback
function skads_showFallbacks(addId, fallbackId, skads_minheight) { // shows fallback content if no ads are delivered
	var fallback= $(fallbackId), add= $(addId); 
	if(fallback && add)
	{		
		if (add.offsetHeight < skads_minheight) {
			fallback.style.display = "block";
		}
	}
}

// check two ads at once to show fallback-campaign-ads like wallpapers 
// skads_minheight is the height of ads div is smaller than that show fallback
function skads_showCoupleFallbacks(addId1, fallbackId1, skads_minheight1, addId2, fallbackId2, skads_minheight2) { // shows fallback couple content if both of ads are not delivered
    var fallback1= $(fallbackId1), add1= $(addId1); 
    var fallback2= $(fallbackId2), add2= $(addId2);
    if(fallback1 && add1 && fallback2 && add2)
    {       
        if ( (add1.offsetHeight < skads_minheight1) && (add2.offsetHeight < skads_minheight2) ) {
            fallback1.style.display = "block";
            fallback2.style.display = "block";
        }
    }
}

/************************************** AJAX with mootools ************************************/

function updateContent( url, contentContainerId, random, trackerOff, loaderOff ) {
     if( random == null ) {
         random = true;
     }

     randomAdd = "";
     if ( random ) {
         searchFor = "[?].";
         result = url.search( searchFor );
           
         if ( result == -1 ) {
             randomAdd += "?";
         }
         else {
             randomAdd += "&";
         }
           
         randomAdd += "random="+(Math.floor(Math.random()*1000));
     }  
     
     if( loaderOff == null || loaderOff == false ) {
        showLoader( contentContainerId );
     }
//alert(url + randomAdd);     
   new Ajax(url + randomAdd, {method: "get", evalScripts: true, onComplete:  function(){ ajaxRequestCompleted( trackerOff )  }.bind(this), update: $( contentContainerId )}).request();      
}

function ajaxRequestCompleted( trackerOff ) {
    if ( trackerOff == null || trackerOff == false ) {
        dynamicImpression();
    } 
   //$('loader').style.display = 'none';
   var temp = $('loader'); 
   if (typeof(temp) == 'object') {
       temp.style.display = 'none';
   }
}

function showLoader( boxContentLoading, size ) {    
    if ( size == null ) {
        size = 100;
    }  
    widthOfLoaderImage = size;
    heightOfLoaderImage = size;
  
    // get positions for loader
    contentBox = $(boxContentLoading);
  
   tempLeft = findPosX( $(boxContentLoading) ) + ( ( contentBox.offsetWidth - widthOfLoaderImage ) / 2 );
   tempTop = findPosY( $(boxContentLoading) ) + ( ( contentBox.offsetHeight - heightOfLoaderImage ) / 2 ); 
  
   tempLeft = Math.floor( tempLeft );
   tempTop = Math.floor( tempTop );
 
   $('loaderImage').style.width = size+"px";
   $('loaderImage').style.height = size+"px";

   $('loader').style.left = tempLeft + "px";
   $('loader').style.top = tempTop + "px";
     
   $('loader').style.display = 'block';
}

/************************************** get positions of object ************************************/

function findPosX(obj) {
   var curleft = 0;
   if(obj.offsetParent) {
      while(obj.offsetParent) {
         curleft += obj.offsetLeft
         obj = obj.offsetParent;
      }
   }
   else if(obj.x) 
     curleft = obj.x;
   return curleft;
} 
function findPosY(obj) {
   var curtop = 0;
   if(obj.offsetParent) {
      while(obj.offsetParent) {
         curtop += obj.offsetTop
         obj = obj.offsetParent;
      }
   }
   else if(obj.y)
      curtop = obj.y;
   return curtop;
}

/************************************** Ads and Stats ************************************/

function dynamicImpression () { // generate impression without page loading (e.g. from Flash, AJAX)
	// IVW/AGOF impression:
	if (typeof IVW != 'undefined') {
		url = IVW+"?r="+escape(document.referrer)+"&d="+(Math.random()*100000);
		dynamicImpressionPixel = new Image();
		dynamicImpressionPixel.src = url;		
	}
	// Google Analytics impression:
	if (googleAnalyticsOn) {	   
	   //urchinTracker(window.location);
	   var pageTracker = _gat._getTracker("UA-822755-1");
       pageTracker._trackPageview();
	}
}

function sendMessage() { // called when chat text is sent
	dynamicImpression();
}

/************************************** Chat ************************************/

function printChat(username, password) { // output chat swf code, fix for IE
	document.write('<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" style="width: 100%; height: 100%;" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,19,0" WIDTH="634" HEIGHT="476" id="topcmm_123flashchat">');
	document.write('<PARAM NAME=movie VALUE="/static/community/chat/flashchat/123flashchat.swf?init_user='+username+'&init_password='+password+'">');
	document.write('<PARAM NAME=quality VALUE="high">');
	document.write('<PARAM NAME="menu" value="false">');
	document.write('<EMBED src="/static/community/chat/flashchat/123flashchat.swf?init_user='+username+'&init_password='+password+'" quality=high menu=false WIDTH="634" HEIGHT="476" style="width: 100%; height: 100%;" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" scale="noscale" name="topcmm_123flashchat" swLiveConnect="true"></EMBED>');
	document.write('</OBJECT>');
}

/************************************** PopUp / PopUnder ************************************/
function windowPopUnder(url, width, height, name )
{
    if( name == null ) {
         name = "popUp";
    }
    var options = "toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0";

    window.open(url, name, options + ',width=' + width + ',height=' + height);
}

function windowPopUnder(url, width, height, name )
{
    if( name == null ) {
         name = "popUnder";
    }
    var options = "toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0";

    var pU = window.open(url, name, options + ',width=' + width + ',height=' + height);
    pU.blur();
    window.focus();
}

/************************************** Helperfunctions ************************************/

function addTabs(count) {
  result = '';
  for (i = 0; i < count; i++)
    result = result + '\t';
  return result;
}

function print_r(object, level) {
  var result = '';  
  for (var value in object)
    if (typeof object[value] == "object")
      result = result + ' ' + addTabs(level) + value + "\n" + print_r(object[value], level + 1);
    else
      result = result + ' ' + addTabs(level) + value + ' = ' + object[value] + "\n";

  return result;
}