var DHTML = (document.getElementById || document.all || document.layers);
var validUC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var validLC = "abcdefghijklmnopqrstuvwxyz";
var validNums = "0123456789";
var validPWOther = "\\\'\".+*?[^]$(){}=!<>|:,/;~@#%&_-\`";
var entryMode = 0;
var pupVis = 0;
var wxSto = 0;

function getBrowser() {
	var agent = navigator.userAgent.toLowerCase();
	this.major = parseInt(navigator.appVersion);
	this.minor = parseFloat(navigator.appVersion);
	this.ns = ((agent.indexOf('mozilla') != -1) && ((agent.indexOf('spoofer') == -1) && (agent.indexOf('compatible') == -1)));
	this.ns4 = (this.ns && (this.major == 4));
	this.ns6up = (this.ns && (this.major >= 5));
	this.ff = (agent.indexOf('firefox')!=-1);
	this.ie = (agent.indexOf("msie") != -1);
	this.ie4 = (this.ie && (this.major >= 4));3
	this.mac = (agent.indexOf("mac")!=-1);
	};
	
var browser = new getBrowser();

function getObj(name) {
	if (document.getElementById) {
		this.obj = document.getElementById(name);
		this.style = document.getElementById(name).style;
		}
	else if (document.all) {
		this.obj = document.all[name];
		this.style = document.all[name].style;
		}
	else if (document.layers) {
		this.obj = document.layers[name];
		this.style = document.layers[name];
		}
	return this;
	}

function append_sid(ln) {
	if (top.sessKey!="") {
		if (ln.indexOf('?')==-1) return ln+"?s="+top.sessKey;
		else return ln+"&s="+top.sessKey;
		}
	else return ln;
	}
	
function parseOutPx(str) {	
	var px_i = str.indexOf("px");
	int_r = parseInt(str.substring(0,px_i));
	return int_r;
	}
	
function writeTo(id,message) {
	if (!DHTML) return;
	var ob = new getObj(id);
	ob.obj.innerHTML = message;
	}
	
function getInnerHTML(id) {
	if (!DHTML) return;
	var ob = new getObj(id);
	return ob.obj.innerHTML;
	}

function setVis(id,flag) {
	if (!DHTML) return;
	var ob = new getObj(id);
	ob.style.visibility = (flag) ? 'visible' : 'hidden';
	}
	
function setDisp(id,flag) {
	if (!DHTML) return;
	var ob = new getObj(id);
	ob.style.display = (flag) ? 'inline' : 'none';
	}

function setZind(id,zi) {
	if (!DHTML) return;
	var ob = new getObj(id);
	ob.style.zIndex = zi;
	}

function moveAbs(id,nl,nt) {
	if (!DHTML) return;
	var ob = new getObj(id);
	if (nl!=null) ob.style.left = nl+'px';
	if (nt!=null) ob.style.top = nt+'px';
	}
	
function moveRel(id,dl,dt) {
	if (!DHTML) return;
	var ob = new getObj(id);
	var cl = parseOutPx(ob.style.left);
	if (isNaN(cl)) cl = 0;
	var ct = parseOutPx(ob.style.top);
	if (isNaN(ct)) ct = 0;
	ob.style.left = eval(cl+dl)+'px';
	ob.style.top = eval(ct+dt)+'px';
	}
	
function resizeAbs(id,nw,nh) {
	if (!DHTML) return;
	var ob = new getObj(id);
	if (nw>=0) ob.style.width = nw+'px';
	if (nh>=0) ob.style.height = nh+'px';
	}
	
function resizeRel(id,dw,dh) {
	if (!DHTML) return;
	var ob = new getObj(id);
	var cw = parseOutPx(ob.style.width);
	var ch = parseOutPx(ob.style.height);
	ob.style.width = (cw+dw)+'px';
	ob.style.height = (ch+dh)+'px';
	}
	
function setStyleAttrib(id,st,nw) {
	if (!DHTML) return;
	var ob = new getObj(id);
	eval('ob.style.'+st+'=nw;');
	}
	
function setClass(id,sty) {
	if (!DHTML) return;
	var ob = new getObj(id);
	ob.obj.className=sty;
	}
	
function getLeft(id) {
	if (!DHTML) return;
	var ob = new getObj(id);
	return parseOutPx(ob.style.left);
	}
	
function getTop(id) {
	if (!DHTML) return;
	var ob = new getObj(id);
	return parseOutPx(ob.style.top);
	}
	
function getWidth(id) {
	if (!DHTML) return;
	var ob = new getObj(id);
	return parseOutPx(ob.style.width);
}

function getHeight(id) {
	if (!DHTML) return;
	var ob = new getObj(id);
	return parseOutPx(ob.style.height);
	}
	
function getFilledWidth(id) {
	if (!DHTML) return;
	var ob = document.getElementById(id);
	return ob.clientWidth;
	}
	
function getFilledHeight(id) {
	if (!DHTML) return;
	var ob = document.getElementById(id);
	return ob.clientHeight;
	}
	
function in_array(nd,hs) {
	for (var i=0;i<hs.length;i++) {
		if (nd==hs[i]) return true;
		}
	return false;
	}
	
function createDiv(par,id) {
	var cd = document.createElement('div');
	cd.id = id;
	cd.style.position = 'absolute';
	cd.style.visibility = 'hidden';
	if (par=="body") document.body.appendChild(cd);
	else {
		var ob = new getObj(par);
		ob.obj.appendChild(cd);
		}
	}
	
function getXHR() {
	if (window.XMLHttpRequest) var hr = new XMLHttpRequest(); // mozilla;
	else if (window.ActiveXObject) var hr = new ActiveXObject("Microsoft.XMLHTTP"); // ie;
	else hr = null;
	return hr;
	}
	
function loadJS(fn) {
	var head = document.getElementsByTagName('head').item(0)
	var js = document.createElement('script');
	js.src = 'javascript/'+fn+'.js';
	js.type = 'text/javascript';
	js.id = fn+'_js';
	head.appendChild(js);
	}
	
function loadCSS(fn) {
	var head = document.getElementsByTagName('head').item(0)
	var css = document.createElement('link');
	css.href = 'css/'+fn+'.css';
	css.type = 'text/css';
	css.rel = 'stylesheet';
	css.media = 'screen';
	css.id = fn+'_css';
	head.appendChild(css);
	}
	
function stripInvalidChars(str,valid) {
	var ostr = "";
	if (str.length>0) {
		for (var i=0;i<str.length;i++) {
			if (valid.indexOf(str.charAt(i))>-1) ostr += str.charAt(i);
			}
		}
	return ostr;
	}

function formatZip(zi) {
	zi = stripInvalidChars(zi,validNums).substring(0,9);
	if (zi.length>5)  return zi.substring(0,5)+'-'+zi.substring(5);
	return zi;
	}
	
function formatPhone(ph) {
	ph = stripInvalidChars(ph,validNums).substring(0,10);
	if (ph.length==0) return '';
	else return '('+ph.substring(0,3)+') '+ph.substring(3,6)+'-'+ph.substring(6);
	}
	
function checkCookie() {
	var hr = getXHR();
	if (hr!=null) {
		hr.open('GET','check_cookie.php',false);
		hr.send(null);
		if (hr.responseText==1) sessKey = "";
		}
	}
	
function closePup() {
	pupVis = 0;
	var ob = getObj('dv_pup');
	ob.style.visibility = "hidden";
	ob.obj.innerHMTL = '';
	var ob = getObj('dv_main');
	ob.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=100)";
	}
	
function closePupTimer(sl) {
	if (pupVis==1) {
		sl--;
		if (sl<0) closePup();
		else {
			if (sl>0) var cd = 1000;
			else var cd = 250;
			writeTo('ptcd_sp',sl);
			setTimeout('closePupTimer('+sl+');',cd);
			}
		}
	}
	
function pupLoader(pg,w,h,l,t) {
	if (pg.indexOf('.php')==-1) alert('missing .php');
	var hr = getXHR();
	if (hr!=null) {
		hr.open('GET',append_sid(pg),false);
		hr.send(null);
		var rt = hr.responseText;
		if (rt!="<!--nos-->"&&rt!="<!-not_auth-->") {
			var ob = getObj('dv_main');
			ob.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=40)";
			var ob = getObj('dv_pup');
			ob.obj.innerHTML = rt;
			ob.style.left = l;
			ob.style.top = t;
			ob.style.width = w;
			ob.style.height = h;
			ob.style.visibility = "visible";
			pupVis = 1;
			}
		}
	}
	
function getPupComment(cod) {
	if (cod.substring(0,4)=="<!--") {
		var ep = cod.substring(4).indexOf("-->");
		return cod.substring(4,4+ep);
		}
	else return "";
	}
	
function procLogout() {
	var hr = getXHR();
	if (hr!=null) {
		hr.open('GET','logout.php',false);
		hr.send(null);
		var rt = hr.responseText;
		if (rt.substring(0,15)=="<!--accepted-->") {
			var ob = getObj('dv_pup');
			ob.obj.className = 'pup_dv';
			ob.obj.innerHTML = rt;
			ob.style.left = 300;
			ob.style.top = 200;
			ob.style.width = 250;
			ob.style.height = 150;
			ob.style.visibility = "visible";
			pupVis = 1;
			setTimeout('closePupTimer(5);',1000);
			hr.open('GET',append_sid('user_info.php'),false);
			hr.send(null);
			writeTo('dv_ui',hr.responseText);
			}
		}
	}
	
var trArr = new Array("tr_pilot","tr_instructor","tr_airplane","tr_airport");
var dtrArr = new Array();
dtrArr[0] = new Array(0,0,0,0);
dtrArr[1] = new Array(1,0,1,1);
dtrArr[2] = new Array(1,1,1,1);
dtrArr[3] = new Array(1,1,0,1);
dtrArr[4] = new Array(1,1,1,1);
dtrArr[5] = new Array(1,1,1,1);
dtrArr[6] = new Array(1,1,1,1);
dtrArr[7] = new Array(1,1,0,1);
dtrArr[8] = new Array(1,0,1,1);
dtrArr[9] = new Array(1,0,1,1);
dtrArr[10] = new Array(1,1,1,1);
dtrArr[11] = new Array(1,1,0,1);
dtrArr[12] = new Array(1,0,1,1);
dtrArr[13] = new Array(1,1,1,1);
dtrArr[14] = new Array(1,1,0,1);
dtrArr[15] = new Array(1,0,1,1);

function procEventType(ev) {
	for (var i=0;i<4;i++) {
		var ob = getObj(trArr[i]);
		if (dtrArr[ev][i]==1) ob.style.display = '';
		else ob.style.display = 'none';
		}
	}
	
function subForm(fn,sv,act,pg) {
	var sva1 = sv.split(',');
	var hr = getXHR();
	if (hr!=null) {
		var sva2 = new Array();
		for (var i=0;i<sva1.length;i++) {
			sva1s = sva1[i].split(':');
			switch(sva1s[0]) {
				case "c":
					eval('if (document.'+fn+'.'+sva1s[1]+'.checked) var vl = 1; else var vl = 0;');
					break;
				case "h":
				case "s":
				case "t":
					eval('var vl = document.'+fn+'.'+sva1s[1]+'.value;');
					break;
				}
			sva2[sva2.length] = sva1s[1]+'='+vl;
			}
		}
	if (sessKey!="") sva2[sva2.length] = 's='+sessKey;
	sva2[sva2.length] = 'a='+act;
	hr.open('POST',pg,false);
	hr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	hr.send(sva2.join('&'));
	var rt = hr.responseText;
	writeTo('dv_pup',rt);
	var pc = getPupComment(rt);
	if (pc.substring(0,4)=="code") eval(pc.substring(5));
	}
	
function loadWX(id) {
	clearTimeout(wxSto);
	var hr = getXHR();
	if (hr!=null) {
		hr.open('GET',append_sid('weather.php?id='+id),false);
		hr.send(null);
		var rt = hr.responseText;
		var pca = getPupComment(rt).split(':');
		var ob = getObj('sp_wx_hdr');
		ob.obj.innerHTML = pca[0];
		var ob = getObj('dv_wx_dat');
		ob.obj.innerHTML = rt;
		wxSto = setTimeout('loadWX('+id+');',pca[1]*1000);
		}
	}
