var slide =	[0,1,2,3,4,5,6,7,8,10,12,14,16,18,20,23,26,29,32,36,40,44,48,52,56,60,64,68,71,74,77,80,82,84,86,88,90,91,92,93,94,91,96,97,98,99,100];
var swift =	[0,2,4,6,8,12,16,20,26,32,40,48,56,64,71,77,82,86,90,92,94,96,98,100];
var slice = [0,0.125,0.25,0.5,0.75,1,1.33,1.67,2,2.5,3,4,6,9,12,16,20,25,30,35,40,50,60,80,100];
var slip = [0,10,20,40,100]
var tick = 0;

var ua = "xx";
var vpw = 800;
var vph = 600;

var xhrhalt = false;
var xhrstack = [[""]];
var xhractive = 0;
var xhrclear = null;
var vistrans = null;
var vispd = 25;
var tmspd = 12;
var anim_on = true;
var finalized = false;
var snappers = null;
var tabmenu = null;
var panicTitle = null;

var waiter = null;
var debug_panic = 20;

function ready() { setInterval("animate()",20); }
function animate() { processXHRStack(); }
function pushXHR(uri,container) { xhrstack[xhrstack.length] = [uri,container,null]; }
function pushXHR(uri,container,parameters) { xhrstack[xhrstack.length] = [uri,container,parameters]; }
function immediateXHR(uri,container) { immediateXHR(uri,container,null); }
function immediateXHR(uri,container,parameters) {
	xhrhalt = true;
	
	var xhr = null;
	if (window.XMLHttpRequest) {
		xhr = new XMLHttpRequest();
	} else {
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	}
	xhractive+=1;
	if (parameters==null) {
		uri = uri + (uri.indexOf("?")==-1 ?"?":"&")+"jx=1";
		xhr.open("GET",uri,true);
		xhr.onreadystatechange = function() { xhrHandler(xhr,uri,container); };
		xhr.send(null);
	} else {
		parameters = "jx=1&"+parameters;
		xhr.open("POST",uri,true);
		xhr.onreadystatechange = function() { xhrHandler(xhr,uri,container); };
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xhr.setRequestHeader("Content-length", parameters.length);
		xhr.setRequestHeader("Connection", "close");
		xhr.send(parameters);
	}
}
function xhrHandler(xhr,uri,container) {
	if (xhr==null) return;
	if ((xhr.readyState == 4) && (xhr.status == 200)) {
		var i = -1;
		var callback = null;
		var text = xhr.responseText;
		if (text.indexOf("<!--callback:")!=-1) {
			callback = text.substring(text.indexOf("<!--callback:")+14,text.indexOf(" -->"));
			text = text.substring(0,text.indexOf("<!--callback:"));
			if (container!=null) {
				var e = top.dgebi(container);
				if ( (e) && (typeof(e)!="undefined") ) {
					if ((e.nodeName.toLowerCase()=="textarea") | (e.nodeName.toLowerCase()=="input")) {
						e.value = text;
					} else {
						e.innerHTML = text;
					}
				}
			}
			eval(callback);
		} else {
			if (container!=null) {
				var e = top.dgebi(container);
				if ( (e) && (typeof(e)!="undefined") ) {
					if ((e.nodeName.toLowerCase()=="textarea") | (e.nodeName.toLowerCase()=="input")) {
						e.value = text;
					} else {
						e.innerHTML = text;
					}
				}
			}
		}
		xhrhalt = false;
		xhractive-=1;
	}
}
function processXHRStack() {
	if (!xhrhalt) {
		if (xhrstack.length!=0) {
			if (waiter) { waiter.style.display = "block"; waiter.style.top = ""+getPageYOffset()+"px"; }
			uri = xhrstack[0][0];
			container = xhrstack[0][1];
			parameters = xhrstack[0][2];
			if ((uri!=null) && (uri!="")) {
				immediateXHR(uri,container,parameters);
			}

			var s = [];
			var i = -1;
			while (++i < xhrstack.length-1) {
				s[i] = xhrstack[i+1];
			}
			xhrstack = s;
		} else {
			if (waiter) { waiter.style.display = "none"; }
			if (xhrclear!=null) {
				var x = xhrclear;
				xhrclear = null;
				eval(x);
			}
		}
	}
}
function findID(root,name) {
	if (!root) return null;
	if (root.hasChildNodes()) {
		var i = -1;
		while (++i < root.childNodes.length) {
			var find = findID(root.childNodes[i]);
			if (find) {
				return find;
			}
		}
	} else {
		if (root.id == name) {
			return root;
		} else {
			return null;
		}
	}
}
function getPageXOffset() {
	return window.pageXOffset ? window.pageXOffset : document[(document.compatMode == 'CSS1Compat') ? 'documentElement' : 'body'].scrollLeft;
}
function getPageYOffset() {
	return window.pageYOffset ? window.pageYOffset : document[(document.compatMode == 'CSS1Compat') ? 'documentElement' : 'body'].scrollTop;
}

function offX(e) {
	if (typeof(e)=="string") e = dgebi(e);
	var b = document.getElementsByTagName("body")[0];
	var x = 0;
	if (e.style.position=="absolute") {
		x = e.offsetLeft-e.scrollLeft;
	} else {
		while ((e!=null) && (e!=b) && (e.style.position!="absolute")) {
			x = x + e.offsetLeft-e.scrollLeft;
			if ((e.parentNode) && (e.parentNode.scrollLeft)) x = x - e.parentNode.scrollLeft;
			e = e.offsetParent;
		}
	}
	return x;
}
function offY(e) {
	var s = "";
	if (typeof(e)=="string") e = dgebi(e);
	var b = document.getElementsByTagName("body")[0];
	var y = 0;
	if (e.style.position==="absolute") {
		y = e.offsetTop-e.scrollTop;
	} else {
		while ((e!=null) && (e!=b) && (e.style.position!="absolute")) {
			y = y + e.offsetTop-e.scrollTop;
			if ((e.parentNode) && (e.parentNode.scrollTop)) y = y - e.parentNode.scrollTop;
			e = e.offsetParent;
		}
	}
	return y;
}
function siteDialog(t,b) { alert(b); }
