var GI = new Object(); GI.app = window;
var I=GI, MRE=new Object();

// construction helpers
function _app_newo(mp) {
	var i, p, o=new Object();
	if (mp) { p=_app_newo.arguments; for (i=1;i<p.length;i++) o[mp[i-1]]=p[i]; }
	return o;
}
function _app_newa() { var i, a=new Array(), p=_app_newa.arguments; for (i=0;i<p.length;i++) a[a.length]=p[i]; return a; }
function _app_newcsv(s) {
	var p=0, n, v, c, a=new Array(), l=0;
	if (!s) return new Array(); n=s.indexOf(',');
	while (n>=0) {
		v=s.substr(p, n-p);p=n+1;
		c=0;while (v.charAt(c)==' ') c++;
		a[l++]=v.substr(c);
		n=s.indexOf(',', p);
	}
	v=s.substr(p);c=0;while (v.charAt(c)==' ') c++;
	if (c<v.length) a[l++]=v.substr(c);
	return a;
}
function _app_newf(b) { return new Function(b); }

// attaching to ch-I
I.O=_app_newo;
I.A=_app_newa;
I.F=_app_newf;
I.CSV=_app_newcsv;

// left menu styles
var FMT_LM = new Object();
FMT_LM._stlMI = "wsMLitm";
FMT_LM._stlST = "wsMLhdr";
FMT_LM._msubI = "Images/mnu-sub.gif";
FMT_LM._msubNI = "Images/mnu-nosub.gif";
FMT_LM.stlPUM = 'wsMLsub';
FMT_LM.fmtPUM = FMT_LM;
// hor menu styles
var FMT_HM = new Object();
FMT_HM._stlMI = "wsMHitm";
FMT_HM._voffs = 3;
FMT_HM.fmtPUM = FMT_LM;

// menu builders
var mMI = I.CSV("tit, ii, stl, sub, act"),
	mMM = I.CSV("fmt, hd, its");

function buildLM() {
	var i, j, mm, mi, mls, itm, c, a = leftMNU, mmd = document.getElementById("oLeftMenu");
	ouf_clear(mmd);
	for (i=a.length-1;i>=0;i--) {
		mm = a[i];
		c = document.createElement("DIV");
		c.className = "wsMLsect";
		mmd.insertBefore(c, mmd.childNodes.length?mmd.childNodes[0]:null);
		mls = new LSTStream.Build(mmd.childNodes[0]);
		mls._fmt = mm.fmt?mm.fmt:FMT_LM;
		if (mm.hd) mls.Ins(new LSTtxtItem.Init(mm.hd));
		for (j=0;j<mm.its.length;j++) {
			mi = mm.its[j];
			mls.Ins(itm=new MNUItem.Init(mi.tit, mi.ii, mi.stl, mi.sub?buildPUM(mi.sub, mls._fmt.fmtPUM):null));
			if (mi.act) buildMNUAct(itm, mi.act);
		}
	}
}
function buildLnM(ma, cid, sep, stlsep, fmt) {
	var i, mi, mm, itm;
	mm = new LSTStream.Build(document.getElementById(cid), 1, 1, 'top');
	mm._fmt=fmt;
	for (i=0;i<ma.length;i++) {
		mi=ma[i]; if (i > 0 && sep) mm.Ins(new MNUSepItem.Init(sep, stlsep));
		mm.Ins(itm=new MNUItem.Init(mi.tit, 0, mi.stl, mi.sub?buildPUM(mi.sub, mm._fmt.fmtPUM):null));
		if (mi.act) buildMNUAct(itm, mi.act);
	}
}
function buildPUM(its, fmt, z) {
	var i, sm, mi, itm;
	if (!z) z=1;
	sm = new MNUPopup.Build(fmt.stlPUM, 200);
	sm._fmt = fmt;
	sm._pbox.style.zIndex=z;
	for (i=0;i<its.length;i++) {
		mi=its[i];
		sm.Ins(itm=new MNUItem.Init(mi.tit, mi.ii, mi.stl, mi.sub?buildPUM(mi.sub, fmt, z+1):null));
		if (mi.act) buildMNUAct(itm, mi.act);
	}
	return sm;
}
function buildMNUAct(itm, act) {
	if (typeof(act) == "function") itm.Act=act;
	else itm.lnk=act, itm.Act=defMnuLnkAct;
}
function defMnuLnkAct() {
	location = this.lnk;
}

// pics
function preloadAltPics() {
	var imgs = document.images;
	for (var i=0; i < imgs.length; i++)
		if (imgs[i].className == "altsrc") {
			var s = imgs[i].src, p = s.lastIndexOf(".");
			if ((p > 0) && (s.substr(p - 1, 1) != "_")) {
				imgs[i].origsrc = s;
				(new Image()).src = imgs[i].altsrc = s.substr(0, p) + "_" + s.substr(p);
				imgs[i].onmouseover = function() { this.src = this.altsrc; }
				imgs[i].onmouseout = function() { this.src = this.origsrc; }
			}
		}
}

// init
function proc_window_onload() {
	preloadAltPics();
	if (MRE.appurl) {
		FMT_LM._msubI = MRE.appurl + FMT_LM._msubI;
		FMT_LM._msubNI = MRE.appurl + FMT_LM._msubNI;
	}
	if (window["leftMNU"]) buildLM();
	if (window["homeMNU"]) buildLnM(homeMNU, 'oHomeMenu', "|", "wsMHsep", FMT_HM);
	if (window["midMNU"] && document.getElementById('oMidMenu')) buildLnM(midMNU, 'oMidMenu', "|", "wsMHsep", FMT_HM);
}
