/*
         ___                         _____       __
        /  /\        ________       /    /\     / /\
(-----//  /  \//----/_____/__\\--) /____/  \___/_/ //--------------------------)
      /  /   /      \     | //     \    \  /    /\/    this code was created by
     /__/   /        \    |///-----\\____\/____/  \                       sigea
(---\\  \  /   (-----\\___|/        /    /\    \  /       
      \__\/                        /____/ /\____\/            __       sigea.ch
                                   \____\/  \  /             /\_\--------------)
                                         \___\//-------------\/_/  

*/
var imagefader;
function ImagefaderConcurrent(){
	var className='fader';
	var containerID='page';
	var timeout,showTimeout,opacity,ieFilters;
	var startTop=0;
	var showInterval=4200;
	var fadeDuration=1000;
	var imageArray;
	
	//var currentPic=[];
	//var currentKat=-1;
	//var nextPic=[];
	
	var faderArray=new Object();
	this.start=function(katNr){
		showTimeout=setTimeout('imagefader.showNextPic('+katNr+');',faderArray[katNr]['interval']);
	}
	this.showNextPic=function(katNr){
		if(faderArray[katNr]['showTimeout']){
			clearTimeout(faderArray[katNr]['showTimeout']);
		}
		//currentKat++;
		//if(currentKat>=imageArray.length){
		//	currentKat=0;
		//}
		faderArray[katNr]['nextPic']=faderArray[katNr]['currentPic']+1;
		if(faderArray[katNr]['nextPic']>=faderArray[katNr]['imgs'].length){
			faderArray[katNr]['nextPic']=0;
		}
		faderArray[katNr]['opacity']=100;
		faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']].style.zIndex=40;

		faderArray[katNr]['imgs'][faderArray[katNr]['nextPic']].style.zIndex=30;
		if(!ieFilters){
			//prepare images
			faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']].style.opacity=1;
			faderArray[katNr]['imgs'][faderArray[katNr]['nextPic']].style.opacity=0;
			removeClass(faderArray[katNr]['imgs'][faderArray[katNr]['nextPic']],'hidden');
			//start fading
			imagefader.fadeOut(katNr);
		}else{
			//prepare images
			faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']].style.filter=faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']].style.filter.replace(/ alpha\(opacity=([\d\.]+?)\)/i,'');
			faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']].style.filter+=' alpha(opacity=100)';
			faderArray[katNr]['imgs'][faderArray[katNr]['nextPic']].style.filter=faderArray[katNr]['imgs'][faderArray[katNr]['nextPic']].style.filter.replace(/ alpha\(opacity=([\d\.]+?)\)/i,'');
			faderArray[katNr]['imgs'][faderArray[katNr]['nextPic']].style.filter+=' alpha(opacity=0)';
			removeClass(faderArray[katNr]['imgs'][faderArray[katNr]['nextPic']],'hidden');
			//start fading
			imagefader.ieFadeOut(katNr);
		}
		//imagefader.fadeOut();
		//showTimeout=setTimeout('imagefader.shownextPic[currentKat]();',showInterval);
	}
	this.fadeOut=function(katNr){
		var interval=40;
		if(faderArray[katNr]['timeout']){
			clearTimeout(faderArray[katNr]['timeout']);
		}
		if(faderArray[katNr]['opacity']<=0){
			imagefader.imgSwitch(katNr);
		}else{
			faderArray[katNr]['opacity']-=(100/faderArray[katNr]['duration'])*interval;
			faderArray[katNr]['opacity']=Math.round(Math.max(0,faderArray[katNr]['opacity']));
			if(faderArray[katNr]['opacity']==0){
				faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']].style.opacity=0;

				faderArray[katNr]['imgs'][faderArray[katNr]['nextPic']].style.opacity=1;
			}else{
				faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']].style.opacity=faderArray[katNr]['opacity']/100;
				faderArray[katNr]['imgs'][faderArray[katNr]['nextPic']].style.opacity=1-faderArray[katNr]['opacity']/100;
			}
			faderArray[katNr]['timeout']=setTimeout('imagefader.fadeOut('+katNr+');',interval);
		}
	}
	this.ieFadeOut=function(katNr){
		//var interval=1000
		//faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']].style.filter='progid:DXImageTransform.Microsoft.Fade(duration='+interval/1000+')';
		//faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']].filters[0].Play();
		var interval=40;
		if(faderArray[katNr]['timeout']){
			clearTimeout(faderArray[katNr]['timeout']);
		}
		if(faderArray[katNr]['opacity']<=0){
			imagefader.imgSwitch(katNr);
		}else{
			faderArray[katNr]['opacity']-=(100/faderArray[katNr]['duration'])*interval;
			faderArray[katNr]['opacity']=Math.round(Math.max(0,faderArray[katNr]['opacity']));
			faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']].style.filter=faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']].style.filter.replace(/ alpha\(opacity=([\d\.]+?)\)/i,'');
			faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']].style.filter+=' alpha(opacity='+faderArray[katNr]['opacity']+')';
			faderArray[katNr]['imgs'][faderArray[katNr]['nextPic']].style.filter=faderArray[katNr]['imgs'][faderArray[katNr]['nextPic']].style.filter.replace(/ alpha\(opacity=([\d\.]+?)\)/i,'');
			faderArray[katNr]['imgs'][faderArray[katNr]['nextPic']].style.filter+=' alpha(opacity='+(100-faderArray[katNr]['opacity'])+')';
			faderArray[katNr]['timeout']=setTimeout('imagefader.ieFadeOut('+katNr+');',interval);
		}
	}
	this.imgSwitch=function(katNr){
		addClass(faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']],'hidden');
		faderArray[katNr]['currentPic']++;
		if(faderArray[katNr]['currentPic']>=faderArray[katNr]['imgs'].length){
			faderArray[katNr]['currentPic']=0;
		}
		removeClass(faderArray[katNr]['imgs'][faderArray[katNr]['currentPic']],'hidden');
		showTimeout=setTimeout('imagefader.showNextPic('+katNr+')',faderArray[katNr]['interval']);
	}
	this.prepare=function(){
		if (!document.getElementsByTagName) return false;
		if (!document.getElementById) return false;
		if (!document.getElementById(containerID)) return false;
		//check ie filter
		if(document.getElementsByTagName('img').length>0 && document.getElementsByTagName('img')[0].filters){
			ieFilters=true;
		}else{
			ieFilters=false;
		}
		var source;
		//imageArray=new Array();
		var ulTags=document.getElementById(containerID).getElementsByTagName('ul');
		var katCount=0;
		for(var i=0; i<ulTags.length; i++){
			if(ulTags[i].className.indexOf(className)>=0){
				//check if intervall and duration is given
				var pattern= new RegExp(className+'(.+?)( |$)');
				var matches=ulTags[i].className.match(pattern);
				faderArray[katCount]={};
				faderArray[katCount]['currentPic']=0;
				faderArray[katCount]['nextPic']=1;
				faderArray[katCount]['interval']=showInterval;
				faderArray[katCount]['duration']=fadeDuration;
				faderArray[katCount]['opacity']=100;
				faderArray[katCount]['timeout']=null;
				faderArray[katCount]['showTimeout']=null;
				faderArray[katCount]['imgs']=[];
				if(matches && matches.length==3){
					var temp=matches[1];
					matches=temp.match(/_i(\d+?)(_|$)/);
					if(matches && matches.length==3){
						faderArray[katCount]['interval']=parseInt(matches[1]);
					}
					matches=temp.match(/_d(\d+?)(_|$)/);
					if(matches && matches.length==3){
						faderArray[katCount]['duration']=parseInt(matches[1]);
					}
				}
				//imageArray[katCount]=[];
				//currentPic[katCount]=0;
				//nextPic[katCount]=1;
				var width=ulTags[i].offsetWidth+'px';
				var height=ulTags[i].offsetHeight+'px';
				ulTags[i].style.position='relative';
				ulTags[i].style.width=width;
				ulTags[i].style.height=height;
				var liTags=ulTags[i].getElementsByTagName('li');
				for ( var j=0; j < liTags.length; j++){
					source = liTags[j].getElementsByTagName('img')[0].getAttribute('src');
					faderArray[katCount]['imgs'][j]=new Image();
					faderArray[katCount]['imgs'][j].src=source;
					faderArray[katCount]['imgs'][j]=liTags[j];
					faderArray[katCount]['imgs'][j].style.position='absolute';
					faderArray[katCount]['imgs'][j].style.top='0px';
					faderArray[katCount]['imgs'][j].style.left='0px';
					faderArray[katCount]['imgs'][j].style.width=width;
					faderArray[katCount]['imgs'][j].style.height=height;
//					if(ieFilters){
//						faderArray[katCount]['imgs'][j].style.filter='progid:DXImageTransform.Microsoft.AlphaImageLoader(src="'+source+'", sizingMethod="crop")';
//					}else{
//						faderArray[katCount]['imgs'][j].style.backgroundImage='url('+source+')';
//					}
//					faderArray[katCount]['imgs'][j].getElementsByTagName('img')[0].parentNode.removeChild(faderArray[katCount]['imgs'][j].getElementsByTagName('img')[0]);
					faderArray[katCount]['imgs'][j].loaded=false;
					faderArray[katCount]['imgs'][j].onload=function(){
						this.loaded=true;
					}
					if(j>0){
						addClass(liTags[j],'hidden');
						removeClass(liTags[j],'noscript');
					}
				}
				imagefader.start(katCount);
				katCount++;
			//	break;
			}
		}
		//if(imageArray.length>=1 && imageArray[0].length>1){
			//showInterval=parseInt(showInterval/imageArray.length,10);
			//start fader
			//imagefader.start();
		//}
		return true;
	}
}
addLoadEvent(function(){
	imagefader=new ImagefaderConcurrent();
	imagefader.prepare();
});
