
function aaEv(o,f,a,b,c) {return function(e){return o[f](this,aaEvent(e),a,b,c)}}
function aaEvent(e) {if(typeof(e)=='undefined'&&typeof(window.event)!='undefined')return window.event;return e}
function aaSetCookie(nn,vv,dd,path) {
	var ck = nn + '=' + escape(vv);
	if (dd && dd > 0) {
		var date = new Date();
		date.setTime(date.getTime() + (dd * 86400000));
		ck += '; expires=' + date.toGMTString();
	}
	ck += '; path=' + (path || '/');
	document.cookie = ck;
}
function aaClearCookie(nn,path) {
	var date = new Date();
	date.setTime(date.getTime()-(3000*24*60*60*1000));
	ck = nn + '=; expires=' + date.toGMTString();
	ck += '; path=' + (path || '/');
	document.cookie = ck;
}
function aaGetCookie(name,dfalt) {
	var v = unescape(aaReadRawCookie(name,document.cookie));
	return v ? v : dfalt;
}
function aaReadRawCookie(nm,ck) {
	var ar,ln,nl,i;
	nm += '=';
	if (ck) ar = ck.split(';');
	else ar = new Array();
	ln = ar.length;
	nl = nm.length;
	document.coCnt = ln;
	for (i=0;i<ln;i++) {	// clip any leading space
		while (ar[i].charAt(0) == ' ') ar[i] = ar[i].substr(1);
	}
	for (i=0;i<ln;i++) {
		if (ar[i].substr(0,nl) == nm) return ar[i].substr(nl);
	}
	return '';
}
function aaEndEvent(e) {
	e = aaEvent(e);
	e.returnValue = false;
	e.cancelBubble = true;
	e.cancel = true;
	if (e.preventDefault) e.preventDefault();
	if (e.stopPropagation) e.stopPropagation();
	return false;
}

/////////////////////////////////////////////////////////////////////////////////////////

function phpLogon() {
	window.onkeydown = aaEv(this,'onkeydown');
	window.password = aaGetCookie('appPassword');
	window.myVL = this;
	this.invalids = 0;
	this.maxInvalids = 5;
	if (window.phpLogonFailed) this.showLogon('Invalid Credentials');
}

phpLogon.prototype.onkeydown = function(ec,e) {
	e = e || event;
	if (e.keyCode == 13) {
		this.doLogon();
		return aaEndEvent(e);
	}
	if (e.keyCode == 76 && e.shiftKey) {this.showLogon(); return aaEndEvent(e)};
	if (e.keyCode == 27) {this.hide(); return aaEndEvent(e)};
	return true;
}

phpLogon.prototype.showLogon = function(msg) {
	var el = this.logonEl;
	msg = msg || 'Please supply password';
	if (!el) {
		el = document.getElementsByTagName('body')[0].appendChild(document.createElement('div'));
		el.style.zIndex = 999;
		el.style.position = 'absolute';
		el.style.top = '50px';
		el.style.left = '50px';
		el.innerHTML = this.logonLayer;
		this.logonEl = el;
		this.msgEl = document.getElementById('phpLogonMsg');
		this.keyEl = document.getElementById('phpLogonPassword');
	}
	el.style.display = null;
	if (this.msgEl) this.msgEl.innerHTML = msg;
	if (this.keyEl) {
		this.keyEl.blur();
		this.keyEl.focus();
	}
}

phpLogon.prototype.hide = function() {
	if (this.logonEl) this.logonEl.style.display = 'none';
	if (this.keyEl) this.keyEl.blur();
}

phpLogon.prototype.cancel = function() {
	this.hide();
	aaClearCookie('appPassword');
	window.location.reload();
}

phpLogon.prototype.doLogon = function() {
	this.hide();
	var pw = this.keyEl.value.replace(/^\s+|\s+$/g,'');
	if (pw.length) {
		aaSetCookie('appPassword',pw);
		window.location.reload();
	}
	else aaClearCookie('appPassword');
}

phpLogon.prototype.logonLayer = '\
	<div style="padding:3px 20px 3px 20px;background-color:#FFFFFF;border:3px double #000099;font-family:arial,helvetica,verdana;font-size:13px;">\
	<div id="phpLogonMsg" style="text-align:center;font-weight:bold;padding:3px 20px 3px 20px"></div>\
	<form method="POST" action="'+window.location.href+'" onsubmit="return false">\
	<input id="phpLogonPassword" name="password" type="password" value=""/>\
	<input name="login" type="button" value="continue" size="12" onclick="myVL.doLogon(); return false"/>\
	<input name="cancel" type="button" value="cancel" onclick="myVL.cancel(); return false"/>\
	</form>\
	</div>\
';

window.myVl = new phpLogon();




function allClass() {
	this.mvHandlers = [];
	this.kyHandlers = [];
	this.svHandlers = [];
	this.szHandlers = [];
	this.args = new Object();
	document.onmousemove = this.evMousemove;
	window.onresize = this.evResize;
	this.scripts = 'lib.all.js';
	this.regscpt = 'lib.all.js';
	window.myArgs = this.args;
	this.uniVal = 0;
}

allClass.prototype.uni = function(ev) {return ++this.uniVal}

allClass.prototype.evMousemove = function(ev) {
	if (!ev) ev = event;
	var xy = myAll.scr();
	document.msx = ev.clientX+xy[0];
	document.msy = ev.clientY+xy[1];
	if (window.myMenu) window.myMenu.mousemove(ev);
	var l = myAll.mvHandlers.length;
	for (var i=0;i<l;i++) myAll.mvHandlers[i](ev);
}

allClass.prototype.evResize = function(ev) {
	if (!ev) ev = event;
	for (var i=0;i<myAll.szHandlers.length;i++) myAll.szHandlers[i](ev);
}

allClass.prototype.addMvHandler = function(f) {return this.mvHandlers.add(f)}
allClass.prototype.remMvHandler = function(h) {this.mvHandlers.zap(h)}
allClass.prototype.addKyHandler = function(f) {return this.kyHandlers.add(f)}
allClass.prototype.remKyHandler = function(h) {this.kyHandlers.zap(h)}
allClass.prototype.addSvHandler = function(f) {return this.svHandlers.add(f)}
allClass.prototype.remSvHandler = function(h) {this.svHandlers.zap(h)}
allClass.prototype.addSzHandler = function(f) {return this.szHandlers.add(f)}
allClass.prototype.remSzHandler = function(h) {this.szHandlers.zap(h)}

allClass.prototype.scr = function() {
	var scrOfX = 0, scrOfY = 0;
	if(typeof(window.pageYOffset) == 'number') {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	return [scrOfX,scrOfY];
}

allClass.prototype.loadScript = function(url) {
	var u, n = om+'/'+url;
	if (window.myScriptHost) u = myScriptHost+'/om/'+url;
	else u = n;
	if (this.scripts.indexOf(n) == -1) {
		this.scripts += ','+n;
		var scp = document.createElement('script');
		scp.setAttribute('language',"JavaScript");
		dbg.trace('loading library',u);
		document.getElementsByTagName('body')[0].appendChild(scp);
		scp.setAttribute('src',u);
	}
}

allClass.prototype.regScript = function(url) {
	var u = om+'/'+url;
	if (this.regscpt.indexOf(u) == -1) this.regscpt += ','+u;
}

allClass.prototype.waitScript = function(url,f,a,b,c) {
	var u = om+'/'+url;
	this.loadScript(url);
	if (this.regscpt.indexOf(u) == -1) setTimeout(function(){myAll.waitScript(url,f,a,b,c)},100);
	else {
		dbg.trace('successfully loaded',url);
		if (typeof(f)=='function') f(a,b,c);
	}
}

allClass.prototype.doScript = function(nm,url,a,b,c) {
	try {
	if (!this.args[nm]) this.args[nm] = new Object();
	this.args[nm].arg1 = a;
	this.args[nm].arg2 = b;
	this.args[nm].arg3 = c;
	if (window[nm] && window[nm].instance) window[nm].instance(a,b,c);
	else this.loadScript(url);
	} catch (ex) {dbg.ex('allClass.doScript',ex)}
}

// a,b,c = args passed to instance()
allClass.prototype.doCom = function(url,a,b,c) {
	var n = 'myLib_'+url.safeName();
	//dbg.trace('doAutoScript name',n);
	this.doScript(n,url,a,b,c);
}

// a,b,c = args passed to new fn()
allClass.prototype.regCom = function(url,fn,a,b,c) {
	try {
	var n = 'myLib_'+url.safeName();
	window[n] = new fn(a,b,c);
	if (window[n] && window[n].instance)
		window[n].instance(myArgs[n].arg1,myArgs[n].arg2,myArgs[n].arg3);
	dbg.trace('successfully loaded '+url);
	} catch (ex) {dbg.ex('allClass.regCom',ex)}
}

allClass.prototype.waitFor = function(nm) {
	while (!window[nm]) myAll.pause(100);
}

allClass.prototype.pause = function(ms){var n=new Date();var ex=n.getTime()+ms;while(true){n=new Date();if(n.getTime()>ex)return;}}


window.myAll = new allClass();

window.isIE=window.navigator.appVersion.indexOf('MSIE')!=-1;
window.isSafari=window.navigator.appVersion.indexOf('Safari')!=-1;

if (typeof(String.trim)=='undefined') String.prototype.trim=function(){a=this.replace(/^\s+/,'');return a.replace(/\s+$/,'')}
String.prototype.pathEnd=function(){var e=this.split('?')[0].split('/');return e[e.length-1]}
String.prototype.pathFront=function(p){var e=this.pathEnd().length;return this.split('?')[0].substr(0,this.length-e-1)}
String.prototype.safeName=function(){return this.replace(/\./g,'_')}
String.prototype.trimSlash=function(){a=this.replace(/^\/+/,'');return a.replace(/\/+$/,'')}
String.prototype.trimEndSlash=function(){return this.replace(/\/+$/,'')}
String.prototype.xtrimSlash=function(p){var s=0,e=p.length;if(p.substr(0,1)=='/')s++;if(p.substr(e-1,1)=='/')e--;return p.substr(s,e)}


if(typeof Array.prototype.zap=="undefined"){Array.prototype.zap=function(idx){var l=this.length;if(idx<l&&idx>=0){var i=0;var j=0;while(j<l){if(j==idx)i--;else this[i]=this[j];i++;j++;}this.length=l-1;}}}
if(typeof Array.prototype.add=="undefined"){Array.prototype.add=function(h){var l=this.length;this[l]=h;return l}}

function aaUseKeys(f) {document.onkeyup = f; window.onkeyup = f}
function aaUseDefaultKeys() {aaUseKeys(window.defaultKeyHandler)}
function aaSetDefaultKeys(f) {window.defaultKeyHandler = f}
function aaEvent(e) {if(typeof(e)=='undefined'&&typeof(window.event)!='undefined')return window.event;return e}
function aaFn(o,f) {return function(a,b,c){return o[f](a,b,c)}}
function aaCall(o,f,a,b,c) {return function(){return o[f](a,b,c)}}
function aaFnpt(o,f) {return function(a,b,c){return o[f](this,a,b,c)}}
//function aaFnpa(o,f,a,b,c) {return function(){return o[f](a,b,c)}}
function aaNada(){}

function aaSetCookie(nn,vv,dd,path) {
	var ck = nn + '=' + escape(vv);
	if (dd && dd > 0) {
		var date = new Date();
		date.setTime(date.getTime() + (dd * 86400000));
		ck += '; expires=' + date.toGMTString();
	}
	ck += '; path=' + (path || '/');
	document.cookie = ck;
}
function aaClearCookie(nn,path) {
	var date = new Date();
	date.setTime(date.getTime()-(3000*24*60*60*1000));
	ck = nn + '=; expires=' + date.toGMTString();
	ck += '; path=' + (path || '/');
	document.cookie = ck;
}
function aaGetCookie(name) {
	return unescape(aaReadRawCookie(name,document.cookie));
}
function aaReadRawCookie(nm,ck) {
	var ar,ln,nl,i;
	nm += '=';
	if (ck) ar = ck.split(';');
	else ar = new Array();
	ln = ar.length;
	nl = nm.length;
	document.coCnt = ln;
	for (i=0;i<ln;i++) {	// clip any leading space
		while (ar[i].substr(0,1) == ' ') ar[i] = ar[i].substr(1);
	}
	for (i=0;i<ln;i++) {
		if (ar[i].substr(0,nl) == nm) return ar[i].substr(nl);
	}
	return '';
}
function aaEndEvent(e) {
	e = aaEvent(e);
	e.returnValue = false;
	e.cancelBubble = true;
	e.cancel = true;
	if (e.preventDefault) e.preventDefault();
	if (e.stopPropagation) e.stopPropagation();
	return false;
}

function aaFileName() {
	var p = document.location.pathname.split('/');
	return p[p.length-1];
}

function aaLoadCss(url) {
	var css = document.createElement('link');
	css.setAttribute('rel',"stylesheet");
	css.setAttribute('type',"text/css");
	css.setAttribute('href', url);
	document.getElementsByTagName('head')[0].appendChild(css);
}

function xxValidateLogon() {
	var pwd = false;
	if (window.logonOK != true) pwd = unescape(aaReadRawCookie('ompwd',document.cookie));
	if (pwd && pwd.length >= 8) {
		window.logonOK = true;
		window.ompwd = pwd;
	}
}

// Default debug handler
function xxDbg() {myDbgTrc=''}
xxDbg.prototype.ex = function(n,v) {dbg.trace(n,v)}
xxDbg.prototype.warn = function(n,v) {dbg.trace(n,v)}
xxDbg.prototype.dump = function(o) {dbg.trace(o)}
xxDbg.prototype.trace = function(n,v) {myDbgTrc+=n+'='+v+'\n'}
xxDbg.prototype.error = function(n,v) {alert(n+"="+v)}
xxDbg.prototype.autovar = function(vtx) {dbg.trace(vtx)}
window.dbg = new xxDbg();

xxValidateLogon();

function oPath(p,a,b,c) {return aaPath(p,a,b,c)}

function aaPath(p,a,b,c) {
	var n = p.substr(0,3);
	var e = p.substr(3);
	switch (n) {
	case 'DIR': return aaJoin(omDir,e,a,b,c);
	case 'SRC': return aaJoin(omSrc,e,a,b,c);
	case 'ACT': return aaJoin(omLcl,e,a,b,c);
	case 'TOP': return aaJoin(omTop,e,a,b,c);
	case 'URT': return aaJoin(omUrt,e,a,b,c);
	case 'URL': return aaJoin(omUrl,e,a,b,c);
	case 'PAG': return omLpp+omDir.substr(1)+'/'+aaJoin(aaFileName(),a,b,c);
	}
	return p;
}

function aaJoin(a,b,c,d,e) {
	var o = '';
	if (a) o = a.trimEndSlash();
	if (b) o += '/' + b.trimSlash();
	if (c) o += '/' + c.trimSlash();
	if (d) o += '/' + d.trimSlash();
	if (e) o += '/' + e.trimSlash();
	return o;
}

function aaMkFull(p) {
	if (p.indexOf('://')!=-1) return p;
	if (p.indexOf('../')==-1)
		return aaJoin(window.location.protocol+'//'+window.location.host,p);
	var wl = window.location.toString().split('?')[0];
	return aaJoin(wl.pathFront(),p);
}

function aaScript() {
	var ee = document.getElementsByTagName('script');
	if (!ee) return null;
	var src,sar;
	for (var i=0;i<ee.length;i++) {
		src = ee[i].src;
		if (typeof(src)=='string'&&src.length) {
			sar = src.split('?')[0].split('/');
			window.omAllNm = sar[sar.length-1];
			if (omAllNm=='lib.all.js'||omAllNm=='ld.all.php') break;
		}
	}
	return aaMkFull(src);
}

{
	// omSrc (om) - the relative or full url to the static scripts folder
	// Allowed to be preset
	var s,h,i;
	var src = aaScript();
	if (!window.omSrc)
		omSrc = src.substr(0,src.length-omAllNm.length-1);
	else
		src = aaMkFull(aaJoin(omSrc,omAllNm));
	omSrc = om = omSrc.trimEndSlash();
	//alert('omSrc='+omSrc+',src='+src);

	// omUrt (oa) - the relative or full url to the project folder
	// Allowed to be preset
	if (!window.omUrt) {
		var h1 = window.location.toString().split('://')[1].split('/')[0];
		var h2 = src.split('://')[1].split('/')[0];
		if (h1==h2)
			omUrt = src.substr(0,src.length-omAllNm.length-4); // same host so assume 1 up from /om
		else {
			omUrt = window.location.toString().pathFront(); // diff host so assume current is project folder
		}
	} else omUrt = omUrt.trimEndSlash();
	// If omUrt is not full make it full
	omUrt = aaMkFull(omUrt);
	//if (omUrt.indexOf('://')==-1) omUrt = aaJoin(window.location.protocol+'//'+window.location.host,omUrt);

	// omTop - the relative project folder
	s = omUrt.split('://');
	s = omUrt.substr(s[0].length+3);
	h = s.split('/');
	omTop = s.substr(h[0].length);

	// omLcl - the local action script folder
	omLcl = oa = aaJoin(omUrt,'om');

	// omDir - the relative folder the page came from
	s = window.location.pathname.split('/');
	omDir = window.location.pathname.substr(0,window.location.pathname.length-s[s.length-1].length-1);

	// omUrl - the full url to the page folder
	//omUrl = omUrt + omDir.substr(omTop.length);
	omUrl = aaMkFull(omDir);

	omLpp = '';
	var n = 0;
	for (var i=0;i<omDir.length;i++) {if (omDir.substr(i,1)=='/') n++}
	for (var i=0;i<n;i++) omLpp+='../';
	omLvl = n;
}

//document.write('<link href="'+aaPath('SRC/edit.css')+'" type="text/css" rel="stylesheet" />');
aaLoadCss(aaPath('SRC/edit.css'));

if (window.logonOK != true) document.write('\
<script src="'+aaPath('SRC/lib.debug.js')+'" language="JavaScript"></script>\
<script src="'+om+'/lib.box.js" language="JavaScript"></script>\
<script xxsrc="'+om+'/lib.doit.js" language="JavaScript"></script>\
<script zzsrc="'+om+'/lib.logon.js" language="JavaScript"></script>\
<script src="'+om+'/lib.style.js" language="JavaScript"></script>\
');

else {
if (!window.myCustomLoad) document.write('\
<script src="'+om+'/lib.debug.js" language="JavaScript"></script>\
<script src="'+om+'/lib.common.js" language="JavaScript"></script>\
<script src="'+om+'/lib.box.js" language="JavaScript"></script>\
<script src="'+om+'/lib.doit.js" language="JavaScript"></script>\
<script src="'+om+'/lib.logon.js" language="JavaScript"></script>\
<script src="'+om+'/lib.edit.js" language="JavaScript"></script>\
<script src="'+om+'/lib.pullout.js" language="JavaScript"></script>\
<script src="'+om+'/lib.om.js" language="JavaScript"></script>\
<script src="'+om+'/lib.menu.js" language="JavaScript"></script>\
<script src="'+om+'/lib.menubar.js" language="JavaScript"></script>\
<script src="'+om+'/lib.style.js" language="JavaScript"></script>\
');
}



