// load manager
var domOnload = function () {
	var	list=[],
			init=function(){
				var uA=navigator.userAgent,
						browser = {
							ver:(uA.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/i)||[])[1],
							opera:/opera/i.test(uA),
							moz:/mozilla/i.test(uA)&&!/(compatible|webkit)/i.test(uA),
							ie:/msie/i.test(uA)&&!/opera/i.test(uA),
							safari:/webkit/i.test(uA)
						},
						w = window;

				domOnload.ready=function(){
					if (list.length) for (var i=list.length;--i >= 0;) {
						var f = list.pop();
						switch (typeof(f)) {
							case 'function':
								f();
								break;
							case 'string':
								eval(f);
								break;
						}
					}
				};

				if (browser.moz || browser.opera) {
					document.addEventListener('DOMContentLoaded', domOnload.ready, false);
				} else if (browser.ie) {
					document.write('<scr' + 'ipt id="__ie_init" defer="true" src="/:"></script>');
					var script = document.getElementById('__ie_init');
					if (script) script.onreadystatechange = function(){
						if(this.readyState != 'complete') return;
						domOnload.ready();
					};
					script = null;
				}else if (browser.safari) {
					//untested
					domOnload.safariTimer = setInterval(function(){
						if (document.readyState == 'loaded' || document.readyState == 'complete' ) {
							clearInterval(domOnload.safariTimer);
							domOnload.safariTimer = null;
							domOnload.ready();
						}
					}, 10);
				}
	
				if(w.addEventListener) w.addEventListener('load', domOnload.ready, false);
				else if(w.attachEvent) w.attachEvent('onload', domOnload.ready, false);
	
				init=null;
			};	//init();
	
	return function (f) {
		if (init) init();
		list.push(f);
	}
}();

function runOnLoad () {
	var w = window,
			m = arguments[0],
			el,	e;
	if (!m) return (w.addEventListener || w.attachEvent);
	/*
	if (!arguments[1]) {
		domOnload(m);
		return;
	}
	*/
	switch ((arguments[1] + '').toLowerCase()) {
		case 'resize':
		case 'onresize':
			el = 'resize';
			e = 'onresize';
			break;
		default:
			el = 'load';
			e = 'onload';
	}
	switch (typeof(m)) {
		case 'function':
			if(w.addEventListener) w.addEventListener(el, m, false);
			else if(w.attachEvent) w.attachEvent(e, m, false);
			break;
		case 'string':
			if(w.addEventListener) w.addEventListener(el, function(){eval(m)}, false);
			else if(w.attachEvent) w.attachEvent(e, function(){eval(m)}, false);
			break;
	}
}

// fix flickering within IE
try{document.execCommand('BackgroundImageCache',false,true)}catch(e){}

// copies alt attributes into title for img & area (for non IE browsers)
if (navigator.appName.indexOf('Internet Explorer') == -1) {
	function imgAlt2Title () {
		var e = document.getElementsByTagName('img'), i = e.length, f;
		for (;--i >= 0;) {
			f = e.item(i);
			if ((f.alt) && !(f.title)) f.title = f.alt;
		};
		e = document.getElementsByTagName('area');
		for (i = e.length;--i >= 0;) {
			f = e.item(i);
			if ((f.alt) && !(f.title)) f.title = f.alt;
		}
	}
}

// layout adjuster
function adjustLayout () {
	var cssId = 'adjustLayoutElem',
			browserWidth = window.innerWidth ? window.innerWidth : ((document.documentElement && document.documentElement.clientWidth != 0) ? document.documentElement.clientWidth : (document.body ? document.body.clientWidth : 0));
	if (!browserWidth) return;
	var e = document.getElementById(cssId),
			l = document.createElement('link'),
			h = document.getElementsByTagName('head').item(0),
			m = document.getElementById('main'),
			u = '/_assets/styles/main-';
	l.rel = 'stylesheet';
	l.type = 'text/css';
	l.media = 'screen,projection';
	if (location.pathname.match(/^\/(index\.(?:html|cfm))?[^\/]*$/)) u = '/_assets/styles/home-';
	m.style.height = '';
	if (browserWidth >= 860) { // browserWidth 990px
		if (e) {
			e.href = '';
			h.removeChild(e);
		}
		var f = document.getElementById('feature'),
				h = 86;
		if (f) {
			f = f.clientHeight;
			h += f;
			m.style.height = h > m.clientHeight ? h + 'px' : '';
		}
		return;
	} else if (browserWidth >= 716) { // browserWidth 766px
		if (e) if (e.href.match(/\/_assets\/styles\/(?:main|home)-800\.css$/i)) return;
		u += '800.css';
	} else { // browserWidth 606
		if (e) if (e.href.match(/\/_assets\/styles\/(?:main|home)-640\.css$/i)) return;
		u += '640.css';
	}
	if (e) {
		e.disabled = true;
		e.href = '';
		h.removeChild(e);
		e = null;
	}
	l.href = u;
	l.id = cssId;
	h.appendChild(l);
	l = null;
}

function printExternalLinks () {
	var a = document.getElementById('content').getElementsByTagName('a'),
			i = a.length,
			s = 'http://' + location.hostname,
			t;
	for (;--i >=0;) {
		t = a.item(i);
		if ((t.href.indexOf(s) == -1) && !t.href.match(/\.(?:pdf|zip|rar|ppt|doc|xls)[^\\\/]*$/i)) t.className += t.className ? ' showlink' : 'showlink';
	}
	a = document.getElementById('feature').getElementsByTagName('a');
	for (i = a.length;--i >=0;) {
		t = a.item(i);
		if ((t.href.indexOf(s) == -1) && !t.href.match(/\.(?:pdf|zip|rar|ppt|doc|xls)[^\\\/]*$/i)) t.className += t.className ? ' showlink' : 'showlink';
	}
};

var nav2Inst = null,
	nav2menuInit = function () {
		if (!nav2Inst) nav2Inst = new TreeMenu();
		// modifies nav2Inst to deal with backroundPositionY within Mozilla
		if (navigator.appName == 'Netscape') {
			nav2Inst._shiftBg = nav2Inst.shiftBg;
			nav2Inst.shiftBg = function () {
				var e=document.getElementById('adjustLayoutElem');
				this._shiftBg();
				if(e)if(e.href.search(/-800\.css$/i)>0) this.bgElem.style.backgroundPosition = this.bgElem.style.backgroundPosition.replace(/^0(?:px|pt|em)?/, '-4px');
			};
			if (runOnLoad()) runOnLoad(function(){nav2Inst.shiftBg()}, 'resize');
		}
		nav2Inst.init('nav2menu', 'main');
	};

// add event listeners
if (runOnLoad()) {
	domOnload(adjustLayout);
	runOnLoad(nav2menuInit);
	runOnLoad(adjustLayout, 'resize');
	if (navigator.appName.indexOf('Internet Explorer') == -1) {
		domOnload(imgAlt2Title);
		domOnload(printExternalLinks);
	}
} else {
	var _wor = windows.onresize, _wol = windows.onload;
	windows.onresize = function () {
		if (_wor) _wor();
		adjustLayout();
	};
	windows.onload = function () {
		if (_wol) _wol();
		adjustLayout();
		nav2menuInit();
		if (navigator.appName.indexOf('Internet Explorer') == -1) {
			imgAlt2Title();
		}
	}
}