function getLayerObject(layerName)
{
    if (typeof layerName == 'object') {
		return layerName;
	}
	else if(document.layers) {
        return document.layers[layerName];
    }
    else {
		if (document.getElementById(layerName)) {
            return document.getElementById(layerName);
        }
    }
}


  /***********************/
 /* fixing right banner */
/***********************/

/********************************************************
* You may use this code for free on any web page provided that
* these comment lines and the following credit remain in the code.
* TopLeft Floating Div from http://www.javascript-fx.com
********************************************************/
 
function JSFX_FloatTopLeft()
{
    var startX = 890, startY = 0;
    var ns = (navigator.appName.indexOf("Netscape") != -1);
    var d = document;
    var px = document.layers ? "" : "px";
    function ml(id)
    {
        var
el=d.getElementById?d.getElementById(id):d.all?d.all[id]:d.layers[id];
        if(d.layers)el.style=el;
        el.sP=function(x,y){this.style.left=x+px;this.style.top=y+px;};
        el.x = startX; el.y = startY;
        return el;
    }
    window.stayTopLeft=function()
    {
        var pY = ns ? pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop
: document.body.scrollTop;
        ftlObj.y += (pY + startY - ftlObj.y)/8;
        ftlObj.sP(ftlObj.x, ftlObj.y);
        setTimeout("stayTopLeft()", 40);
    }
    ftlObj = ml("col3");
    stayTopLeft();
}


/*
  Funktionen für Kantone
*/

var kantonelist = 'gr,ti,vs,vd,ge,ne,fr,be,ju,so,bl,bs,lu,ag,ow,nw,ur,sz,zg,gl,zh,sh,tg,sg,ar,fl,ai,unbekannt';
var kantone     = new Array();
var kantonNames = new Array();

var kantone_lang    = new Array();
kantone_lang['de']  = new Array('ag','ai','ar','bl','bs','be','fl','fr','gl','gr','ju','lu','ne','nw','ow','sh','sz','so','sg','tg','ur','vs','zg','zh');
kantone_lang['fr']  = new Array('be','ge','ne','fr','vs','ju','vd');
kantone_lang['it']  = new Array('ti');

function SetKantoneByLang(lang) {
	var k = kantone_lang[lang];
	var kantoneAr = kantonelist.split(',');
	for (var i = 0; i < kantoneAr.length; i++) {
		UnSetKanton(kantoneAr[i]);
		for (var j = 0; j < k.length; j++) {
			if (kantoneAr[i] == k[j]) {
				SetKanton(kantoneAr[i]);
			}
		}
	}
}

function ShowKanton(kanton)
{
	if (kantone[kanton] != true) {
		object = getLayerObject('kanton_' + kanton);
		if (object)	{
			object.style.display = '';
		}
	}
}

function ShowKantonNames(kanton, NameArea)
{
	object = getLayerObject(NameArea);
	if (object && kantonNames)	{
		if (kanton == '') {
			object.innerHTML = '';
		}
		else if (kantonNames[kanton] != '') {
			object.innerHTML = kantonNames[kanton];
		}
	}
}

function HideKanton(kanton)
{
	if (kantone[kanton] != true) {
		object = getLayerObject('kanton_' + kanton);
		if (object)	{
			object.style.display = 'none';
		}
	}
}

function SetKanton(kanton)
{
	if (kantone[kanton] != true) {
		object = getLayerObject('kanton_' + kanton);
		if (object) {
			object.style.display = '';
		}
		object = getLayerObject('kanton_checkbox_' + kanton);
		if (object)	{
			object.checked = true;
		}
		kantone[kanton] = true;
		for (var kt in kantone) {
			if (kt != 'unbekannt') {
				if (!kantone[kt]) {
					return;
				}
			}
		}
		object = getLayerObject('kanton_checkbox_unbekannt');
		if (object)	{
			object.checked = true;
		}
		object = getLayerObject('divUnSetAllCantons');
		if (object)	{
			object.style.display = '';
		}
		object = getLayerObject('divSetAllCantons');
		if (object)	{
			object.style.display = 'none';
		}
	}
	else {
		UnSetKanton(kanton);
	}

}

function UnSetKanton(kanton)
{
	object = getLayerObject('kanton_' + kanton);
	if (object)	{
		object.style.display = 'none';
	}
	object = getLayerObject('kanton_checkbox_' + kanton);
	if (object)	{
		object.checked = false;
	}
	object = getLayerObject('kanton_checkbox_unbekannt');
	if (object)	{
		object.checked = false;
	}
	object = getLayerObject('divSetAllCantons');
	if (object)	{
		object.style.display = '';
	}
	object = getLayerObject('divUnSetAllCantons');
	if (object)	{
		object.style.display = 'none';
	}
	kantone[kanton] = false;
}

function UnSetAllKantone()
{
	var kantoneAr = kantonelist.split(',');
	for (var i = 0; i < kantoneAr.length; i++)	{
		UnSetKanton(kantoneAr[i]);
	}
}

function SetAllKantone()
{
	var kantoneAr = kantonelist.split(',');
	for (var i = 0; i < kantoneAr.length; i++) {
		UnSetKanton(kantoneAr[i]);
		SetKanton(kantoneAr[i]);
	}
}

function ReCheckKantone()
{
	var kantoneAr = kantonelist.split(',');

	for (var i = 0; i < kantoneAr.length; i++) {
		object = getLayerObject('kanton_checkbox_' + kantoneAr[i]);
		if (object) {
			if (object.checked) {
				SetKanton(kantoneAr[i]);
			}
			else {
				UnSetKanton(kantoneAr[i]);
			}
		}
	}
}




/************ BEGIN show Sublayers for "Stadtauswahl" *************/
function sfHover() {

    if (!document.body.currentStyle) return;
	if (document.getElementById("leftnav"))
	{
	    var sfEls = document.getElementById("leftnav").getElementsByTagName("li");
	    for (var i = 0; i < sfEls.length; i++)
	    {
	        sfEls[i].onmouseover = function()
	        {
	            if (this.lastChild.style)
	            {
	                this.lastChild.style.display = 'block';
	            }
	
				this.style.backgroundImage = "url('../images/ortswahl_hover.jpg')";
	        }
	
	        sfEls[i].onmouseout = function()
	        {
	            if (this.lastChild.style)
	            {
	                this.lastChild.style.display = 'none';
	            }
				this.style.backgroundImage = "none";
	        }
	    }
    }
}

window.onload = sfHover;
/************ END show Sublayers for "Stadtauswahl" *************/


function displaySearch(searchID, showState)
{
	// show all tables
	if (document.getElementById(searchID).style.display == 'block' || showState != '1'){
		document.getElementById(searchID).style.display = "none";
	} else {
		document.getElementById(searchID).style.display="block";
	}
}

function displaySearch(searchID) {
	// show all tables
	for (i = 1; i <= 3; i++) {
		document.getElementById("search"+i).style.display="block";
	}
	// hide the comitted id
	document.getElementById(searchID).style.display="none";

	if (searchID == "search2") {
		document.getElementById("search3").style.display="none";
	}
}

function transferValues(prefixFrom, prefixTo) {
	document.getElementById(prefixTo+'_search').value = document.getElementById(prefixFrom+'_search').value;
	document.getElementById(prefixTo+'_plz').value = document.getElementById(prefixFrom+'_plz').value;
	document.getElementById(prefixTo+'_radius').value = document.getElementById(prefixFrom+'_radius').value;
}

function displayTab(tabID, tabSet)
{
	if(tabSet == "undefined")
	{
		tabSet = "";
	}

	if(document.getElementById(tabSet+"contentTab"+tabID) == null)
	{
		alert(tabSet+"contentTab"+tabID+" does not exist!");
		return false;
	}

	// hide all tabs
	for (i = 1; i <= 2; i++) {
		if(document.getElementById(tabSet+"contentTab"+i) != null)
		{
			document.getElementById(tabSet+"contentTab"+i).style.display="none";
		}
		if(document.getElementById(tabSet+"containerFrameTabs") != null)
		{
			document.getElementById(tabSet+"containerFrameTabs").getElementsByTagName("li")[i-1].style.backgroundImage="url(images/bg_containerframe_inactive_tab"+i+".jpg)";
		}
	}
	// show the comitted id
	document.getElementById(tabSet+"contentTab"+tabID).style.display="block";
	//not yet done!
	//document.getElementById(tabSet+"containerFrameTabs").getElementsByTagName("li")[tabID-1].style.backgroundImage="url(images/bg_containerframe_active_tab"+tabID+".jpg)";
}

function showLayer(level)
{
	document.getElementById("ortswahl").getElementsByTagName("div")[level].style.display = "block";
}

function hideLayer(level)
{
	document.getElementById("ortswahl").getElementsByTagName("div")[level].style.display = "none";
}

/* show/hide googlemap or search result list */
function displaySearchTab(id)
{
	if(id == '1')
	{
		document.getElementById('tabContent1').style.display = 'block';
		document.getElementById('tabContent2').style.display = 'none';
		document.getElementById('tab1').className = 'containerFrameContentContentTab2';
		document.getElementById('tab2').className = 'containerFrameContentContentTab1';
	} else if(id == '2') {
		document.getElementById('tabContent1').style.display = 'none';
		document.getElementById('piazzamap').src = iframesource;
		document.getElementById('tabContent2').style.display = 'block';
		document.getElementById('tab1').className = 'containerFrameContentContentTab2Inact';
		document.getElementById('tab2').className = 'containerFrameContentContentTab1Act';
	}
	document.getElementById('search_searchTab').value = id;
}

/* show/hide search result tabs */
function showHideDetailSearchTabs(tabID)
{
	var tabCount = 3;

	for(i=1; i<=tabCount; i++)
	{
		if (tabID == i) {
			document.getElementById('resultTab'+i).style.display = 'block';
			document.getElementById('ltab'+i).className = 'resultListTab'+i;
		} else {
			document.getElementById('resultTab'+i).style.display = 'none';
			document.getElementById('ltab'+i).className = 'resultListTab'+i+'_inact';
			if (tabID != 1)
			{
				document.getElementById('ltab1').className = 'resultListTab1_first';
			}
		}
	}
}

function showAdDetailText()
{
	document.getElementById('adShortText').style.display = 'none';
	document.getElementById('adDetailText').style.display = 'block';
}

function showAdDetailText_Second()
{
	var more = document.getElementById('moreLink');
	var parentNode = more.parentNode;
	parentNode.removeChild(more);
	document.getElementById('adDetailText_Second').style.display='';
}

function showOwnerMsg()
{
	var messageToOwnerElement = document.getElementById('messageToOwner');
	if(messageToOwnerElement)
	{
		messageToOwnerElement.style.display = 'block';
	}
}

function showPlaces(show)
{
	if (show){
		document.getElementById('searchPlaces').style.display = 'block';
	} else {
		document.getElementById('searchPlaces').style.display = 'none';
	}
}

function checkMouseOverLayer()
{
	var elayer = document.getElementById('searchPlaces');

	elayer.onmouseout = function (event)
	{
		showPlaces(0);
	}
}

// Bookmarking Script

	var url="http://www.piazza.ch/";

function bookmark(title) {
		if (window.sidebar) { // firefox
              window.sidebar.addPanel(title, url,"");
        } else if( document.all ) { //MSIE
                window.external.AddFavorite( url, title);
        } else {
               alert("Sorry, your browser doesn't support this");
        }
}

// set Homepage function

function setStartPage(url)
{
	url.style.behavior = 'url(#default#homepage)';
	url.setHomePage('http://www.piazza.ch');

	//this.style.behavior='url(#default#homepage)';
	//this.setHomePage(location.href);
		/*
		if (window.external)
		{
   			this.style.behavior='url(#default#homepage)';
    		this.setHomePage(location.href);
		}*/
}

var newLine = 1;
var nl = 0;

function calcCharLeft(target, counter, maxlenght, lineBreak)
{
	var mL = maxlenght;
	var content = target.value;
	// add space at the end, ie only accept a space when a sign follow
	content = content + " ";
	nl = content.split(/\n/).length - 1;
	newLine = nl * 49;

	if ((content.length + newLine) > mL)
	{
		target.value = target.value.substring(0, (mL-newLine));
		charleft = 0;
	} else {
		if (lineBreak) {
			charleft = mL - target.value.length - newLine;
		} else {
			charleft = mL - target.value.length;
		}
	}
	// remove the space at the end
	//target.value = target.value.substring(0, target.value.length-1);
	document.getElementById(counter).value = charleft;
}

function imgClickAble(img)
{
	if(img.style.cursor == 'pointer')
	{
		img.style.cursor = 'default';
		img.style.borderStyle = 'none';
		img.style.margin = '1px';
	}
	else
	{
		img.style.cursor = 'pointer';
		img.style.margin = '0px';
		img.style.border = '1px solid #fff';
	}
}

var cellHighlightHover = 'highlightHover';
var rowNoHighlightClass ='noHighlightHover';
function addTableHighlighter(className)
{
	var tableRows;
	var tables = document.getElementsByTagName('table');
	for (var i = 0; i < tables.length; i++)
	{
		if (!Element.hasClassName(tables[i], className))
		{
			continue;
		}

		// add the onclick for every row
		tableRows = tables[i].getElementsByTagName('tr');
		for (var j = 0; j < tableRows.length; j++)
		{
			if (Element.hasClassName(tableRows[j], rowNoHighlightClass))
			{
				continue;
			}
			tableRows[j].onmouseover = addRowClassHandler;
			tableRows[j].onmouseout = removeRowClassHandler;
		}
	}
}

function addRowClassHandler(evt)
{
	if (!evt) { evt = window.event; }
	var source = Event.element(evt);

	if (source.nodeName == 'TD')
	{
		source = source.parentNode;
	}

	var tdElements = source.getElementsByTagName('td');

	for (var i = 0; i < tdElements.length; i++)
	{
		Element.addClassName(tdElements[i], cellHighlightHover);
	}
}

function removeRowClassHandler(evt)
{
	if (!evt) { evt = window.event; }
	var source = Event.element(evt);

	if (source.nodeName == 'TD')
	{
		source = source.parentNode;
	}

	var tdElements = source.getElementsByTagName('td');

	for (var i = 0; i < tdElements.length; i++)
	{
		Element.removeClassName(tdElements[i], cellHighlightHover);
	}
}

var google_adnum = 0;
var google_ads_searchList = new Array();
var google_adnum_searchList = 0;
var currLang;

function getLanguage(lang)
{
	if (lang != 'fr') {
		currLang = 'Google-Anzeige';
	} else {
		currLang = 'Annonce Google';
	}
	return currLang;
}

function getLanguage_plural(lang)
{
	if (lang != 'fr') {
		currLang = 'Google-Anzeigen';
	} else {
		currLang = 'Annonces Google';
	}
	return currLang;
}






/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 * Google ads functionalities
 */
var ads = [];
var afs_ads = [];
var afc_ads = [];

var ad_request_done = false;

var all_placeholders_loaded = false;
var already_pushed = false;

// gets afs keyword from url
function GetParam(name)
{
  var match = new RegExp(name + "=(.+)[&]","i").exec(location.search);
  if (match==null)
  {
      match = new RegExp(name + "=(.+)","i").exec(location.search);
  }

  if (match==null)
  {
      return null;
  }

  match = match + "";
  result = match.split(",");
  return result[1];
}

// executet if ad request done
function google_ad_request_done(google_ads) 
{
	//console.debug('google_ad_request_done, adscount: ' + google_ads.length);
	for(var i=0;i<google_ads.length;i++)
	{
		afc_ads.push(google_ads[i]);
	}
	ad_request_done = true;
	push_ads_to_placeholder();
}

function google_afs_request_done(google_ads) 
{
	//console.debug('google_afs_request_done, adscount: ' + google_ads.length);
	for(var i=0;i<google_ads.length;i++)
	{
		afs_ads.push(google_ads[i]);
	}
	ad_request_done = true;
}

// workaround buggy ie behaviour
function getElementsByName_iefix(tag, name) {
     
     var elem = document.getElementsByTagName(tag);
     var arr = new Array();
     for(i = 0,iarr = 0; i < elem.length; i++) {
          att = elem[i].getAttribute("name");
          if(att == name) {
               arr[iarr] = elem[i];
               iarr++;
          }
     }
     return arr;
}

function getLanguage(lang)
{
	if (lang != 'fr') {
		currLang = 'Google-Anzeige';
	} else {
		currLang = 'Annonce Google';
	}
	return currLang;
}

// push ads to placeholder
push_ads_to_placeholder = function()
{
	// check if body is loaded and ads are not pushed yet
	if(ad_request_done == true && all_placeholders_loaded == true)
	{
		// fill ads with afs + afc data
		for(var i=0;i<afs_ads.length;i++)
		{
			ads[i]=afs_ads[i];
		}
		for(var i=afs_ads.length;i<afc_ads.length;i++)
		{
			ads[i]=afc_ads[i-afs_ads.length];	
		}
		
		// first 7 ads goes to sky
		targetElement = document.getElementById('googleAds');
		display_ads(targetElement);
		
		// all others goes to placeholders in searchlist, 
		// check if there are any ads to push

		placeholders = getElementsByName_iefix('tr','google_ad_placeholder');
		
		for(var i = 0; i < placeholders.length; i++)
		{
			if(typeof(ads[i]) == 'object')
			{
				push_ad(placeholders[i], ads[i]);
			}
			else
			{
				placeholders[i].style.display = 'none';
			}
		}
	}
}

// this displays sky ads on left side
function display_ads(targetElement)
{
	// show at least 4 elements in the push ad list
	// but not more than 7 ads in the sky ad list
	var offset_skyads = getElementsByName_iefix('tr','google_ad_placeholder').length;
	var count_skyads = Math.min(Math.max(ads.length - offset_skyads, 0), 6);

	// don't do anything if there are no sky ads
	if (count_skyads == 0) return;
	
	if(typeof(google_info) != 'undefined')
	{
		feedback_url = google_info.feedback_url;
	}
	else
	{
		feedback_url = 'href="http://services.google.com/feedback/online_hws_feedback';
	}
		
	s = '<a target="_blank" href=\"' + feedback_url + '\"style="color:000000">' + getLanguage_plural(PAGELANG) + '</a><br>';
	for(var i = 0; i < count_skyads; i++)
	{
		var ad = ads[offset_skyads + i];
		line3 = typeof(ad.line3)=='undefined'? '' : ad.line3 + '<br>';
		
		s += '<br><a target="_blank" href="' + 
		ad.url + '" onmouseout="window.status=\'\'" title="' +
		ad.visible_url + '" style="text-decoration:none"><span class="google_ads_title"><b>' + 
		ad.line1 + '</b></span></a><br><span class="google_ads_text">' +
		ad.line2 + '<br>' +
		line3 + '</span><div class="google_ads_link"><a target="_blank" href="' + 
		ad.url + '" onmouseout="window.status=\'\'" title="' +
		ad.visible_url + '" style="color:black; text-decoration: none;">' +
		ad.visible_url + '</div></a><br>';
	}
	if(targetElement)
	{
		targetElement.innerHTML = s;
	}
}

// pushes a single ad to a placeholder
function push_ad(obj_placeholder,obj_ad)
{
	// fill each cell, because ie doesn't support innerHTML on tr

	if(typeof(google_info) != 'undefined')
	{
		feedback_url = google_info.feedback_url;
	}
	else
	{
		feedback_url = 'href="http://services.google.com/feedback/online_hws_feedback';
	}
	
	s1 = '<a href=\"' + 
		feedback_url + '\" style="text-decoration:none;color:black;" target="_blank">' + 
		getLanguage(PAGELANG) + '</a>';
	s2 = '<a target="_blank" href="' + 
		obj_ad.url + '" onmouseout="window.status=\'\'" onmouseover="window.status=\'go to ' +
		obj_ad.visible_url + '\'">' +
		obj_ad.line1 + '</a><br>' +
		obj_ad.line2;
	if (obj_ad.line3 != undefined)
	{
		s2 += '&nbsp;' + obj_ad.line3;
	}
	s2 += '<br><a target="_blank" href="' + 
		obj_ad.url + '" onmouseout="window.status=\'\'" onmouseover="window.status=\'go to ' +
		obj_ad.visible_url + '\'" style="text-decoration:none;color:black;">' +
		obj_ad.visible_url + '</a>';
		
	if(typeof(obj_placeholder) != 'undefined')
	{
		obj_placeholder.getElementsByTagName('td')[0].innerHTML = s1;
		obj_placeholder.getElementsByTagName('td')[1].innerHTML = s2;
	}
}
/*
 * End of Google ads functionalities
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */









bodyLoaded = function()
{
	all_placeholders_loaded = true;	
	push_ads_to_placeholder();
	startTickers('.tickerarea', 1);
}

function is4digitValue(value)
{
	var numberFormat = /^\d{4}$/;
	if (value.length == 4)
	{
		if (numberFormat.test(value))
		{
			return true;
		}
	}
	return false;
}

/* hover on search results */
function switchClasses(obj, newClass)
{
	obj.oldClass = obj.className;
	obj.className = newClass;
}
function switchClassesBack(obj)
{
	obj.className = obj.oldClass;
}

/* highlight function assign a specific class to searched strings in the title and description on the detail page of an ad*/
function highlightSearchKeywords(searchKeywordsString,id)
{
	var e=document.getElementById(id);
	if(!e) return false;
	var highlightableText=e.innerHTML;
	
	// this are two arbitrarly chars chosen to delimit the portion of the string that has to be highlighted
	// we use them because if we would insert the html tags directy after each keyword iteration
	// there is the danger that the html tags will be broken by successive replacements
	var beginSymbol=String.fromCharCode(17);
	var endSymbol=String.fromCharCode(18);
	
	var searchKeywordsArray = searchKeywordsString.split(' ');
	for(var k=0;k<searchKeywordsArray.length;k++)
	{
		searchKeyword = searchKeywordsArray[k];
		
		if(searchKeyword=='') continue;
	
		// case insensitivity search of string
		var re = new RegExp(searchKeyword,"gi");
		
		var uniqueFoundStrings = new Array();
		var foundStrings = highlightableText.match(re);
		if (foundStrings)
		{
			for(var i=0;i<foundStrings.length;i++)
			{
				var alreadyFoundString=false;
				for(var j=0;j<uniqueFoundStrings.length;j++)
				{
					if(uniqueFoundStrings[j]==foundStrings[i])
					{
						alreadyFoundString=true;
					}
				}
				if(!alreadyFoundString)
				{
					uniqueFoundStrings.push(foundStrings[i]);
				}
			}
		}
		
		if(uniqueFoundStrings)
		{			
			for(var i=0;i<uniqueFoundStrings.length;i++)
			{
				var re = new RegExp(uniqueFoundStrings[i]);
				var pos = highlightableText.search(re);
		
				// if the string appears at list one time 
				if(pos != -1)
				{
					// extract the first string and highlight it
					var str=highlightableText.substr(pos,searchKeyword.length);
					
					var highlightedKeyword=beginSymbol+str+endSymbol;
		
					// replace all the strings
		        	var re2 = new RegExp(str,"g");
					highlightableText=highlightableText.replace(re2, highlightedKeyword);
				}
			}
		}
	}

	// final replacement of dummy begin and end symbols
	var regBegin = new RegExp(beginSymbol,"g");
	highlightableText=highlightableText.replace(regBegin, '<span class=\"highlightedWord\">');
	var regEnd = new RegExp(endSymbol,"g");
	highlightableText=highlightableText.replace(regEnd, '</span>');
	
	e.innerHTML=highlightableText;
}



/* tooltip functions */
function findNextDIV(DIV) {
	do {
		if(DIV) DIV = DIV.nextSibling;
		if(DIV && DIV.nodeName == "DIV") return DIV;
	}
	while(DIV);
	return false;
}

function showTooltip(obj) {
	var DIV = findNextDIV(obj.firstChild);
	var pos = Position.cumulativeOffset(obj);
	DIV.style.top = pos[1] + 'px';
	DIV.style.left = pos[0] + 'px';
	DIV.style.display = "block";
}

function hideTooltip(obj) {
	var DIV = findNextDIV(obj.firstChild);
	DIV.style.display = "none";
}

function hideTooltipLayerTwo(event, obj) {
	if(!event) {
		event = window.event;
	}
	obj.parentNode.style.display = "none";
	event.cancelBubble = true;
}

function openHelp(url) {
	var h = 600;
	var w = 800;
	myWindow = window.open('/' + PAGELANG + '/helpcenter.php?section=' + url, "Helpcenter", "width=" + w + ",height=" + h + ",left=100,top=200,scrollbars=yes");
	myWindow.focus();
}


/* newad functions */
function showOnRadio(show, hide)
{
	if(show){var showElement = document.getElementById(show);}
	if(hide){var hideElement = document.getElementById(hide);}
	
	if(showElement)
	{
		showElement.style.display = "";
	}
	if(hideElement)
	{
		hideElement.style.display = "none";
	}
}
	
function showOnCheckbox(e,id) {
	var getbyid = document.getElementById(id).style;
	if(e.checked)
	{
		getbyid.display = "block";
	}
	else
	{
		getbyid.display = "none";
	}
}

function updateCity(defaultCity)
{
	var plz = $('plz_form').value;
	
	if(is4digitValue(plz))
	{
		var url='/city_autocomplete.php?plz='+encodeURIComponent(plz);
		
		new Ajax.Request(url, {
		  method: 'get',
		  onSuccess: function(transport)
		  {
		    $('city_dd').options.length = 0;
		  	var jsonData = transport.responseText.evalJSON();
			jsonData.each(function(s)
			{
				var opt = document.createElement('option');
				opt.text = s;
				opt.value = s;
				try{$('city_dd').add(opt, null);}catch(ex){$('city_dd').add(opt);}
			});
			//$('city_dd').disabled = jsonData.length==1 ? true : false;
			
			if(defaultCity)
			{
				var availableOptions = $('city_dd').options;
				selectedIndex = 0;
				for(var i=0;i<availableOptions.length;i++)
				{
					if(availableOptions[i].value==defaultCity)
					{
						selectedIndex = i;
					}
				}
				$('city_dd').selectedIndex = selectedIndex;
			}	
			
			if($('city_element')) {
				$('city_element').update($('city_dd').value);
			}
		
			if($('plz_element')) {
				$('plz_element').update($('plz_form').value);
			}
		  },
		  encoding: 'UTF-8'
		});
	}
	else
	{
		$('city_dd').options.length = 0;
		//$('city_dd').disabled = true;
		if($('city_element')) {
			$('city_element').update('');
		}
		
		if($('plz_element')) {
			$('plz_element').update($('plz_form').value);
		}
	}
}

startTickers = function(selector, speed)
{
	var tickers = Element.select(document, selector);
	for(var i=0;i<tickers.length;i++)
	{
		if(!tickers[i].id)
		{
			tickers[i].id = 'ticker_' + Math.round(Math.random() * 1000);
			var text = tickers[i].getElementsByTagName('div')[0];
			text.appendChild(createTickerSpacerImage(tickers[i].getWidth()));
			tickerTick(tickers[i].id, tickers[i].scrollWidth, speed);
		}
	}
}

createTickerSpacerImage = function(width)
{
	var img = document.createElement('img');
	img.src="/images/tp.gif";
	img.height = '0';
	img.width = width;
	img.style.visibility = 'hidden';
	return img;
}

tickerTick = function(ticker, width, speed)
{
	var ticker = $(ticker);
	if(!ticker.paused) ticker.scrollLeft += speed;
	if(ticker.scrollLeft >= ticker.scrollWidth - ticker.offsetWidth)
	{
		var text = ticker.getElementsByTagName('div')[0];
		if(text.getElementsByTagName('img').length < 2)
		{
			text.insertBefore(createTickerSpacerImage(ticker.getWidth()), text.firstChild);
		}
		ticker.scrollLeft = 0;
	}
		
	window.setTimeout("tickerTick('" + ticker.id + "', " + width + ", " + speed + ")", 30);
}


/*
 *		newad step 2
 */

function updateAttributes(catLevel, callback, showPriceInfo)
{
	var addParams = '';
	var attributes = $$('.dataclassAttribute');
	if (attributes.length)
	{
		for (var i=0; i<attributes.length; i++)
		{
			var input = attributes[i];
			addParams += '&'+input.name+'='+input.value;
		}
	}
	updateCategories(catLevel, addParams, callback, showPriceInfo);
}

function resetCarForm()
{
	updateAttributes(1);
}

function selectModel(typeId, catLevel)
{
	var form = $('ad_form_step2');
	var params = [{'key':'typeId', 'value': typeId}];
	params.each(function(element) {
		var input = document.createElement('input');
		input.name = element.key;
		input.value = element.value;
		input.type = 'hidden';
		form.appendChild(input);
	});
	form.submit();
}

function sortCarList(element, selector)
{
	element = $(element);
	var options = {};
	
	if(element.hasClassName('sortAsc'))
	{
		removeClasses(element);
		element.addClassName('sortDesc');
		options = {reverse: true};
	}
	else
	{
		removeClasses(element);
		element.addClassName('sortAsc');
		options = {reverse: false};
	}
	$(element.parentNode.parentNode.parentNode.tBodies[0]).sortBySelector(selector, options);
}

function removeClasses(element)
{
	var trA = element.parentNode.parentNode.parentNode.tHead.childElements();
	var thA = trA[0].childElements();
	thA.each(function(th){
		th.removeClassName('sortAsc');
		th.removeClassName('sortDesc');
	});
}

var carListClose = true;
function loadCarList(t)
{
	fb.start({ 
		href: 'strURL', 
		rev: "onItemEnd:`if(carListClose){updateAttributes(1);}` width:max controlPos:tr infoPos:tl",
		title: floatBoxTitle,
		html: $('carListForLayer').innerHTML
	});
}


function updateCategories(changeLevel, addParams, callback, showPrice, hideText)
{
	var parameters = '';
	var subcategories = $$('select.category_selection');
	subcategories.each(function(subcategory){
		// redirect if panini id
		if (subcategory.options[subcategory.selectedIndex].value == '99214' || subcategory.options[subcategory.selectedIndex].value == '199214')
		{
			location.href = "ad_edit_panini.php";
			return true;
		}
		if (subcategory.options[subcategory.selectedIndex].value == '99034')
		{
			showPrice = true;
			hideText = true;
		}

		parameters += "&" + Form.Element.serialize(subcategory);
	});
	if (addParams != undefined)
	{
		parameters += addParams;
	}
	parameters += "&session_item=" + session_ad_id;
	if(typeof callback == 'function')
	{
		new Ajax.Updater("subcategories", "edit_categories.php", { parameters: parameters, onComplete: callback });
	}
	else
	{
		new Ajax.Updater("subcategories", "edit_categories.php", { parameters: parameters});
	}
	showPriceInfo(showPrice);
	hideTextInfo(hideText);
}

function showPriceInfo(showPriceInfo)
{
	if(!$('evaluationEurotax'))
	{
		return;
	}
	if(showPriceInfo === true)
	{
		$('evaluationEurotax').style.display = '';
	}
	else
	{
		$('evaluationEurotax').style.display = 'none';
	}
}

function hideTextInfo(hideText)
{
	if(!$('textInfoHideable'))
	{
		return;
	}
	if(hideText === true)
	{
		$('textInfoHideable').style.display = 'none';
	}
	else
	{
		$('textInfoHideable').style.display = '';
	}
}

/**
 * toggles tabs in car edit mask
 * 
 * @param object active - current element
 * @return false
 */
function toggleEquipment(active)
{
	// get parent ul
	obj = $(active);
	while(obj.nodeName != 'UL')
	{
		obj = $(obj.parentNode);
	}
	// get all lis from ul
	listitems = obj.getElementsByTagName('li');
	// set all inactiv
	for(var i=0;i<listitems.length;i++)
	{
		document.getElementById($(listitems[i]).getElementsByTagName('a')[0].id+'_content').style.display = 'none';
		$(listitems[i].getElementsByTagName('a')[0]).removeClassName('active');
	}
	// set active
	$(active).addClassName('active');
	document.getElementById(active.id+'_content').style.display = 'block';
	return false;
}

/**
 * toggle equipmentlist
 * @author Philip Lehmann
 * @param object link
 * @param string element
 * @return boolean
 */
function toggleEquipmentDetail(link, element)
{
	$(element).toggle();
	$(element+"All").toggle();
	return false;
}

/**
 * extend prototype element to sort table over ajax requeset
 * @author Philip Lehmann
 */
Element.addMethods({
	sortBySelector: function(element, selector) {
		element = $(element);
		element.sort_selector = selector;
		element.sort_options = Object.extend({
			reverse: false,
			url: '/sort.php'
		}, arguments[2] || {});
		
		var params = '';
		var index = 0;
		
		var childs = element.childElements();
		var tdA = childs[0].childElements();
		for(var j=0; j<tdA.length; j++)
		{
			if(tdA[j].hasClassName(element.sort_selector))
			{
				index = j;
				break;
			}
		}
		
		for(var i=0; i<childs.length; i++)
		{
			params = params + 'param[' + i + '][0]=' + encodeURIComponent(childs[i].className) + '&';
			var x = childs[i].childElements();
			params = params + 'param[' + i + '][1]=' + encodeURIComponent(x[index].getText()) + '&';
		}
		
		if(element.sort_options.reverse == true)
		{
			params = params + 'sort=DESC&';
		}
		else
		{
			params = params + 'sort=ASC&';
		}
		
		
		
		var ajax = new Ajax.Request(element.sort_options.url, {
			method: 'post',
			parameters: params,
			onSuccess: function(t) {
				var array = t.responseText.evalJSON();
				var el = childs[0];
				for(var i=childs.length-1; i>=0; i--)
				{
					var row = element.select('.' + array[i][0]);
					element.insertBefore(row[0], el);
					el = row[0];
				}
			}
		});
		return element;
	},
	getText: function(element) {
		return element.innerHTML;
	},
	setText: function(element, value) {
		element.innerHTML = value;
	}
});

/**
 * toggle car searchform
 * @author Philip Lehmann
 * @param string form1
 * @param string form2
 * @return void
 */
function toggleSimpleFullSearch(form1, form2)
{
	$(form1).toggle();
	$(form2).toggle();
	if($('car_searchType').value == '')
	{
		$('car_searchType').value = 'full';
	}
	else
	{
		$('car_searchType').value = '';
	}
}

/**
 * reload searchform with new parameters
 * @author Philip Lehmann
 * @param DomObject obj
 * @return void
 */
function loadCarSearchForm(obj,file)
{
	var params = '';
	if($(obj))
	{
		obj = $(obj);
		params = $(obj.form).serialize()
	}
	
	new Ajax.Updater("detailsuche", file, { method: 'get', parameters: params, evalScripts: true });
}
function loadCarSearchFormAutochannel(obj,file)
{
	var params = '';
	if($(obj))
	{
		obj = $(obj);
		params = $(obj.form).serialize()
	}
	
	new Ajax.Updater("min_content_S", file, { method: 'get', parameters: params, evalScripts: true });
}

/**
 * popup function
 * @param Link url
 * @return false
 */
function popitup(url)
{
	newwindow=window.open(url,'name','height=570,width=620,status=yes,scrollbars=yes,resizable=yes');
	if (window.focus)
	{
		newwindow.focus();
	}
	return false;
}

/**
 * 
 * @param form
 * @return void
 */
function createCar(errorMessage, title)
{
	var form = $('ad_form_step2');
	
	var keys = ["autoSearchBrand", "autoSearchSeries", "autoSearchModel"];
	var error = false;
	$(keys).each(function(val) {
		if(form.elements[val] && form.elements[val].value != 'other')
		{
			return;
		}
		else if(form.elements[val + 'Other'] && form.elements[val + 'Other'].value.length > 0)
		{
			return;
		}
		else
		{
			error = true;
		}
	});
	if(error)
	{
		alert(errorMessage);
		return false;
	}
	
	var ajax = new Ajax.Request("/ajax/ajax.eurotaxOtherCarForm.php", {
		method: 'post',
		parameters: form.serialize(),
		onSuccess: function(t) {
			fb.start({ 
				href: '/ajax/ajax.eurotaxOtherCarForm.php', 
				rev: "width:440px height:545px controlPos:tr infoPos:tl scrolling:no",
				title: title,
				html: t.responseText
			});
		}
	});
	return false;
}

function sendManualCar()
{
	var form = $('ad_form_step2');
	var attributes = $$('.dataField');
	attributes.each(function(element) {
		var value = '';
		if(element.nodeName == 'SELECT')
		{
			value = element.options[element.selectedIndex].value;
		}
		else
		{
			value = element.value;
		}
		var input = document.createElement('input');
		input.name = element.name;
		input.value = value;
		input.type = 'hidden';
		form.appendChild(input);
	});
	form.submit();
}

/**
 * create url for smile.direct with form values
 * @param object form
 * @param string wrongDateError
 * @return boolean
 */
function sendSmileDirect(form, wrongDateError)
{
	var day = form.elements['day'];
	var month = form.elements['month'];
	var year = form.elements['year'];
	
	if(day.value.length > 0 && month.value.length > 0 && year.value.length == 4)
	{
		var dayValue = (day.value.length == 1) ? '0' + day.value : day.value;
		var monthValue = (month.value.length == 1) ? '0' + month.value : month.value;
		var yearValue = year.value;
		
		var brand = form.elements['brand'].value;
		var type = form.elements['type'].value;
		var inv  = form.elements['inv'].value;
		var url = form.action;
		url = url.replace(/brandreplace/, brand);
		url = url.replace(/seriereplace/, type);
		url = url.replace(/invreplace/, inv);
		url = url.replace(/datereplace/, dayValue + monthValue + yearValue);
		window.open(url);
	}
	else
	{
		alert(wrongDateError);
	}
	
	return false;
}

/**
 * load car informations for smile direct
 * @param object obj
 * @param string target
 * @return void
 */
function ajaxLoadTypes(obj, target)
{
	target = $(target);
	var option = $(obj.options[obj.selectedIndex]);
	var params = 'brand=' + option.title;
	var ajax = new Ajax.Request("/ajax/ajax.eurotaxCarTypes.php", {
		method: 'get',
		parameters: params,
		onSuccess: function(t) {
			var array = t.responseText.evalJSON();
			
			while(0<target.options.length)
			{
				target.removeChild(target.options[0]);
			}
			for(var i=0; i < array.length; i++)
			{
				var newOption = document.createElement('option');
				newOption.text = array[i];
				newOption.value = array[i];
				target.appendChild(newOption);
			}
		}
	});
}

function saveTransmissionSelection(select, saveId)
{
	var values = select.value;
	values = values.split(',');
	
	var checkboxes = $(saveId).select('input');
	for(var i = 0; i < checkboxes.length; i++)
	{
		checkboxes[i].checked = false;
	}
	
	for(var i = 0; i < values.length; i++)
	{
		for(var z = 0; z < checkboxes.length; z++)
		{
			if(checkboxes[z].value == values[i])
			{
				checkboxes[z].checked = true;
			}
		}
	}		
}