var WN = window, DC = document, IE = DC.all, DM = DC.getElementById && !(IE), OP = WN.opera, PageLoaded = 0;
DC.onload = FinishPage;
String.prototype.re = String.prototype.replace;

function By(x) {
	//if (x.charAt(0) == 'S') alert(x);
	var i, o = DC.getElementById(x);
	return El(o);
}

function El(o) {
	if (Exists(o) && !o.s) {
		o.s = o.style;
		o.C = function(v) {
			return this.className = Exists(v) ? v : this.className;
		}
		o.X = function(v) {
			return this.innerHTML = Exists(v) ? v : this.innerHTML;
		};
		o.V = function(v) {
			if (!Exists(v)) return this.s.visibility == 'hidden' ? 0 : 1;
			this.s.visibility = v ? 'visible' : 'hidden';
			return v;
		};
		o.O = function(v) {
			var s = this.s;
			s.opacity = s.MozOpacity = s.KhtmlOpacity = v / 100;
		    s.filter = 'alpha(opacity=' + v + ')';
		};
		o.S = function(s, v) {
			var n, o = this;
			if (Exists(v)) return o[s] = o.s[s] = v;
			n = 'client'+UCWords(s);
			return Exists(o[n]) ? o[n] : Exists(o[s]) ? o[s] : o.s[s];
		};
		o.T = function(v){return this.S('top', v)}
		o.L = function(v){return this.S('left', v)}
		o.W = function(v){return this.S('width', v)}
		o.H = function(v){return this.S('height', v)}
		o.D = function(v){return this.S('display', v)}
		o.B = function(v){return this.S('background', v)}
		o.R = function(v){return this.S('color', v)}
		//var p = {T:'top', L:'left', W:'width', H:'height', D:'display', B:'background', R:'color'};
		//for (n in p) o[n] = eval("function(v) {return this.S('"+p[n]+"', v)}");
	}
	return o;
}

function Exists(v) {
	return (typeof v) != 'undefined';
}

function XY(e) {
	var o = DC.compatMode && DC.compatMode != 'BackCompat' ? DC.documentElement : DC.body, x = DM ? e.pageX : event.x + o.scrollLeft, y = DM ? e.pageY : event.y + o.scrollTop, m = IE && !WN.opera, w = m ? o.clientWidth : WN.innerWidth - 20, h = m ? o.clientHeight : WN.innerHeight - 20, r = (m ? w - event.clientX : w - e.clientX) - 12, b = (m ? h - event.clientY : h - e.clientY) - 10;
	return [x, y, w, h, r, b];
}

function IEBody() {
	return (DC.compatMode && DC.compatMode != 'BackCompat') ? DC.documentElement : DC.body;
}

var Img = new Object(), MasterTry = new Object();

LoadImgs('sidenav', 'sidenavon', 'spacer', 'required', 'requiredsmall', 'ok', 'oksmall', 'warning', 'warningsmall', 'btnadd', 'btnedit', 'btndelete', 'btncopy', 'btntoggle');

function LoadImgs() {
	var i, n, s, o, a = arguments;
	for (i = 0; i < a.length; i++) {
		n = a[i];
		o = Img[n] = new Image();
		o.src = '/_/img/main/' + n + '.gif';
		s = n.substr(0, 3);
		if (s == 'btn' || s == 'top' || s == 'nav') {
			o = Img[n + 'on'] = new Image();
			o.src = '/_/img/main/' + n + 'on.gif';
		}
	}
}

function GoogleSearch(f) {
	DC.location='http:/\/www.google.com/search?hl=en&q='+escape(f.q.value)+'+site%3Achicagowebstudios.com';
	return false;
}

function On(o) {
	Off(o = o && (o.src || o.className) ? o : this);
	if (o.className) o.className += 'O';
	if (o.src) o.src = o.src.re(/\.(gif|jpg)/, 'on.$1');
	window.status = o.className;
}

function Off(o) {
	o = o && (o.src || o.className) ? o : this;
	if (o.className) o.className = o.className.re(/O$/, '');
	if (o.src) o.src = o.src.re(/on\.(gif|jpg)/, '.$1');
}

function Toggle(i, d) {
	By(i).D((Exists(d) ? d : By(i).D() == 'none') ? 'block' : 'none');
}

function ConfirmCancel(f) {
	return f.NumberOfChanges.value * 1 < 1 || confirm('Are you sure you want to discard the changes you have made?');
}

function DisplayError(m) {
	if (m != '') {
		var i, a = m.split('\n');
		if (a.length > 11) {
			m = '';
			for (i = 0; i < 11; i++) m += a[i] + '\n';
			m += '...';
		}
		alert('Please correct the following and re-submit:\n\n' + m);
	}
	return m == '';
}

function FocusField(f) {
	if (f.type) {
		f.focus();
		if (f.type == 'text') f.select();
	}
}

function SetClass(f, c) {
	f.className = c;
	if (f.length) for (var i = 0; i < f.length; i++) f.className = c;
}

function TryField(f, r, k, m, g) {
	var e, f2, i, j, l, n, o, p, q, s, z, x = !f.name, c;
	e = x ? f[0] : f;
	p = e.form;
	if (c = p.NumberOfChanges) c.value++;
	s = e.name;
	q = p.name + '_';
	i = DC.images[q + s];
	if (i) n = i.src;
	else n = 'required';
	n = (k ? r ? 'ok' : 'spacer' : (n.search(/\/required/) > -1 && m == 0) ? 'required' : 'warning') + (n.search(/small\./) > -1 ? 'small' : '');
	if (!m && n.charAt(0) == 'o' && e.className != 'Ok') SetClass(f, 'Ok');
	if (i) {
		i.src = Img[n].src;
		o = MasterTry;
		for (l in o) for (j in o[l]) if (o[l][j] == s) TryMaster(l, s);
	}
	if (k) return m ? '' : true;
	if (m) {
		SetClass(f, (n.charAt(0) == 'w') ? 'Warning' : 'Ok');
		if (g == '') {
			if (e.type != 'hidden') {
				e.focus();
				if (e.type == 'text') e.select();
			}
		}
		return '  -->  ' + m + '\n';
	}
	return false;
}

function TryMaster(p, n) {
	var a, i, r, s;
	a = MasterTry[p];
	s = 'ok';
	for (i = 0; i < a.length; i++) {
		r = DC.images[p.re(/_.*/, '_' + a[i])].src;
		if (r.search(/\/required/) > -1 && s == 'ok') s = 'required';
		if (r.search(/\/warning/) > -1) s = 'warning'; 
	}
	DC.images[p].src = Img[s].src;
}

function SplitField(f, n) {
	return f.form[f.name.substr(0, f.name.length - 1) + n];
}

function TryCheckbox(f, r, m, n) {
	return TryField(f, r, f.checked || !r, m, n);
}

function TryOptions(f, a, b, m, n) {
	var c, i, l;
	if (!f.length) f = f.form[f.name];
	if (l = f.length) {
		for (i = c = 0; i < l; i++) c += f[i].checked ? 1 : 0;
	}
	else c = f.checked ? 1 : 0;
	return TryField(f, a || b, c >= a && (!b || c <= b), m, n);
}

function TryCCExp(f, r, s, n) {
	var M, Y, i;
	M = SplitField(f, 'M');
	Y = SplitField(f, 'Y');
	if (!s && f.name == M.name && !Y.changed || f.name == Y.name && !M.changed) s = 0;
	return TryField(Y, r, i = IsCCExp(M, Y), s, n) && TryField(M, r, i, s, n);
}

function TryCCNum(f, r, m, n) {
	var v = Num(f.value).re(/[^\d]*(\d{4})[^\d]*(\d{4})[^\d]*(\d{4})[^\d]*(\d{4})[^\d]*/, '$1 $2 $3 $4');
	if (v != Get(f)) Set(f, v);
	return TryField(f, r, IsCCNum(f) || OkEmpty(r, f), m, n);
}

function TryMoney(f, r, m, n) {
	if (!m && m != 0 && IsMoney(f)) Set(f, Money(Get(f)));
	return TryField(f, r, IsMoney(f) || OkEmpty(r, f), m, n);
}

function Money(v) {
	var n = Trim(''+v).charAt(0) == '-', c = Math.floor((''+v).re(/[^0-9^\.]/g, '') * 100 + 0.50000000001), d = Math.floor(c / 100) + '', i;
	if ((c = c % 100) < 10) c = '0' + c;
	for (i = 0; i < Math.floor((d.length - (1 + i)) / 3); i++) d = d.substring(0, d.length - (4 * i + 3)) + ',' + d.substring(d.length - (4 * i + 3));
	return (n ? '-' : '') + d + '.' + c;
}

function TryDate(f, r, m, n) {
	return TryField(f, r, IsDate(f) || OkEmpty(r, f), m, n);
}

function TryEmail(f, r, m, n) {
	return TryField(f, r, IsEmail(f) || OkEmpty(r, f), m, n);
}

function TryFloat(f, r, m, n) {
	return TryField(f, r, IsFloat(f) || OkEmpty(r, f), m, n);
}

function TryInteger(f, r, m, n) {
	return TryField(f, r, Between(f) || OkEmpty(r, f), m, n);
}

function TryPassword(f, r, m, n) {
	var P = SplitField(f, 'P');
	var C = SplitField(f, 'C');
	TryField(P, r, IsPassword(P) || OkEmpty(r, C), m, n);
	return TryField(C, r, IsPassword(P) && IsPassword(C) && P.value == C.value || OkEmpty(r, P) && OkEmpty(r, C), m, n);
}

function TryPhone(f, r, m, n) {
	return TryField(f, r, IsPhone(f, 1) || OkEmpty(r, f), m, n);
}

function TryPhoneUS(f, r, m, n) {
	return TryField(f, r, IsPhoneUS(f, 2) || OkEmpty(r, f), m, n);
}

function TrySet(f, t, a, r, m, n) {
	var b, k, i, l;
	b = f.name.substring(0, f.name.length - a[k = 0].length);
	l = (l = Num(t)) ? l : 1;
	for (i = 0; i < a.length; i++) eval('if (Is' + A2Z(t) + '(f.form[b + a[i]], l)) k++');
	for (i = 0; i < a.length; i++) TryField(f.form[b + a[i]], r, k >= r, m, n)
	return TryField(f.form[b + a.sort().join('')], r, k >= r, m, n);
}

function TryText(f, r, m, n) {
	return TryField(f, r, IsText(f, r) || !r, m, n);
}

function TryTime(f, r, m, n) {
	return TryField(f, r, IsTime(f) || OkEmpty(r, f), m, n);
}

function TryHTML(f, r, m, n) {
	return TryField(f, r, !IsEmptyWYSIWYG(f) || !r, m, n);
}

function TryYesNo(f, r, m, n) {
	return TryField(f, r, f.form[f.name][0].checked || f.form[f.name][1].checked || !r, m, n);
}

function TryZip(f, r, m, n) {
	var x = /[^\d]*([\d]{5})[^\d]*([\d]{4})[^\d]*/;
	if (IsMatch(f.value, x)) f.value = f.value.re(x, '$1-$2');
	return TryField(f, r, IsZip(f) || OkEmpty(r, f), m, n);
}

function Get(f, p) {
	var i, t = f.type, v = '';
	if (t == "select-one") return f[f.selectedIndex][p ? p : 'value'];
	else if (t == "checkbox") return f.checked ? f.value : '';
	else if (f[0] && f[0].type == 'checkbox') {
		for (i = 0; i < f.length; i++) if (f[i].checked) v += ','+f[i].value;
		return v.re(/^\,/, '');
	} else if (f[0] && f[0].type == 'radio') {
		for (i = 0; i < f.length; i++) if (f[i].checked) return f[i].value;
	}
	return f.value;
}

function Set(f, v) {
	var i, t = f.type;
	if (t == "select-one") {
		for (i = 0; i < f.length; i++) if (f[i].value == v) f.selectedIndex = i;
	}
	else if (t == "checkbox") f.checked = v;
	else if (f[0] && f[0].type == 'checkbox') for (i = 0; i < f.length; i++) f.checked = (f.value == v);
	else f.value = v;
}

function PreFill(o, v) {
	if (o.changed) return;
	for (n in o.form) if (o.form[n] && o.form[n].name && o.form[n].name.substring && o.form[n].name.substring(0, 6) == 'MODEUPDATE') return;
	Set(o, v);
}

function Trim(s) {
	return (''+s).re(/^\s*/g,'').re(/\s*$/g,'');
}

function Quot(s) {
	return (''+s) ? s.re('"', '&quot;') : '';
}

function A2Z(s) {
	return (''+s).re(/[^A-Z]/gi, '');
}

function Num(s) {
	return (''+s).re(/[^0-9]/g, '') * 1;
}

function UCWords(s) {
    return (''+s).re(/\w+/g, function(a){return a.charAt(0).toUpperCase()+a.substr(1)});
}

function IsMatch(v, r) {
	return v != '' && v.re(r, '') == '';
}

function HasMatch(v, r) {
	return v != '' && v.re(r, '') != v;
}

function Between(i, a, b) {
	return i >= a && i <= b;
}

function InArray(x, a) {
	for (var i = 0; i < a.length; i++) if (a[i] == x) return true;
	return false;
}

function EmptyField(f) {
	return Empty(Get(f));
}

function Empty(s) {
	return s == null || Trim(s) == '';
}

function OkEmpty(r, f) {
	return !r && EmptyField(f);
}

function IsText(f, l) {
	return l > 1 ? Trim(Get(f)).length >= l : !EmptyField(f);
}

function IsEmptyWYSIWYG(f) {
	return f.value.re(/(<P>|&nbsp;|\s|<\/P>)/gi, '') == '';
}

function IsZip(f) {
	return IsMatch(Get(f), Get(f).indexOf('-') > 0 ? /^\d{5}-\d{4}$/ : /^\d{5}$/);
}

function IsPhone(f, r) {
	var v = Get(f).re(/[a-z]/gi, '');
	if (r && v != Get(f)) Set(f, v);
	return Num(v).length > 6;
}

function IsPhoneUS(f, r) {
	var v = Num(Get(f)).re(/^1/, '').re(/^([\d]{3})([\d]{3})([\d]{4})/, '($1) $2-$3');
	if (r && Math.abs(v.length - Get(f).length) > 1) Set(f, v);
	return IsMatch(Num(v), /[2-9][\d]{2}[2-9][\d]{6}/);
}

function IsEmail(f) {
	return IsMatch(Get(f), /^([^$@\\ ]+)@((([^$@\\ \.]+)\.)*)([^$@\\ \.]{2,}\.)([A-Za-z]{2,6})$/);
}

function IsURL(f) {
	return IsMatch(Get(f), /^http(s?):\/\/([^$@\\ ]+)$/i);
}

function IsPassword(f) {
	return Get(f).length > 3;
}

function Between(f) {
	return IsMatch(Get(f), /^(\+|\-)?([0-9]+)$/);
}

function IsFloat(f) {
	return IsMatch(Get(f), /^(\+|\-)?([0-9]+)(((\.|\,)?([0-9]+))?)$/);
}

function IsMoney(f) {
	return IsMatch(Get(f), /^(([0-9]{1,3}([\,]?[0-9]{3})*)|([0-9]{0,3}))(\.[0-9]{2})?$/);
}

function IsDate(f) {
	return Get(f).re(/Jan/i, '1').re(/Feb/i, '2').re(/Mar/i, '3').re(/Apr/i, '4').re(/May/i, '5').re(/Jun/i, '6').re(/Jul/i, '7').re(/Aug/i, '8').re(/Sep/i, '9').re(/Oct/i, '10').re(/Nov/i, '11').re(/Dec/i, '12').split(/[^0-9]/i).length > 1;
}

function IsTime(f) {
	var v, a;
	v = Trim(Get(f)).toUpperCase();
	if (v.re(/[:AM]/, '') == v) return 0;
	if (!IsMatch(v, /[012]?[0-9](:[012345][0-9]){0,2}([ ]*[AP][M]?)?/, '')) return 0;
	a = v.re(/[^0-9]/g, ',').split(',');
	if (a[0] * 1 > 23) return 0;
	return 1;
}

function IsCCNum(f) {
	var s, v, a, i;
	s = 0;
	v = Num(f.value);
	if (v.length < 13) return false;
	a = [];
	for (i = 0; i < v.length; i++) a[v.length - 1 - i] = v.substring(i, i + 1) * 1;
	for (i = 0; i < v.length; i++) {
		if (i % 2 != 0) {
			a[i] *= 2;
			if (a[i] >= 10) a[i] -= 9;
		}
		s = s + a[i].valueOf();
	}
	return s % 10 == 0;
}

function IsCCExp(m, y) {
	return parseInt('20' + Get(y) + Get(m)) >= YearMonth;
}


var DateActive = '';

function DateOn(i) {
	var a = DateActive;
	DateActive = i;
	if (a) DateHide(a);
	By(i + '_FRM').V(1);
}

function DateOff(i) {
	setTimeout('DateHide(\'' + i + '\')', 100);
	DateActive = '';
}

function DateHide(i) {
	if (DateActive != i) By(i + '_FRM').V(0);
}

function DateToggle(i) {
	if (DateActive == i) {
		DateActive = '';
		DateHide(i);
	} else {
		DateOn(i);
		WN.frames[i + '_FRM'].focus();
	}
}

function DateChange(f) {
	var d = new Date(), v = f.value, y;
	if (!Trim(v)) return;
	v = v.re(/([0-9][0-9])([0-9][0-9])([0-9][0-9])/, '$1 $2 $3');
	v = v.re(/([0-9]+)([^0-9]+)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/i, '\\3\\2\\1');
	v = v.re(/Jan/i, '1').re(/Feb/i, '2').re(/Mar/i, '3').re(/Apr/i, '4');
	v = v.re(/May/i, '5').re(/Jun/i, '6').re(/Jul/i, '7').re(/Aug/i, '8');
	v = v.re(/Sep/i, '9').re(/Oct/i, '10').re(/Nov/i, '11').re(/Dec/i, '12');
	v = Trim(v.re(/[^0-9]+/g, ' '));
	v = v.split(' ');
	y = v.length < 3 ? d.getFullYear() : v[2] * 1;
	if (y < 100) y += 2000;
	d.setFullYear(y);
	d.setMonth(v[0] * 1 - 1);
	d.setDate(v[1]);
	if (isNaN(d.getDate())) d = new Date();
	DateSet(f, WN.frames[f.id + '_FRM'].CurrentDate = d);
	TryDate(f, 1);
}

function DateSet(f, d) {
	Set(f, (d.getMonth() + 1) + '/' + d.getDate() + '/' + (f.name.charAt(0) == 's' ? ('' + d.getFullYear()).re(/^[0-9]{2}/, '') : d.getFullYear()));
}


var XML;

function XMLGet(u, i, j, e) {
	var x, s, c, r = 0;
	if (WN.XMLHttpRequest) r = x = new XMLHttpRequest();
	else if (WN.ActiveXObject) x = new ActiveXObject("Microsoft.XMLHTTP");
	if (x) {
	x.onreadystatechange = function() {
			if (x.readyState == 4) {
				if (x.status == 200) {
					XML = x.responseText;
					if (i) {
						if (DC.images[i+'Wait']) DC.images[i+'Wait'].src = '/_/img/spacer.gif';
						By(i).X(XML);
						s = '';
						for (c = k = 0; k < XML.length; k++) {
							if (c) {
								if (XML.substr(k, 9) == '</s'+'cript>') {
									c = 0;
									eval(s);
								} else {
									s += XML.charAt(k);
								}
							} else {
								if (XML.substr(k, 8) == '<s'+'cript>') {
									c = 1;
									k += 7;
								}
							}
						}
						FinishPage();
						DC.onload();
					}
					if (j) eval(j);
				}
				else eval(e);
			}
		}
		x.open('GET', u, true);
		if (r) x.send(null);
		else x.send();
		if (i && DC.images[i+'Wait']) DC.images[i+'Wait'].src = '/_/img/main/wait.gif';
		return true;                                                                                                                  
	}
	else return eval(e) && false;
}

function ListAJAX(o, i) {
	var a, d, n, u, p;
	p = o;
	a = o.tagName == 'A';
	u = a ? o.href : o.action;
	if (u.indexOf('?') < 0) u += '?';
	u += '&AJAX=Y';
	if (!a) for (n in o) if (HasMatch(n, /^[a-z][A-Z]/)) u += '&' + n + '=' + escape(Get(o[n]));
	if (!i) {
		while (p.tagName != 'FORM') p = p.parentNode;
		i = p.id;
	}
	By(i).action = u.re(/AJAX=Y/, '');
	return XMLGet(u, i);
}

function Paging(o) {
	if (!ListAJAX(o.form)) o.form.submit();
}

function SearchClear(f) {
	var n, o = f.form;
	for (n in o) if (HasMatch(n, /^s[A-Z]/)) {
		if (o[n].type == 'select-one') Set(o[n], 'C');
		Set(o[n], '');
	}
}

var TipActive = 0, TipPos = 0, TipStem, TipBox, TipMsg, TipPoint;

TipCreate();

function TipCreate() {
	var c = ['topleft', 'topright', 'bottomleft', 'bottomright'], n;
	DC.write('<img id="TS" src="/_/img/main/tipstemtopleft.gif" width="34" height="2" /><div id="TX"><table id="TT"><tr>' + TipCorner('topleft') + TipCorner('topright') + '</tr></table><table><tr>' + Tip8x8('topleft') + Tip8('top') + Tip8x8('topright') + '</tr><tr>' + Tip8('left') + '<td bgcolor="#FFFFCC" id="TM" nowrap=""></td>' + Tip8('right') + '</tr><tr>' + Tip8x8('bottomleft') + Tip8('bottom') + Tip8x8('bottomright') + '</tr></table><table id="TB"><tr>' + TipCorner('bottomleft') + TipCorner('bottomright') +  '</tr></table></div>');
	TipStem = By('TS');
	TipBox = By('TX');
	TipMsg = By('TM');
	TipPoint = new Object();
	for (n = 0; n < 4; n++) {
		TipPoint[c[n]] = By('TP' + c[n]);
		LoadImgs('tip' + c[n], 'tippoint' + c[n], 'tipstem' + c[n]);
	}
	DC.onmousemove = TipMove;
}

function TipCorner(n) {
	return '<td align="' + n.re(/(top|bottom)/, '') + '">' + (n ? '<img src="/_/img/main/tippoint' + n + '.gif" id="TP' + n + '" width="34" height="17" alt="" style="visibility:hidden;" />' : '') + '</td>';
}

function Tip8x8(n) {
	var i = '"/_/img/main/tip' + n + '.gif"';
	return '<td background="' + i + (n.length < 7 ? '" bgcolor="#FFFFCC"' : '') + '><img src=' + i + ' width="8" height="8" alt="" /></td>';
}

function Tip8(n) {
	var v = n.length % 3, b = v ? '': '<br />', a = [Spacer(v?'1px':'100%',v?'100%':'1px','#2C2C23'), Spacer(v?'1px':'100%',v?'100%':'1px','#CFCFAF'), Spacer(v?'6px':'100%',v?'100%':'6px','#FFFFCC')];
	return '<td>'+(n.length < 5 ? a[0]+b+a[1]+b+a[2] : a[2]+b+a[1]+b+a[0])+'</td>';
}

function Spacer(w, h, g) {
	return '<img src="/_/img/spacer.gif" width="'+w+'" height="'+h+'"'+(g?' style="background:'+g+'"':'')+' />';
}

function TipOn(x, w, h) {
	TipMsg.X(x);
	TipMsg.W(w ? w : 160);
	TipMsg.H(h ? h : 20);
	return !(TipActive = 1);
}

function TipMove(e) {
	if (TipActive) {
		var a = XY(e), x = a[0], y = a[1], w = a[2], h = a[3], r = a[4], b = a[5], p, q;
		w = TipMsg.W() + 16;
		h = TipMsg.H() + 16;
		q = 'px';
		if (b < h + 12) {
			TipStem.T(y - 30);
			TipBox.T(y - h - 45);
			p = 'bottom';
		} else {
			TipStem.T(y + 28);
			TipBox.T(y + 11);
			p = 'top';
		}
		if (r < w + 26) {
			TipStem.L(x - 43);
			TipBox.L(x - w - 9);
			p += 'right';
		} else {
			TipStem.L(x + 9);
			TipBox.L(x + 9);
			p += 'left';
		}
		By('TT').W(By('TB').W(w));
		if (p != TipPos) {
			if (TipPos) TipPoint[TipPos].V(0);
			TipStem.src = '/_/img/main/tipstem' + p + '.gif';
			TipPos = p;
		}
		TipStem.V(TipBox.V(TipPoint[TipPos].V(1)));
	}
}

function TipOff() {
	TipStem.V(TipBox.V(TipPoint[TipPos ? TipPos : 'topleft'].V(TipActive = 0)));
}

function ConfirmDelete(o, s, p) {
	var a = o['ID[]'], c = 0, i;
	if (a.length) for (i = 0; i < a.length; i++) c += a[i].checked ? 1 : 0;
	else c += a.checked ? 1 : 0;
	if (c < 1) {
		alert('You have not selected any ' + p + ' to be deleted.');
		return false;
	}
	return confirm('Are you sure you would like to delete the selected ' + (c > 1 ? p : s) + '?');
}

function FinishPage() {
	var i, o, a = DC.getElementsByTagName('INPUT');
	for (i in a) {
		o = a[i];
		if (o.className && o.className == 'U') {
			o.onmouseover = On;
			o.onmouseout = Off;
		}
	}
	PageLoaded = 1;
}

var CheckIndex = -1, RowIgnore = 0;

function RowObject(o) {
	var f = o, i, a;
	while ((o.tagName != 'TR' || !o.id) && o.parentNode) f = o = o.parentNode;
	while ((f.tagName != 'FORM' || !f.name) && f.parentNode) f = o.f = f.parentNode;
	a = o.parentNode.childNodes;
	for (i = 0; i < a.length; i++) if (a[i] == o) break;
	o.i = i - 2;
	o.p = o.parentNode;
	return o.p ? El(o) : null;
}

function RowOn(e) {
	var o = RowObject(e), r = OrdRow, s = OrdSlot, b;
	if (o.C) o.C(o.C().re(/([AB])$/, '$1 $1O'));
	if (r) {
		o.p.insertBefore(s, b = r.c > o.i ? o : o.nextSibling);
		r.c = RowObject(b).i;
	}
}

function RowOff(e) {
	var o = RowObject(e);
	if (o.C) o.C(o.C().re(/( [AB]O)/g, ''));
}

function RowUp(e) {
	if (OrdRow) OrdUp(RowObject(e));
}

function RowClick(e) {
	var o = RowObject(e), f = BoxObject(o);
	if (!RowIgnore) {
		f.checked = !f.checked;
		SelectRows(f.form);
	}
}

function RowEdit(o) {
	By(RowObject(o).id.replace(/Row/, 'Edit')).click();
}

function BoxObject(o) {
	var f = o.id.re(/Row([0-9]+)/, ''), a = document[f]['ID[]'];
	return a.length ? a[RowObject(o).i] : a;
}

function CheckAll(o) {
	var f = o.form, a = f['ID[]'], b = o.checked, i;
	if (a.length) for (i = 0; i < a.length; i++) a[i].checked = b;
	else a.checked = b;
	SelectRows(f);
}

function CheckDown(o, n) {
	CheckIndex = n;
}

function CheckUp(o, n) {
	var m = CheckIndex, j, i, b, f = o.form, a = f['ID[]'];
	if (m < 0 || n == m) return;
	CheckIndex = -1;
	j = n < m ? 1 : -1;
	for (i = n; i * j <= m * j; i += j) {
		b = a[i].checked
		a[i].checked = !b;
	}
	SelectRows(f);
}

function CheckClick(o) {
	RowIgnore = 1;
	setTimeout('RowIgnore = 0', 10);
	SelectRows(o.form);
}

function SelectRows(f) {
	var a = f['ID[]'], b, c = true, i;
	if (b) f.IDs[0].checked = f.IDs[1].checked = !b;
	if (a.length) {
		for (i = 0; i < a.length; i++) {
			b = a[i].checked;
			c = (c && b);
			SelectRow(By(f.name + 'Row' + i), b);
		}
	} else {
		b = a.checked;
		c = (c && b);
		SelectRow(By(f.name + 'Row0'), b);
	}
	f.IDs[0].checked = f.IDs[1].checked = c;
}

function SelectRow(o, b) {
	var c = o.className.charAt(0);
	o.className = b ? c+' '+c+'S' : c;
}

var OrdRow = null, OrdSlot = null;

function OrdDown(o) {
	var r = RowObject(o);
	OrdRow = r;
	Off(o);
	DC.onmouseup = OrdUp;
	DC.onmousemove = OrdStart;
	return false;
}

function OrdStart() {
	var m = By('M'), s = By('R'), r = OrdRow, a = r.p.childNodes, i, t, c;
	OrdSlot = s;
	DC.onmousemove = OrdMove;
	m.C('L');
	m.X('<table><tr class="'+r.C()+'">' + r.innerHTML + '</tr></table>');
	m.W(r.W());
	m.O(80);
	m.V(1);
	r.p.insertBefore(s, r);
	r.c = r.i;
	for (i = 0; i < a.length - 3; i++) if (c = (t = El(a[i + 2])).firstChild) El(c).X(c.X().re(/(<input[^>]+type="checkbox")/, '<div style="position:absolute;width:'+t.W()+'px;height:'+(t.H()+1)+'px;z-index:3;cursor:move;"></div>$1'));
	s.D('table-row');
	El(s.firstChild.firstChild).H(Num(r.H())*1-11);
	r.D('none');
}

function OrdMove(e) {
	var a = XY(e), m = By('M');
	m.L(a[0] - 145);
	m.T(a[1] - Math.floor(m.H() / 2));
}

function OrdUp(o) {
	var r = OrdRow, a = r.p.childNodes, i, c, m = By('M'), s = OrdSlot, u;
	m.X('');
	m.V(0);
	r.p.insertBefore(r, s);
	r.p.insertBefore(s, r.p.lastChild);
	s.D('none');
	r.D('table-row');
	for (i = 2; i < a.length - 1; i++) {
		if (c = a[i].firstChild) El(c).X(c.X().re(/<div[\w\W]+div>/, ''));
		El(a[i]).C(i % 2 ? 'A' : 'B');
		u = a[i].childNodes[2];
		El(u).X('<img src="/_/img/main/nomovebtn.gif" alt="Move Up/Down" class="U" style="width:79px"/>');
		//u.src = '/_/img/main/nomovebtn.gif';
		//u.onclick = u.onmouseover = u.onmousedown = function(){return false};
	}
	DC.onmousemove = DC.onmouseup = OrdRow = OrdSlot = null;
}