/*
AddEvent Manager (c) 2005 Angus Turnbull http://www.twinhelix.com
Free usage permitted as long as this credit notice remains intact.
*/
if (!window.aeOL)
{
 window.aeOL = [];
 window.addEvent = function(o, n, f, l)
 {
  var d = 'addEventListener', h = 'on' + n, t, a;
  if (o[d] && !l) return o[d](n, f, false);
  if (!o.aE)
  {
   o.aE = {};
   aeOL[aeOL.length] = o;
  }
  t = o.aE[n];
  if (!t) t = o.aE[n] = [];
  a = t[t.length - 1];

  if (o[h] && o[h]._ae) a[a.length] = f;
  else
  {
   a = t[t.length] = o[h] ? [o[h], f] : [f];
   o[h] = function(e)
   {
    e = e || window.event;
    var r = true, i;
    for (i = 0; i < a.length; i++)
    {
     o._f = a[i];
     r = o._f(e) != false && r;
    }
    return r;
   };
   o[h]._ae = 1;
  }
 };
 addEvent(window, 'unload', function() {
  addEvent(window, 'unload', function() {
   var o, n;
   for (i = 0; i < aeOL.length; i++)
   {
    o = aeOL[i];
    for (n in o.aE) o['on' + n] = null;
    o.aE = o._f = null;
   }
  })
 });

 window.removeEvent = function(o, n, f, l)
 {
  var d = 'removeEventListener', t, a;
  if (o[d] && !l) return o[d](n, f, false);

  if (!o.aE || !o.aE[n]) return;
  t = o.aE[n];
  for (var i = 0; i < t.length; i++)
  {
   a = t[i], s = 0;
   for (var j = 0; j < a.length; j++)
   {
    if (a[j] == f) s = 1;
    if (s) a[j] = a[j + 1];
   }
   if (s) a.length--;
  }
 };

}

/* Cookie functions from netspade.com */
function setCookie(name, value, expires, path, domain, secure) {
	document.cookie= name + "=" + escape(value) +
	((expires) ? "; expires=" + expires.toGMTString() : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
}

function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    } else {
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1) {
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}
/* vertical menu by Klaas Van Waesberghe http://www.kvw.be/
Please leave this copyright intact if you wish to use this script
Note for use: html code must follow exact same structure as shown and not contain additional ids or classes
*/

function menuSlider() {
	var parent = this.parentNode;
	if (parent.className == "slideIn") {
		parent.className = "slideOut";
		menuSliderSave(parent);
	}
	else {
		parent.className = "slideIn";
		menuSliderDelete(parent);
	}
}

function menuSliderSave(el) {
	var value = getCookie('KMenu');
	if (value == null) value = "";
	if (value.indexOf(el.ID) != -1) {
		return;
	}
	else {
		value += el.ID;
		var date = new Date();
   		date.setTime(date.getTime()+(365*24*60*60*1000));
		setCookie("KMenu", value, date);
	}
}

function menuSliderDelete(el) {
	var value = getCookie('KMenu');
	if (value == null) return;
	if (value.indexOf(el.ID) == -1) {
		return;
	}
	else {
		value = value.replace(el.ID, "");
		var date = new Date();
   		date.setTime(date.getTime()+(365*24*60*60*1000));
		setCookie("KMenu", value, date);
	}
}

function menuSliderInit() {
	var mCookie = getCookie('KMenu');
	if (mCookie == null) mCookie = "";
	var el = document.getElementsByTagName('li');
	var elLength = el.length;
	for (var i=0; i<elLength; i++) {
		if (el[i].className == 'slide') {
			var a = el[i].firstChild;
			addEvent(a, 'mouseup', menuSlider);
			el[i].className = "slideIn";
			el[i].ID = "menuSlide"+i;
			if (mCookie.indexOf("menuSlide"+i) != -1) el[i].className = "slideOut";
		}
	}
}


/* stylesheet switcher, idea and some code from Paul Sowden, A List Apart http://www.alistapart.com/articles/alternate/
edited by Klaas Van Waesberghe */


function setActiveStyleSheet(title) {
   var i, a, main;
   for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
     if(a.getAttribute("rel").indexOf("style") != -1
        && a.getAttribute("title")) {
       a.disabled = true;
       if(a.getAttribute("title") == title) a.disabled = false;
     }
   }
}

function getActiveStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");
  }
  return null;
}

function getPreferredStyleSheet() {
  var i, a;
  for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
    if(a.getAttribute("rel").indexOf("style") != -1
       && a.getAttribute("rel").indexOf("alt") == -1
       && a.getAttribute("title")
       ) return a.getAttribute("title");
  }
  return null;
}



/* hover script for site controls by Klaas Van Waesberghe
Please leave this copyright intact if you wish to use this script
*/

function controlHover() {
	var bkg = this.getElementsByTagName('img')[0];
	var bkgurl = bkg.src;
	bkg.src = bkgurl.replace('.png', '__h.png');
}

function controlOut() {
	var bkg = this.getElementsByTagName('img')[0];
	var bkgurl = bkg.src;
	bkg.src = bkgurl.replace('__h.png', '.png');
}

function controlChange() {
	var tid = this.id;
	var style = getActiveStyleSheet();
	if (style == null) return;
	
	if (tid == 'fontl') {
		if (style == 'Large font') return;
		else if (style == 'Medium font') setActiveStyleSheet('Large font');
		else if (style == 'Small font') setActiveStyleSheet('Medium font');
		else return;
	}
	else if (tid == 'fonts') {
		if (style == 'Small font') return;
		else if (style == 'Medium font') setActiveStyleSheet('Small font');
		else if (style == 'Large font') setActiveStyleSheet('Medium font');
		else return;
	}
}

function controlInit() {
	var fontl = document.getElementById('fontl');
	addEvent(fontl, 'mouseover', controlHover);
	addEvent(fontl, 'mouseout', controlOut);
	addEvent(fontl, 'mouseup', controlChange);
	var fonts = document.getElementById('fonts');
	addEvent(fonts, 'mouseover', controlHover);
	addEvent(fonts, 'mouseout', controlOut);
	addEvent(fonts, 'mouseup', controlChange);
	
	var cookie = getCookie('fontsize');
	var title = cookie ? cookie : getPreferredStyleSheet();
	setActiveStyleSheet(title);
}

/** Table alternating row colors (c) Klaas Van Waesberghe */
function tableInit() {
	var tbls = document.getElementsByTagName("table");
	tbll = tbls.length;
	for (var i=0; i<tbll; i++) {
		if (tbls[i].className == 'sortable')
			alternify(tbls[i]);
	}
}

function alternify(tbl) {
	var rows = tbl.getElementsByTagName("tr");
	var rowl = rows.length;
	for (var i=0; i<rowl; i++) {
		if (i%2 == 0)
			rows[i].className = "even";
	}
}

function installListeners() {
	if (!document.getElementsByTagName || !document.getElementById) return;
	menuSliderInit();
	controlInit();
	tableInit();

	externalLinks();
	qInit();
}

function removeEvents() {
	var style = getActiveStyleSheet();
	var date = new Date();
    date.setTime(date.getTime()+(365*24*60*60*1000));
	setCookie("fontsize", style, date);
}

addEvent(window, 'load', installListeners);
addEvent(window, 'unload', removeEvents);
