//	js for startpage
//	Creator: Daniel Schindler
//	--------------------------------------------------
//  Copyright © 2003-2005 webagentur logic-code
//	Design by webagentur logic-code
//	www.logic-code.de
//	--------------------------------------------------
//	Please don't use our work without permission, ask 
//	first.
//--------------------------------------------------
//
//  This script is unfinished
//

var act_item			= null;		// current description
var default_item		= null;		// default description
var new_item			= null;

var queue_item			= null;
var queue_no_autohide	= false;
var queue_timer;

var fade_interval		= 40;		// fade interval
var fade_steps			= 12;		// fade-in and -out steps
var fade_pause			= 6;		// pause between fade-in and -out
var display_duration	= 6000;		// duration for non standard items

var fade_in_run			= false;
var fade_in_timer;					// var for fade in timer
var fade_in_step;					// current fade in step

var fade_out_run		= false;
var fade_out_timer;					// var for fade out timer
var fade_out_step;					// current fade out step

var hide_timer;						// var for autohide timer

function init_main() {
//init function for switching from non js mode to js mode
	
	//set position to absolute for all cnt items, this is lame i know :-)
	document.getElementById("cnt_about").style.position		= 'absolute';
	document.getElementById("cnt_contact").style.position	= 'absolute';
	document.getElementById("cnt_hicoz_de").style.position	= 'absolute';
	document.getElementById("cnt_printart").style.position	= 'absolute';
	document.getElementById("cnt_webdesign").style.position	= 'absolute';

	//set cnt_main, TODO: put the stuff into css
	var x = document.getElementById("cnt_main");
	x.style.position	= "absolute";
	x.style.visibility	= "hidden";
	default_item 		= x;

	//display default item, do not autohide this element 
	display_descr(default_item.id, true);
}

function display_descr(descr_item,no_autohide) {
//main function. this is raised mhen mousemove over an item
	var d = document.getElementById(descr_item);

	//if there s already something running then queue item
	if (new_item || fade_in_run == true || fade_out_run == true) { 
		queue_descr(descr_item, no_autohide); 
		return;
	}

	//do nothing if current item = new item
	//if (act_item && d.id == act_item.id) { return; }
	//reset timer if we are moving the mouse over the current description
	if (act_item && d.id == act_item.id) { 
		if (hide_timer) { clearTimeout(hide_timer); }
		hide_timer = setTimeout("autohide_descr()", display_duration);
		return;
	 }
	
	//set new item's style, TODO: put this into css
	d.style.top		= "165px";
	d.style.left	= "225px";
	d.style.padding		= "0";
	d.style.margin		= "0";
	d.style.background	= "transparent";
	d.style.border		= "0";
	
	if (act_item) { hide_descr(); }
	 
	new_item = d; 
	show_descr();
	if (no_autohide != true) {
		if (hide_timer) { clearTimeout(hide_timer); }
		hide_timer = setTimeout("autohide_descr()", display_duration);
	}
	else {
		if (hide_timer) { clearTimeout(hide_timer); }
	} 

}

function queue_descr(descr_item, no_autohide) {
//queue always the last, one item 
	if (descr_item) {
		queue_item = descr_item;
		queue_no_autohide = no_autohide;
	}
	
	if (!new_item && fade_in_run == false && fade_out_run == false && queue_item) { 
		display_descr(queue_item, queue_no_autohide); 
		queue_item			= null;
	}
	
	if (queue_item) {
		queue_timer = setTimeout("queue_descr()", fade_interval*2);
	}
}

function show_descr () {
	fade_in_step	= 0;
	fade_in_timer	= setTimeout("t_fade_in()", fade_interval);
}

function hide_descr () {
	fade_out_step	= 12;
	fade_out_timer	= setTimeout("t_fade_out()", fade_interval);
}

function t_fade_in() {
//timer for displaying an description item	
	
	fade_in_run	= true;
	
	//set new timer
	fade_in_timer = setTimeout("t_fade_in()", fade_interval);
	
	if (fade_out_run == true) { 
	//we have to wait until hide process is done
		return;
	}
	else if (fade_in_step <= fade_steps) {
	//check if we are still running
		fade_in_step++;
		if (new_item.style) { new_item.style.visibility = "visible"; }
		update_colors(new_item, fade_in_step);
	}
	else {
	//we are done
		act_item		= new_item;
		new_item		= null;
		clearTimeout(fade_in_timer);
	}
	
	fade_in_run	= false;
}

function t_fade_out() {
//timer for hiding an description item	
//the hide function has priority when both hide and show are running

	fade_out_run	= true;
	
	//set new timer
	fade_out_timer = setTimeout("t_fade_out()", fade_interval);
	if (new_item) { new_item.style.visibility = "hidden"; }
	if (fade_out_step > 0) {
		update_colors(act_item, fade_out_step);
		fade_out_step--;
	}
	else {
		if (act_item) { act_item.style.visibility = "hidden"; }
		act_item			= null;
	}
	
	//pause between fade out and in
	if (fade_out_step < 1) {
		if (Math.abs(fade_out_step) > fade_pause) {
			fade_in_step = 0;		//reset fade in
			clearTimeout(fade_out_timer);
			fade_out_run		= false;
		}
		fade_out_step--;
	}
}

function autohide_descr() {
//autohides an item
	//hide the current item
	hide_descr();
	//display an default item 
	display_descr(default_item.id, true);
}

function update_colors (item_ref, step) {
	if (item_ref) {
		//first change all child nodes (no need of this anymore because using stylesheets)
		/*if (item_ref.childNodes.length > 0) {
			for (i = 0; i < item_ref.childNodes.length; i++) {
				update_colors(item_ref.childNodes[i], step);
			}
		}*/
		if (step < 10 ) { fade_nr = "0" + step; } else { fade_nr = step; }
		item_ref.className = "intro_fade_" + fade_nr;
	}
}

