//-----------------------------------------------------------------------------
//  fade.js  v1.8  ------------------------------------------------------------

var agt = navigator.userAgent.toLowerCase();
var Opera = (agt.indexOf("opera") != -1);			// Opera
var IE = ((agt.indexOf("msie") != -1) && !Opera);	// Internet Explorer
var Gecko = (agt.indexOf("gecko") != -1);			// Gecko engine. Netscape, Mozilla, Firefox, ...
var NN = (agt.indexOf("netscape") != -1);			// Netscape
var Firefox = (agt.indexOf("firefox") != -1);		// Firefox
var Mozilla = (Gecko && !NN && !Firefox);			// Mozilla

//--

var fade_max = 100;
var fade_min = 0;
if (IE || Opera) {
	var fadeinspeed = 40;
	var fadeoutspeed = 40;
	var fade_interval = 20;	// ms
} else {
	var fadeinspeed = 40;
	var fadeoutspeed = 40;
	var fade_interval = 20;	// ms
}

var fadeongecko = true;

/*
const F_IEPIXELATE = 0001;
const F_IEBLUR = 0002;
const F_IEFADE = 0004;
*/

// IE specific
var IE_EnablePixelate = false;
var IE_EnableBlur = false;
var IE_BlurAngle = 0;

//--

var fade_timer;
var fade_job = new Array();

var IE_Filters = ''; 

fade_timer = setInterval('dofade()', fade_interval);

function getobj(id) {
	if (document.all)	return document.all[id];
	else				return document.getElementById(id);
}

function inarray(id) {
	for (var i=0; i<fade_job.length; i++) {
		if (fade_job[i] == id) return true;
	}
	return false;
}

function addjob(id, step, fadeonly) {
	if (!inarray(id)) fade_job[fade_job.length] = id;
	fade_job[id] = step;
	fade_job['__'+id+'__f'] = fadeonly;
}

function deljob(id) {
	if (inarray(id)) {
		var temp = new Array();
		for (var i=0; i<fade_job.length; i++) {
			if (fade_job[i] != id) {
				temp[temp.length] = fade_job[i];
				temp[temp[temp.length-1]] = fade_job[fade_job[i]];
				temp['__'+fade_job[i]+'__f'] = fade_job['__'+fade_job[i]+'__f'];
			}
		}
		fade_job = temp;
	}
}

function dofade() {
	for (var i=0; i<fade_job.length; i++)
	{
		var fade_id = fade_job[i];
		var fade_step = fade_job[fade_job[i]];
		var fade_f = fade_job['__'+fade_job[i]+'__f'];
		var obj = getobj(fade_id);

		if (isNaN(parseInt(obj.style.fade_op))) obj.style.fade_op = 0;
		obj.style.fade_op += fade_step;

		if (obj.style.fade_op <= 0) obj.style.visibility = 'hidden';
		else obj.style.visibility = 'visible';

		if (obj.style.fade_op <= fade_min) {
			obj.style.fade_op = fade_min;
			deljob(fade_id);
		}
		
		if (obj.style.fade_op >= fade_max) {
			obj.style.fade_op = fade_max;
			deljob(fade_id);
		}
		
		
		// Internet Explorer
		if (IE) {
			if ((obj.style.fade_op < fade_max) && IE_EnablePixelate && !fade_f) {
				IE_Filters = ' progid:DXImageTransform.Microsoft.Pixelate(MaxSquare='+(((fade_max-obj.style.fade_op)/2)+1)+')';
			} else {
				IE_Filters = '';
			}
			if (IE_EnableBlur && !fade_f) {
				IE_Filters += ' blur(add=0, direction='+IE_BlurAngle+', strength='+(fade_max-obj.style.fade_op)+')';
			}
			obj.style.filter = 'alpha(opacity='+obj.style.fade_op+')'+IE_Filters;
		// Firefox, Mozilla, Netscape Navigator
		} else if (Gecko) {
			if (fadeongecko) {
				obj.style.MozOpacity = obj.style.fade_op / 100;
				obj.style.opacity = obj.style.fade_op / 100;
			} else {
				if (fade_step > 0)	{
					obj.style.MozOpacity = fade_max / 100;
					obj.style.opacity = fade_max / 100;
				}
				else obj.style.visibility = 'hidden';
			}
		// Opera, etc..
		} else {
			if (fade_step <= 0) obj.style.visibility = 'hidden';
		}
	
	}
}

function fadein(id, fadeonly) {
	if (!getobj(id)) return;
	if (!fadeonly) var fadeonly = 0;
	addjob(id, fadeinspeed, fadeonly);
}

function fadeout(id, fadeonly) {
	if (!getobj(id)) return;
	if (!fadeonly) var fadeonly = 0;
	var obj = getobj(id);
	if (obj.style.fade_op == null) {
		obj.style.fade_op = fade_max;
	}
	addjob(id, -fadeoutspeed, fadeonly);
}



//  menu.js  v2.0  ------------------------------------------------------------

var hide_ms = 200;
//if (IE || Opera) {
	var domenufade = false;
//} else {
//	var domenufade = true;
//}

//--

var selected = new Array();
var selectedstr = new Array();
var level = 0;
var maxlevel = 0;
var bool = false;
var timer;
var i = 0;

function hidemenu(lev) {
	if (!selected[lev]) return;
	if (domenufade)	fadeout(selectedstr[lev]);
	else			selected[lev].style.visibility = 'hidden';
}

function showmenu(lev) {
	if (!selected[lev]) return;
	if (domenufade)	fadein(selectedstr[lev]);
	else			selected[lev].style.visibility = 'visible';
}

function setlevel(newlevel) {
	for (i=maxlevel; i>newlevel; i--) {
		hidemenu(i);
	}
	for (i=0; i<=newlevel; i++) {
		showmenu(i);
	}
	level = newlevel;
}

function hideall() {
	for (var i = 0; i <= maxlevel; i++) {
		if (domenufade)	fadeout(selectedstr[i]);
		else if (selected[i]) {
			selected[i].style.visibility = 'hidden';
		}
	}
}

function stoptimer() {
	if (timer) clearTimeout(timer);
}

function starttimer(newlevel) {
	stoptimer();
	timer = setTimeout("setlevel("+newlevel+")", hide_ms);
}

function mouseout() {
	bool = false;
}

function selectdiv(id, lev) {
	if (!lev) lev = 0;
	bool = true;
	stoptimer();
	if (lev > maxlevel) maxlevel = lev;
	if ((selectedstr[lev] != id) && selected[lev]) hidemenu(lev);

	if (document.all)	selected[lev] = document.all[id];
	else				selected[lev] = document.getElementById(id);
	selectedstr[lev] = id;

	setlevel(lev);
}

function getlevel(obj) {
	for (var i = level; i >= 0; i--) {
		if (obj == selected[i]) return i;
	}
	return -1;
}

function findparent(obj) {
	while(obj) {
		if((obj.tagName == 'DIV') && (getlevel(obj) > -1)) return getlevel(obj);
		obj = obj.parentNode;
	}
	return -1;
}

function onMouseOver(e) {
	if (IE)	var srcElement = event.srcElement;
	else	var srcElement = e.target;
	var newlevel = findparent(srcElement);
	if (newlevel < level) {
		if (bool) {
			stoptimer();
		} else {
			starttimer(newlevel);
		}
	} else if (newlevel == level) {
		stoptimer();
	}

}

function onClick(e) {
	hideall();
}

document.onmouseover = onMouseOver;
document.onclick = onClick;



//  div.js  v1.2  -------------------------------------------------------------

var timer_;

function hide(id) {
	var obj = getobj(id);
	obj.style.visibility = 'hidden';
	obj.style.position = 'absolute';
	//obj.style.left = '0px';
	//obj.style.top = '0px';
}

function toogle(id) {
	var obj = getobj(id);
	if (obj.style.visibility == 'hidden'){
		clearTimeout(timer_);
		obj.style.position = 'relative';
		fadein(id, 1);
	} else {
		fadeout(id, 1);
		timer_ = setTimeout("hide('"+id+"')", (fade_max-fade_min)*2/fadeoutspeed*fade_interval);
	}
}
