var ue1_curr_popup = "";
var ue1_curr_popup_i = 0;
var hovering_popup = false;
var create_timer = "";
var destroy_timer = "";
var fade_timer = new Array();
var fade_speed = 3; // How many miliseconds between each percentage of fade

function ue1_show(i) {
	if (! document.getElementById ) {
		// If we don't support DOM, don't try to run
		return;
	}
	if (hovering_popup) { return; }
	if (ue1_curr_popup_i == i) {
		if (destroy_timer) {
			clearTimeout(destroy_timer);
			destroy_timer = "";
		}
		return;
	}
	var create_delay = 500;
	if (ue1_curr_popup) {
		if (destroy_timer) {
			clearTimeout(destroy_timer);
		}
		destroy_timer = setTimeout("ue1_destroy("+ue1_curr_popup_i+")", 500);
		create_delay += 600;
	}
	if (create_timer) {
		clearTimeout(create_timer);
		create_timer = "";
	}
	create_timer = setTimeout("ue1_create("+i+")", create_delay);
}

function ue1_create(i) {
	ue1_event = document.getElementById("ue1-"+i);

	ue1_curr_popup_i = i;
	ue1_curr_popup = document.createElement("div");
	ue1_curr_popup.innerHTML = popup[i];
	ue1_curr_popup.style.position = 'absolute';
	if (ue1_curr_popup.addEventListener) {
		// Unfortunately, not everybody supports this method. If they
		// don't, then the popup just disappears sooner
		ue1_add_event(ue1_curr_popup, "mouseover", ue1_popup_hover);
		ue1_add_event(ue1_curr_popup, "mouseout", ue1_popup_unhover);
	}

	// Make this fully transpartent so we can fade in
	ue1_curr_popup.style.opacity = 0;
	ue1_curr_popup.style.MozOpacity = 0;
	ue1_curr_popup.style.filter = "alpha(opacity=0)";

	ue1_event.parentNode.appendChild(ue1_curr_popup);

	// Set up the fade....
	for (var f = 1; f <= 100; f++) {
		fade_timer[f] = setTimeout("ue1_fade("+f+", true)", (f * fade_speed));
	}

}

function ue1_fade(f, fade_in) {
	var o = ue1_curr_popup;
	if (o) {
		var opacity = fade_in ? f : (101 - f);
		o.style.opacity = opacity  / 100;
		o.style.MozOpacity = opacity / 100;
		o.style.filter = "alpha(opacity="+opacity+")";
		clearTimeout(fade_timer[f]);
		fade_timer[f] = "";
	} else {
		ue1_stop_fade();
	}
}

function ue1_stop_fade() {
	for (var f = 100; f >= 1; f--) {
		if (!fade_timer[f]) {
			// We're done
			return;
		}
		clearTimeout(fade_timer[f]);
		fade_timer[f] = "";
	}
}

function ue1_hide(i) {
	if (! document.getElementById ) {
		// If we don't support DOM, don't try to run
		return;
	}
	if (hovering_popup) { return; }
        if (create_timer) {
                clearTimeout(create_timer);
                create_timer = "";
        }
	if (ue1_curr_popup) {
		destroy_timer = setTimeout("ue1_destroy("+i+")", 800);
	}
}

function ue1_destroy(i) {
	// Set up the fade....
	ue1_stop_fade();
	for (var f = 1; f <= 100; f++) {
		fade_timer[f] = setTimeout("ue1_fade("+f+", false)", (f * fade_speed));
	}
	setTimeout("ue1_remove_popup("+i+")", (101 * fade_speed));
}

function ue1_remove_popup(i) {
	ue1_event = document.getElementById("ue1-"+i);
	if (ue1_curr_popup) {
		ue1_curr_popup.parentNode.removeChild(ue1_curr_popup);
	}
	ue1_curr_popup = "";
	ue1_curr_popup_i = 0;
	if (destroy_timer) {
		clearTimeout(destroy_timer);
		destroy_timer = "";
	}
	hovering_popup = false; // There's no popup to hover
}

function ue1_popup_hover() {
	hovering_popup = true;
	if (destroy_timer) {
		clearTimeout(destroy_timer);
		destroy_timer = "";
	}
}

function ue1_popup_unhover() {
	hovering_popup = false;
}

function ue1_add_event(o, type, fn) {
	if (o.addEventListener) {
		o.addEventListener(type, fn, false);
		return true;
	} else if (o.attachEvent) {
		return o.attachEvent("on"+type, fn);
	} else {
		return false;
	}
}

var popup = new Array();