/**
 * IMPORTANT!
 * some codes uses the prototype.js, and the animator.js files!
 * the script tag's order in the html document's head is important!
 */
/**
 * round block images path.
 */
var roundBlockImagePath = 'images';
/**
 * config for the replaceMailString function
 */
/**
 * html tag name, that contains the email string
 * @var string
 */
var emailTag		= 'span';
/**
 * html tag's classname
 * @var string
 */
var emailTagClass	= 'secret-mail';
/**
 * this string will be replace to @.
 * you can change this to anything, example: / Klammeraffe /
 * @var string
 */
var emailAt			= / \(at\) /;
/**
 * this string will be replace to . (dot), the 'g' is important, it means
 * 'replace all'
 * @var string
 */
var emailDot		= / \(dot\) /g;
/**
 * config for the showBlocks
 */
/**
 * @var integer
 */
var durationMove = 400;
/**
 * @var integer
 */
var durationFade = 400;
/**
 * image's path, that looks like '+' sign
 * @var string
 */
var inputImageOpen	= 'fileadmin/templates/main/images/left-block-nav-open.png';
/**
 * image's path, that looks like '-' sign
 * @var string
 */
var inputImageClose	= 'fileadmin/templates/main/images/left-block-nav-close.png';
/*
	don't modify this!
 */
var lastSelectedBlock	= false;
var animMove			= new Array();
var animFade			= new Array();
/**
 * getElementsByClass
 *
 * search for html elements by class name and tag name. you can leave
 * the tgName parameter empty.
 *
 * @param string clsName
 * @param string tgName
 * @return array
 */
function getElementsByClass( clsName,tgName ) {
	var found		= 0;
	var foundTgs	= new Array();
	if( tgName ) {
		var allTgs	= document.getElementsByTagName( tgName );
	}
	else {
		var allTgs	= document.getElementsByTagName( '*' );
	}

	if( allTgs ) {
		for( i=0; i < allTgs.length; i++ )
		{
			if( allTgs[i].className == clsName ) {
  				foundTgs[found++] = allTgs[i];
			}
		}
	}
  	return foundTgs;
}
/**
 * addLoadEvent
 *
 * adds event when window is loaded. see the bottom of this document.
 */
function addLoadEvent( func ) {
	var oldonload = window.onload;
	if( typeof window.onload != 'function' ) {
		window.onload = func;
	}
	else {
		window.onload = function() {
			if( oldonload ) {
				oldonload();
			}
			func();
		}
	}
}
/**
 * addEvent
 *
 * adds various events to elements
 *
 * @param object obj
 * @param string evType (mouseover,mouseout,click,etc..)
 * @param object func (name of the function)
 */
function addEvent( obj,evType,func ) {
	if( obj.addEventListener ) {
		obj.addEventListener( evType,func,false );
		return true;
	}
	else if( obj.attachEvent ) {
		var r = obj.attachEvent( "on"+evType,func );
		return r;
	}
	else{
		return false;
	}
}
/**
 * replaceMailString
 *
 * hide email adresses from spammers.
 * replaces modified email strings in the configured html element. see the top of
 * this document.
 *
 * example:
 * with the default configuration this html tag:
 * 	<span class="secret-mail">mail (at) q-wert (dot) net</span>
 * ...will be replaced to this:
 * 	<span class="secret-mail"><a href="mailto:mail@q-wert.net">mailto:mail@q-wert.net</a></span>
 */
function replaceMailString() {
	if( !document.getElementsByTagName && !document.createElement &&
		!document.createTextNode ) return;

	var nodes = document.getElementsByTagName( emailTag );
	for( var i=nodes.length-1;i>=0;i--)
	{
		if( nodes[i].className == emailTagClass ) {
			var node = document.createElement( "a" );
			var address = nodes[i].firstChild.nodeValue;

			address = address.replace(emailAt, "@");
			address = address.replace(emailDot, ".");

			node.setAttribute("href", "mailto:"+address);
			node.appendChild(document.createTextNode(address));

			var prnt = nodes[i].parentNode;
			for( var j=0;j<prnt.childNodes.length;j++ )
			{
				if( prnt.childNodes[j] == nodes[i] ) {
					if( !prnt.replaceChild ) return;
					prnt.replaceChild( node, prnt.childNodes[j] );
					break;
				}
			}
		}
	}
}
/**
 * roundBlocks
 *
 * adds 4 images to the html elements, that you vant to see with rounded corners.
 * see the bottom of this document.
 *
 * @param string clsName (class name of the element)
 * @param string blockColor (color of the image)
 */
function roundBlocks( clsName,blockColor ) {
	objs = getElementsByClass( clsName,'div' );
	if( objs ){
		for( i=0; i<objs.length; i++ )
		{
			objs[i].innerHTML += '<img src="'+roundBlockImagePath+'/round-'+blockColor+'-rt.png" class="png-alpha rt" />'
			+'<img src="'+roundBlockImagePath+'/round-'+blockColor+'-rb.png" class="png-alpha rb" />'
			+'<img src="'+roundBlockImagePath+'/round-'+blockColor+'-lb.png" class="png-alpha lb" />'
			+'<img src="'+roundBlockImagePath+'/round-'+blockColor+'-lt.png" class="png-alpha lt" />';
		}
	}
	return true;
}
/**
 * placeFooter
 *
 * place the footer to the bottom of the page. sometimes the pure css style
 * not works.
 */
function placeFooter(){
	contentHeight = $('qwert-main').offsetHeight;
	footerTop = $('qwert-footer').offsetTop;
	footerHeight = $('qwert-footer').offsetHeight;
	realTop = ( contentHeight - ( footerTop + footerHeight ) );
	if( realTop > 0 ){
		$('qwert-footer').style.top+=(footerTop+realTop)+'px';
	}
}

function showBlock( blockId ) {
	if( !animMove[blockId] ) {
		blockHeight = $('block-content-'+blockId).offsetHeight;
		animMove[blockId] = new Animator({
			duration: durationMove
		});
		animMove[blockId].addSubject(
			new NumericalStyleSubject( $('block-input-'+blockId).parentNode,'padding-top', 0, blockHeight)
			);

		animFade[blockId] = new Animator({
			duration: durationFade
		});
		animFade[blockId].addSubject(
			new NumericalStyleSubject( $('block-content-'+blockId), 'opacity', 0, 1)
			);
	}

	if( !lastSelectedBlock ) {
		// +/-
		$('block-input-'+blockId).src = inputImageClose;
		//	new fade in
		$('block-content-'+blockId).style.opacity=0;
		animMove[blockId].setOptions({
			onComplete: function(){
				animFade[blockId].seekTo(1);
				$('block-content-'+blockId).style.visibility='visible';
				animMove[blockId].setOptions({onComplete:function(){return false;}});
			}
		});
		animMove[blockId].seekTo(1);

		lastSelectedBlock	= blockId;
	}
	else if( lastSelectedBlock != blockId ){
		// +/-
		$('block-input-'+lastSelectedBlock).src = inputImageOpen;
		$('block-input-'+blockId).src = inputImageClose;
		//	old fade out - new fade in
		$('block-content-'+blockId).style.opacity=0;

		lastSelected = lastSelectedBlock;
		animFade[lastSelectedBlock].setOptions({
			onComplete:function(){
				$('block-content-'+lastSelected).style.visibility='hidden';
				animMove[lastSelected].setOptions({
					onComplete:function(){
						moveNext();
						animMove[lastSelected].setOptions({onComplete:function(){return false;}});
						}
					});
				animMove[lastSelected].seekTo(-1);
				animFade[lastSelected].setOptions({onComplete:function(){return false;}});
			}
		});
		animFade[lastSelectedBlock].seekTo(-1);

		moveNext = function() {
			animMove[blockId].setOptions({
				onComplete:function(){
					animFade[blockId].seekTo(1);
					$('block-content-'+blockId).style.visibility='visible';
					animMove[blockId].setOptions({onComplete:function(){return false;}});
				}
			});
			animMove[blockId].seekTo(1);
		}

		lastSelectedBlock	= blockId;
	}
	else{
		//	+/-
		$('block-input-'+lastSelectedBlock).src = inputImageOpen;
		//	old fade out
		lastSelected = lastSelectedBlock;
		animFade[lastSelected].setOptions({
			onComplete:function(){
				$('block-content-'+lastSelected).style.visibility='hidden';
				animMove[lastSelected].seekTo(-1);
				animFade[lastSelected].setOptions({onComplete:function(){return false;}});
			}
		});
		animFade[lastSelected].seekTo(-1);

		lastSelectedBlock	= false;
	}
}
/**
 * sifr elements styles
 * read the doc/How+to+use.html file.
 * and this:
 * http://www.mikeindustries.com/sifr
 */
initSifrConf = function(){
	if(typeof sIFR == "function"){
		sIFR.replaceElement( named(
			{
				sSelector: ".sifr-h1",
				sFlashSrc: "/fileadmin/templates/main/swf/ITCOfficinaSansBold.swf",
				sColor: "#ffffff",
				sLinkColor: "#ffffff",
				sBgColor: "#e95000",
				sHoverColor: "#ffffff",
				nPaddingTop: 0,
				nPaddingRight: 5,
				nPaddingBottom: 0,
				nPaddingLeft: 5,
				sFlashVars: 'offsetLeft=5'
			}
		));
		sIFR.replaceElement( named(
			{
				sSelector: ".sifr-container-h2",
				sFlashSrc: "/fileadmin/templates/main/swf/ITCOfficinaSerifBold.swf",
				sColor: "#000000",
				sLinkColor: "#000000",
				sBgColor: "#ffffff",
				sHoverColor: "#000000",
				nPaddingTop: 0,
				nPaddingRight: 0,
				nPaddingBottom: 0,
				nPaddingLeft: 0,
				sFlashVars: 'offsetLeft=10',
				sWmode: 'transparent'
			}
		));
		sIFR.replaceElement( named(
			{
				sSelector: ".sifr-container-h3",
				sFlashSrc: "/fileadmin/templates/main/swf/ITCOfficinaSerifBold.swf",
				sColor: "#000000",
				sLinkColor: "#000000",
				sBgColor: "#ffffff",
				sHoverColor: "#000000",
				nPaddingTop: 0,
				nPaddingRight: 0,
				nPaddingBottom: 0,
				nPaddingLeft: 0,
				sFlashVars: 'offsetLeft=10',
				sWmode: 'transparent'
			}
		));
		sIFR.replaceElement( named(
			{
				sSelector: ".sifr-container-h4",
				sFlashSrc: "/fileadmin/templates/main/swf/ITCOfficinaSerifBold.swf",
				sColor: "#6b6a6a",
				sLinkColor: "#6b6a6a",
				sBgColor: "#ffffff",
				sHoverColor: "#6b6a6a",
				nPaddingTop: 0,
				nPaddingRight: 0,
				nPaddingBottom: 0,
				nPaddingLeft: 0,
				sFlashVars: 'offsetLeft=10&offsetTop=-3',
				sWmode: 'transparent'
			}
		));
		sIFR.replaceElement( named(
			{
				sSelector: ".sifr-left-top-h3",
				sFlashSrc: "/fileadmin/templates/main/swf/ITCOfficinaSerifBold.swf",
				sColor: "#000000",
				sLinkColor: "#000000",
				sBgColor: "#f57500",
				sHoverColor: "#000000",
				nPaddingTop: 0,
				nPaddingRight: 0,
				nPaddingBottom: 0,
				nPaddingLeft: 0,
				sWmode: 'transparent'
			}
		));
		sIFR.replaceElement( named(
			{
				sSelector: ".sifr-left-top-h4",
				sFlashSrc: "/fileadmin/templates/main/swf/ITCOfficinaSerifBold.swf",
				sColor: "#e8e8e1",
				sLinkColor: "#e8e8e1",
				sBgColor: "#f57500",
				sHoverColor: "#e8e8e1",
				nPaddingTop: 0,
				nPaddingRight: 0,
				nPaddingBottom: 0,
				nPaddingLeft: 0,
				sFlashVars: 'textalign=right',
				sWmode: 'transparent'
			}
		));
		sIFR.replaceElement( named(
			{
				sSelector: ".sifr-left-header-h3",
				sFlashSrc: "/fileadmin/templates/main/swf/ITCOfficinaSerifBold.swf",
				sColor: "#151515",
				sLinkColor: "#151515",
				sBgColor: "#dadace",
				sHoverColor: "#151515",
				nPaddingTop: 0,
				nPaddingRight: 0,
				nPaddingBottom: 0,
				nPaddingLeft: 0,
				sFlashVars: 'offsetLeft=10',
				sWmode: 'transparent'
			}
		));
		sIFR.replaceElement( named(
			{
				sSelector: ".sifr-contact-h3",
				sFlashSrc: "/fileadmin/templates/main/swf/ITCOfficinaSansBold.swf",
				sColor: "#4b4b43",
				sLinkColor: "#4b4b43",
				sBgColor: "#dadace",
				sHoverColor: "#151515",
				nPaddingTop: 0,
				nPaddingRight: 0,
				nPaddingBottom: 0,
				nPaddingLeft: 0,
				sWmode: 'transparent'
			}
		));
		sIFR.replaceElement( named(
			{
				sSelector: ".sifr-contact-h3-top",
				sFlashSrc: "/fileadmin/templates/main/swf/ITCOfficinaSansBold.swf",
				sColor: "#4b4b43",
				sLinkColor: "#4b4b43",
				sBgColor: "#dadace",
				sHoverColor: "#151515",
				nPaddingTop: 0,
				nPaddingRight: 0,
				nPaddingBottom: 0,
				nPaddingLeft: 0,
				sWmode: 'transparent'
			}
		));
		sIFR.replaceElement( named(
			{
				sSelector: ".sifr-form-label",
				sFlashSrc: "/fileadmin/templates/main/swf/ITCOfficinaSerifBold.swf",
				sColor: "#000000",
				sLinkColor: "#000000",
				sBgColor: "#ffffff",
				sHoverColor: "#000000",
				nPaddingTop: 0,
				nPaddingRight: 0,
				nPaddingBottom: 5,
				nPaddingLeft: 0,
				sWmode: 'transparent'
			}
		));
	}
}
/**
 * adds events when window is loaded
 */
addLoadEvent(
	function(){
		replaceMailString();
		initSifrConf();
		roundBlocks( 'round-block-orange-white','white' );
		roundBlocks( 'round-block-orange-grey','grey' );
		roundBlocks( 'round-block-image-white','white' );
		roundBlocks( 'round-block-image-grey','grey' );
		//showBlockInit();

		placeFooter();
	}
);
