/*<![CDATA[*/
/*
	Copyright/Author/Eigentümer by Markus A. Beck & Daniel Karl for Krone Multimedia
	Relase Version 1.0 on 27.09.2009
	Changelog:
		.)1.1 default:show_time from 4 to 8, mab-28.09
*/
function kmm_fade_class(){
	fades = new Object();
	fades_onload_sort = new Array();
	curr_instanz_id = false;
	use_onload = true;
	onload_reg = false;
	default_fade_optionen = new Object();
	default_fade_optionen['speed'] = 400;
	default_fade_optionen['show_time'] = 7000;
	default_fade_optionen['curr_num'] = 1;
	default_fade_optionen['object_height'] = 174;
	default_fade_optionen['use_onload'] = true;
	this.anfang = function(instanz_id, container_num){
		if(instanz_id==''){
			_error('instanz wurde nicht gesetzt');
		}
		curr_instanz_id = instanz_id;
		fades[instanz_id] = new Object();
		fades[instanz_id]['name'] = instanz_id;
		fades[instanz_id]['container_num_anfang'] = container_num;
		set_status(0, 'anfang');
	}
	this.ende = function(container_num, fade_optionen){
		set_status(0,'ende');
		if(!curr_instanz_id){
			_error('instanz wurde nicht gestartet');
		}
		anzahl = (container_num - fades[curr_instanz_id]['container_num_anfang'])-1;
		if(anzahl < 0){
			_error('anfang/ende wert von der container-nummer nicht korrekt');
		} else if(anzahl < 1){
			_error('kein content vorhanden');
		}
		fades[curr_instanz_id]['container_num_ende'] = container_num;
		fades[curr_instanz_id]['anzahl'] = anzahl;
		if(typeof(fade_optionen)=='undefined'){
			fade_optionen = new Object();
		}
		set_status(1);
		set_fade_optionen(fade_optionen);
		set_status(2);
		exec_fade_optionen();
		fades[curr_instanz_id]['curr_num'] = fades[curr_instanz_id]['container_num_anfang']+1;
		set_status(3);
		//fades[curr_instanz_id]['use_onload'] = use_onload;
		if(fades[curr_instanz_id]['use_onload']){
			fades_onload_sort.push(curr_instanz_id);
			if(!onload_reg){
				onload_reg=true;
				kmm_addEvent(window, 'load', kmm_fade.init);
			}
		} else {
			kmm_fade.init('', curr_instanz_id);
		}
		//document.write('<div id="'+curr_instanz_id+'_debug"></div>');
	}
	function _error(msg){
		alert('_error:' + msg);
	}
	function _debug(msg){
		var debug_box = elementid_exists(curr_instanz_id + '_debug');
		if(debug_box){
			//debug_box.innerHTML += get_time() + ':' + msg + '<br />';
		} else {
			//alert('_debug:' + msg);
		}
	}
	function exec_fade_optionen(){
		document.getElementById(curr_instanz_id).style.height = default_fade_optionen['object_height'] + 'px';
		for(var i = 0; i <fades[curr_instanz_id]['anzahl']; i++) {
			with(document.getElementById(curr_instanz_id + '_' + (fades[curr_instanz_id]['container_num_anfang']+i+1))){
				if((i+1) == fades[curr_instanz_id]['curr_num']){
					opacity = 1;
				} else {
					opacity = 0;
					//kmm_fader_set_cat_class(unique_string, 0, true);
				}
				style.position = 'absolute';
				style.opacity = opacity;
				style.filter = 'alpha(opacity='+(opacity*100)+')';
				style.zIndex = fades[curr_instanz_id]['anzahl'] - i; // fixme => 1000
			}
		}
	}
	this.init = function(eventhandler, instanz_id){
		if(typeof(instanz_id)!='undefined'){
				if(kmm_fader_set_cat_class(instanz_id+'_cat', 0)){
					fades[instanz_id]['kategorie'] = true;
					document.getElementById(instanz_id).className = document.getElementById(instanz_id).className.replace(/kronetv_content_bereich_ohnekat/g, 'kronetv_content_bereich_mitkat');
				} else {
					intervall_time = fades[instanz_id]['show_time'] + fades[instanz_id]['speed'];
					window.setInterval("kmm_fade.do_fade('"+instanz_id+"');",intervall_time);
				}
		}	else {
			for(var i = 0; i <fades_onload_sort.length; i++) {
				if(kmm_fader_set_cat_class(fades_onload_sort[i]+'_cat', 0)){
					fades[fades_onload_sort[i]]['kategorie'] = true;
					document.getElementById(fades_onload_sort[i]).className = document.getElementById(fades_onload_sort[i]).className.replace(/kronetv_content_bereich_ohnekat/g, 'kronetv_content_bereich_mitkat');
				} else {
					fades[fades_onload_sort[i]]['kategorie'] = false;
				}
				intervall_time = fades[fades_onload_sort[i]]['show_time'] + fades[fades_onload_sort[i]]['speed'];
				curr_instanz_id = fades_onload_sort[i];
				_debug(fades_onload_sort[i]);
				_debug(intervall_time);
				timeout = intervall_time / fades_onload_sort.length;
				if(i>0){
					timeout = timeout * (i+1);
					//window.setTimeout('window.setInterval("kmm_fade.do_fade(\''+fades_onload_sort[i]+'\');",'+intervall_time+');', intervall_time-timeout);
					window.setTimeout('kmm_fade.do_fade(\''+fades_onload_sort[i]+'\');', timeout);
					window.setTimeout('window.setInterval("kmm_fade.do_fade(\''+fades_onload_sort[i]+'\');",'+intervall_time+');', timeout);
					
				} else {
					
					window.setTimeout('kmm_fade.do_fade(\''+fades_onload_sort[i]+'\');', timeout);
					window.setTimeout('window.setInterval("kmm_fade.do_fade(\''+fades_onload_sort[i]+'\');",'+intervall_time+');', timeout);
				}
								
				/*
				if(i>0){
					timeout = timeout * i;
					window.setTimeout('window.setInterval("kmm_fade.do_fade(\''+fades_onload_sort[i]+'\');",'+intervall_time+');', timeout);
				} else {
					//window.setTimeout('kmm_fade.do_fade(\''+fades_onload_sort[i]+'\');', timeout);
					window.setInterval("kmm_fade.do_fade('"+fades_onload_sort[i]+"');",intervall_time);
				}
				*/
			}
		}
	}
	this.do_fade = function(instanz_id){
		curr_instanz_id = instanz_id;
		set_status(0,'do');
		//_debug(instanz_id + '_' + fades[instanz_id]['curr_num']);
		//set_status(1);
		fades[instanz_id]['out'] = 100;
		fades[instanz_id]['in'] = 0;
		cnt = fades[instanz_id]['curr_num'] - fades[instanz_id]['container_num_anfang'];
		fades[instanz_id]['curr_num_to'] = fades[instanz_id]['curr_num'];
		if(cnt >=fades[instanz_id]['anzahl']){
			fades[instanz_id]['curr_num_to']=fades[instanz_id]['container_num_anfang']+1;
		} else {
			fades[instanz_id]['curr_num_to']++;
		}
		this.do_fading(instanz_id,0,fades[instanz_id]['curr_num']);
		window.setTimeout("kmm_fade.do_fading('"+instanz_id+"', 100, "+fades[instanz_id]['curr_num_to']+");", 50);
		if(cnt>=fades[instanz_id]['anzahl']){
			fades[instanz_id]['curr_num']=fades[instanz_id]['container_num_anfang']+1;
		} else {
			fades[instanz_id]['curr_num']++;
		}
		if(fades[curr_instanz_id]['kategorie']){
			kmm_fader_set_cat_class(instanz_id+'_cat', (fades[instanz_id]['curr_num'] - 1) - fades[instanz_id]['container_num_anfang']);
		}
	}
	this.do_fading = function(instanz_id, to_fade, curr_id){
		curr_instanz_id = instanz_id;
		if(to_fade == 100){
			fades[instanz_id]['in'] = fades[instanz_id]['in'] + (fades[instanz_id]['speed']/(fades[instanz_id]['speed']/10));
			curr_opacity = fades[instanz_id]['in'];
			var target_object = document.getElementById(instanz_id + '_' + curr_id);
		}else{
			fades[instanz_id]['out'] = fades[instanz_id]['out'] - (fades[instanz_id]['speed']/(fades[instanz_id]['speed']/10));
			curr_opacity = fades[instanz_id]['out'];
			var target_object = document.getElementById(instanz_id + '_' + curr_id);
		}
		target_object.style.opacity = curr_opacity/100;
		target_object.style.filter = 'alpha(opacity='+curr_opacity+')';//IE
		if(curr_opacity == to_fade) {
			if(curr_opacity == 0) {
				target_object.style.zIndex = 0;
			} else {
				target_object.style.zIndex = fades[instanz_id]['anzahl']+1;
			}
			return;
		}
		set_status(to_fade, 'do_fading');
		window.setTimeout("kmm_fade.do_fading('"+instanz_id+"', " +to_fade+"," +curr_id+");", fades[instanz_id]['speed']/10);
	}
	function set_fade_optionen(fade_optionen){
		for (var optionsname in default_fade_optionen){
			if(typeof(fade_optionen[optionsname])!='undefined'){
				fades[curr_instanz_id][optionsname] = fade_optionen[optionsname];
			} else {
				fades[curr_instanz_id][optionsname] = default_fade_optionen[optionsname];
			}
		}
	}
	function set_status(status_int, status_msg){
		if(typeof(status_msg)!='undefined'){
			fades[curr_instanz_id]['status_msg'] = status_msg;
		} else {
			status_msg = fades[curr_instanz_id]['status_msg'];
		}
		fades[curr_instanz_id]['status_int'] = status_int;
		//_debug('status:' + status_int + '-' + status_msg);
	}
	function get_time(){
		var currentTime = new Date()
		return currentTime.getSeconds() + ':' + currentTime.getMilliseconds();
	}
	function kmm_fader_set_cat_class(class_name, idx) {
		//container.js req.!
		var elems = getElementsByClass(class_name, 'li');
		if(elems.length > 0) {
			for(var i=0; i<elems.length; i++) {
				elems[i].className = elems[i].className.replace(/(\s{0,1}nav\_bereich_selected)*/g, '');	
			}
			if(typeof(elems[idx]) != 'undefined' && elems[idx] != null) {
				elems[idx].className = elems[idx].className + ' nav_bereich_selected';
				return true;
			}
		}
		return false;
	}
}
kmm_fade = new kmm_fade_class;
/*]]>*/