/* **********************************************************
 * author:	Andreas Rayo Kniep                              *
 * ________________________________________________________ *
 *                                                          *
 * Main Javscript-Resource                                  *
 * **********************************************************/


function mirage(el_id) {		
	el = document.getElementById(el_id);
	if(el.style.display == 'none')
		el.style.display = 'block';
	else
		el.style.display = 'none';
}


function chill()
{
	//chilling.
} //chill()
function loll()
{
	//lolling.
} //loll()


function accessForm( formName )
{
	if ((! formName) ||
		(formName == null) ||
		(formName == "") )
		formName = "mainform";
	
	myFormObj = null;
	
	// accessing form by Id
	if (document)
		myFormObj = document.getElementById( formName );
	
	// accessing form over forms-collection
	if ((! myFormObj) || (myFormObj == null))
	{
		if ((document) && (document.forms) && (document.forms[ formName ]))
			myFormObj = document.forms[ formName ];
		if ((document) && (document[ formName ]))
			myFormObj = document[ formName ];
	} //if
	
	// accessing form directly
	if ((! myFormObj) || (myFormObj == null))
	{
		myFormObj = formName;
	} //if
	
	return myFormObj;
} //accessForm()

function poster( formName )
{
	myFormObj = accessForm( formName );
	
	if (myFormObj == null)
		return;
	
	myFormObj.submit();
} //poster()

function changeAction( formName, newAction )
{
	myFormObj = accessForm( formName );
	
	if (myFormObj == null)
		return;
	
	myFormObj.action = newAction;
} //changeAction()

function changeInteraction( formName, newInteraction )
{
	myFormObj = accessForm( formName );
	
	if (myFormObj == null)
		return;
	
	myFormObj.interaction.value = newInteraction;
} //changeInteraction()

function changeCommand( formName, newCommand )
{
	myFormObj = accessForm( formName );
	
	if (myFormObj == null)
		return;
	
	myFormObj.command.value = newCommand;
} //changeCommand)

function changeCommandAndPost( formName, newCommand, newCommand2 )
{
	myFormObj = accessForm( formName );
	
	if (myFormObj == null)
		return;
	
	myFormObj.command.value = newCommand;
	
	if ((newCommand2) &&
		(newCommand2 != null) &&
		(newCommand2 != "") )
		myFormObj.command2.value = newCommand2;
	
	myFormObj.submit();
	
	// same as (partly)
	/*
	changeCommand( formName, newCommand );
	poster( formName )
	*/
} //changeCommandAndPost()

function changeActionAndPost( formName, newAction, newInteraction )
{
	myFormObj = accessForm( formName );
	
	if (myFormObj == null)
		return;
	
	myFormObj.action.value = newAction;
	
	if ((newInteraction) &&
		(newInteraction != null) &&
		(newInteraction != "") )
		myFormObj.interaction.value = newInteraction;
	
	myFormObj.submit();
} //changeActionAndPost()

function setRadio( formName, valueName )
{
	myFormObj = accessForm( formName );
	
	if (myFormObj == null)
		return;
	
	var radioObj = myFormObj.radio;
	
	if (radioObj == null)
		return;
	
	document.getElementById("radio2").checked = true;
	return;
	for (var i = 0; i < radioObj.length; i++)
	{
		if (radioObj[i].value == valueName)
			radioObj[i].checked = true;
	} //for(i)
} //setRadio()
function buttonOver( button, type, width )
{
	button.style.backgroundImage = 'url(/pics/button_' + width + '_hover.gif)';
} //buttonOver()
function buttonOut( button, type, width )
{
	button.style.backgroundImage = 'url(/pics/button_' + width + '.gif)';
} //buttonOut()

// since 2008-01-11
// @author some Internet-friend ;)
function str_replace(search, replace, subject)
{
    return subject.split(search).join(replace);
} //str_replace()

// since 2008-01-11
// changed on 2008-01-14
// @author Rayo
// please note: this function has an error, e.g. rounding (512.15, 1) to (512.1), but expected is 512.2 ...
	// the latter is a Javascript-float-numbers-problem ...  I'm sorry!
function round(value, precision)
{
	if ((precision < 0) || (precision > 14))
		return value;
	
	
	var factor			= Math.pow(10,precision);
	
	var roundedValue	= Math.round( value * factor )
							/ factor;
		
	
	return roundedValue;
	
	
	
	/*
	var valueInteger	= Math.round( Math.floor( value ) );
	var valueDecimals	= value - valueInteger;
	
	
	var factor			= Math.pow(10,precision);
	
	var roundedDecimals	= Math.round( valueDecimals * factor )
							/ factor;
		
	
	return valueInteger + roundedDecimals;
	*/
} //round()

// by Rayo
// Note: when calling you may add a third parameter like $strict
// if the third parameter is set to true the function will act like the PHP-function in_array being called with $strict=true
function in_array(item, arr)
{
	if (   (3 <= arguments.length)
		&& (arguments[2])   )
	{
		var strict = true;
	} else {
		var strict = false;
	} //if-else
	
	
	
	// checking each element
	for (var p = 0; p < arr.length; p++)
	{
		if (   (strict)
			&& (item === arr[p])   )
		{
			return true;
		} //if
		
		if (   (! strict)
			&& (item == arr[p])   )
		{
			return true;
		} //if
	} //for(p)
	
	return false;
} //in_array()

// copied from
	// http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_function_exists/
function function_exists( function_name )
{
	// http://kevin.vanzonneveld.net
	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Steve Clay
	// +   improved by: Legaev Andrey
	// *     example 1: function_exists('isFinite');
	// *     returns 1: true
	
	
	if (typeof function_name == 'string')
		return (typeof window[function_name] == 'function');
	else
		return (function_name instanceof Function);
} //function_exists()

function filterPLD( newValue, newSelectedIndex )
{
	if (function_exists( "filterTables" ))
	{
		filterTables( newSelectedIndex );
	
	}
	else if (function_exists( "filterTextlinks" ))
	{
		filterTextlinks( newValue );
		
		
		var tlf_selector;
		
		tlf_selector	= document.getElementById( "tlf_1" );
		if (null != tlf_selector)
			tlf_selector.selectedIndex = newSelectedIndex;
		
		tlf_selector	= document.getElementById( "tlf_2" );
		if (null != tlf_selector)
			tlf_selector.selectedIndex = newSelectedIndex;
	}
	else
	{
		xajax_filter_by_pld( newValue );
	}
} //filterPLD()

function changePic( imgObj, newSrc )
{
	imgObj.src = "/pics/" + newSrc;
} //changePic()

function toggleBranch( elementID )
{
	if (document.getElementById("branch_" + elementID).style.display == "none")
	{
		document.getElementById("branch_" + elementID).style.display = "block";
		document.getElementById("img_" + elementID).src = "/pics/branch_opened.gif";
		
		if (field == document.getElementById("saveOpenBranches"))
		{
			field.value += elementID + "#";
		} //if
		
		
	} else {
		document.getElementById("branch_" + elementID).style.display = "none";
		document.getElementById("img_" + elementID).src = "/pics/branch_closed.gif";
		
		if (field == document.getElementById("saveOpenBranches"))
		{
			field.value =	substr(field.value, 0, strpos(elementID + "#")) +
							substr(field.value, strpos(elementID + "#") + strlen(elementID + "#"));
		} //if
		
	} //if-else
} //toggleBranch()

// deliver the HTML-ID of the HTML-element to toggle
// toggles a DIV or any other HTML-element that may define the CSS-attribute "display"
// returns the new status of style.display
function toggleDiv( elementID )
{
	var element = document.getElementById(elementID);
	
	if ("none" == element.style.display)
		var newStatus = "block";
	else
		var newStatus = "none";
	
	
	element.style.display = newStatus;
	
	return newStatus;
} //toggleDiv()

// deliver an adspace's idv11 that the adspace-history (the books) has been created for!
// returns nothing
function toggleDivNoReturn( idv11 )
{
	var element = document.getElementById("history_" + idv11);
	
	if ("none" == element.style.display)
		var newStatus = "block";
	else 
		var newStatus = "none";
	
	
	element.style.display = newStatus;
} //toggleDivNoReturn()


function showToolTip( tip )
{
	document.getElementById('tooltip').style.display = 'block';
	document.getElementById('tooltip_text').firstChild.nodeValue = tip;
} //showToolTip()

function makeHeadlines()
{
	var elements = getElementsBySelector( "div.content_headline" );
	
	for (var i = 0; i < elements.length; i++)
	{
		var headline2 = elements[i].duplicate();

		headline2.className = "content_headline";
		headline2.style.left = "5px";
		elements[i].insertBefore(headline2, elements[i].firstChild);
	} //for(i)
} //makeHeadlines()


function NiftyCheck(){
if(!document.getElementById || !document.createElement)
    return(false);
var b=navigator.userAgent.toLowerCase();
if(b.indexOf("msie 5")>0 && b.indexOf("opera")==-1)
    return(false);
return(true);
}

function Rounded(selector,bk,color,size){
var i;
var v=getElementsBySelector(selector);
var l=v.length;
for(i=0;i<l;i++){
    AddTop(v[i],bk,color,size);
    AddBottom(v[i],bk,color,size);
    }
}

function RoundedTop(selector,bk,color,size){
var i;
var v=getElementsBySelector(selector);
for(i=0;i<v.length;i++)
    AddTop(v[i],bk,color,size);
}

function RoundedBottom(selector,bk,color,size){
var i;
var v=getElementsBySelector(selector);
for(i=0;i<v.length;i++)
    AddBottom(v[i],bk,color,size);
}

function AddTop(el,bk,color,size){
var i;
var d=document.createElement("b");
var cn="r";
var lim=4;
if(size && size=="small"){ cn="rs"; lim=2}
d.className="rtop";
d.style.backgroundColor=bk;
for(i=1;i<=lim;i++){
    var x=document.createElement("b");
    x.className=cn + i;
    x.style.backgroundColor=color;
    d.appendChild(x);
    }
el.insertBefore(d,el.firstChild);
}

function AddBottom(el,bk,color,size){
var i;
var d=document.createElement("b");
var cn="r";
var lim=4;
if(size && size=="small"){ cn="rs"; lim=2}
d.className="rbottom";
d.style.backgroundColor=bk;
for(i=lim;i>0;i--){
    var x=document.createElement("b");
    x.className=cn + i;
    x.style.backgroundColor=color;
    d.appendChild(x);
    }
el.appendChild(d,el.firstChild);
}

function getElementsBySelector(selector){
var i;
var s=[];
var selid="";
var selclass="";
var tag=selector;
var objlist=[];
if(selector.indexOf(" ")>0){  //descendant selector like "tag#id tag"
    s=selector.split(" ");
    var fs=s[0].split("#");
    if(fs.length==1) return(objlist);
    return(document.getElementById(fs[1]).getElementsByTagName(s[1]));
    }
if(selector.indexOf("#")>0){ //id selector like "tag#id"
    s=selector.split("#");
    tag=s[0];
    selid=s[1];
    }
if(selid!=""){
    objlist.push(document.getElementById(selid));
    return(objlist);
    }
if(selector.indexOf(".")>0){  //class selector like "tag.class"
    s=selector.split(".");
    tag=s[0];
    selclass=s[1];
    }
var v=document.getElementsByTagName(tag);  // tag selector like "tag"
if(selclass=="")
    return(v);
for(i=0;i<v.length;i++){
    if(v[i].className==selclass){
        objlist.push(v[i]);
        }
    }
return(objlist);
}
	

// added on 2007-04-20  (original author: Simon Willison)
function addLoadEvent( func )
{
	var oldonload = window.onload;
	
	if (typeof window.onload != 'function')
	{
		window.onload = func;
		
	} else {
		window.onload =
			function()
			{
				if (oldonload)
					oldonload();
				
				func();
			} //function()
	} //if-else
} //addLoadEvent()

function setInteraction(radioArray)
{
	if (radioArray[0].checked == true)
		radioArray[0].value="200";
	if (radioArray[1].checked == true)
		radioArray[1].value="802";
}

function preloadPics()
{
	var d = document;
	var a = arguments;

	if (d.images)
	{
		if(!d.picArray)
			d.picArray = new Array();

		for ( var i = d.picArray.length; i < a.length; i++ )
		{
			d.picArray[i] = 	new Image;
			d.picArray[i].src =	a[i];
		}
	} //if
} //preloadPics()

function toggleBuyCheckbox( target, link_text )
{
	id		= target.id.split('_')[1];
	type	= ( (target.id.split('_')[0] == 'postlink') ? ('2') : ('1') ); 
	
	
	if (target.checked)
		xajax_addToShoppingCart( id, type, link_text );
	else
		xajax_removeFromShoppingCart( id, type );
} //toggleBuyCheckbox()
function addToShoppingCart( item_id )
{
	var itemDiv = document.getElementById("details_" + item_id);
	
	if (null != itemDiv)
		itemDiv.style.display = "block";
	
	xajax_addToShoppingCart( item_id );
} //addToShoppingCart()
function removeFromShoppingCart( item_id )
{
	var itemDiv = document.getElementById("details_" + item_id);
	
	if (null != itemDiv)
		itemDiv.style.display = "none";
	
	xajax_removeFromShoppingCart( item_id );
} //removeFromShoppingCart()

function extendAdspaceResult(adspaceId, keyword, index, counter, textPattern)
{
	idlist = document.getElementById("id_list_" + adspaceId).value;

	if ('' != idlist)
		xajax_expandAdspaceResult(idlist, keyword, index, counter);


	var idArray = idlist.split("#");
	
	var rows2add = Math.min(10, (idArray.length - (index)));
	
	var newSpan = document.getElementById('adspace_' + adspaceId).rowSpan  + rows2add;
	
	
	for (var i = index; i < rows2add + index; i++)
	{
		document.getElementById('post_' + idArray[i]).style.display = '';
	}
	
	document.getElementById("collapse_" + adspaceId).style.display = "";
	
	if (newSpan-1 < idArray.length)
	{
		var nextToShow = Math.min(10,idArray.length - (index + 10));
		var text = textPattern.split("#").join(nextToShow);
		
		var extendHtml = '<a href="javascript:extendAdspaceResult(\'' + adspaceId + '\',\'' + keyword + '\',' + (newSpan-1) + ',' + counter + ',\'' + textPattern + '\')">' + text + '</a>';

		document.getElementById("extend_" + adspaceId).innerHTML = extendHtml;
	}
	else
	{
		document.getElementById("extend_" + adspaceId).style.display = "none";
	}
	
	document.getElementById('adspace_' + adspaceId).rowSpan=newSpan;
	
}

function expandAdspaceResult(adspaceId, rowSpan)
{
	idlist = document.getElementById("id_list_" + adspaceId).value;
	
	var idArray = idlist.split("#");
	
	for (var i = 0; i < parseInt(rowSpan)-1; i++)
	{
		document.getElementById('post_' + idArray[i]).style.display = '';
	}
	
	document.getElementById("collapse_" + adspaceId).style.display = '';
	document.getElementById("expand_" + adspaceId).style.display = "none";
	
	if (rowSpan < idArray.length-1)
	{
		document.getElementById("extend_" + adspaceId).style.display = "";
	}
	else
		document.getElementById("extend_" + adspaceId).style.display = "none";

	document.getElementById('adspace_' + adspaceId).rowSpan=rowSpan;
}

function collapseAdspaceResult(adspaceId, expandTextPattern)
{
	idlist = document.getElementById("id_list_" + adspaceId).value;
	
	var idArray = idlist.split("#");
	
	for (var i = 0; i < idArray.length; i++)
	{
		document.getElementById('post_' + idArray[i]).style.display = 'none';
	}
	
	var oldSpan = document.getElementById('adspace_' + adspaceId).rowSpan;
	
	
	var toShow = Math.min(10,idArray.length);
	var expandText = expandTextPattern.split("#").join(toShow);
	
	var expandHtml = '<a href="javascript:expandAdspaceResult(\'' + adspaceId + '\',' + (oldSpan) + ')">' + expandText + '</a>';
	document.getElementById("expand_" + adspaceId).innerHTML = expandHtml;

	
	document.getElementById('adspace_' + adspaceId).rowSpan="1";
	document.getElementById("collapse_" + adspaceId).style.display = "none";
	document.getElementById("expand_" + adspaceId).style.display = "";
	document.getElementById("extend_" + adspaceId).style.display = "none";
}

preloadPics(
				  '/pics/menu01_bg_active.gif'
				, '/pics/menu02_bg_active_left.gif'
				, '/pics/menu02_bg_active_right.gif'
				, '/pics/branch_opened.gif'
				, '/pics/gimmick_correct.gif'
				, '/pics/gimmick_incorrect.gif'
				, '/pics/button_100_hover.gif'
				, '/pics/button_160_hover.gif'
				, '/pics/button_220_hover.gif'
				, '/pics/homepage_box_1_over_de.gif'
				, '/pics/homepage_box_2_over_de.gif'
			);

