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;}
function createCookie(name,value,days) {  if (days) {    var date = new Date();    date.setTime(date.getTime()+(days*24*60*60*1000));    var expires = "; expires="+date.toGMTString();  }
  else expires = "";  document.cookie = name+"="+value+expires+"; path=/";}
function readCookie(name) {  var nameEQ = name + "=";  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);  }
  return null;}
window.onload = function(e) {  var cookie = readCookie("style");  var title = cookie ? cookie : getPreferredStyleSheet();  setActiveStyleSheet(title);}
window.onunload = function(e) {  var title = getActiveStyleSheet();  createCookie("style", title, 365);}
var cookie = readCookie("style");var title = cookie ? cookie : getPreferredStyleSheet();setActiveStyleSheet(title);
// add an eventlistener to browsers that can do it somehow.
function addEvent(obj, evType, fn)	{
	if (obj.addEventListener)		{		obj.addEventListener(evType, fn, false);		return true;		}
	else if (obj.attachEvent)		{		var r = obj.attachEvent('on'+evType, fn);		return r;		}
	else		{return false;		}
	}
function floatImages()	{
// sniff user agent
	var userAgent = navigator.userAgent.toLowerCase();
// if Mozilla 1.4 then quit
if ((userAgent.indexOf('gecko') != -1) && (userAgent.indexOf('gecko/') + 14 == userAgent.length) && (parseFloat(userAgent.substring(userAgent.indexOf('rv:') + 3)) == '1.4')) return;
// if Opera then quit
if (document.all && window.Event) return;
// check this browser can cope with what we want to do
if (!document.getElementById) return;
var blogDiv = document.getElementById('blog');
if (!blogDiv) return;
if (!blogDiv.offsetWidth) return;
	blogDiv.className = (blogDiv.offsetWidth >= 500) ? "float-images" : "block-images";	}

function blockquoteCite()	{
if (!document.createElementNS)		{		document.createElementNS = function(ns, elt)
			{			return document.createElement(elt);			}
		}
	quotes = document.getElementsByTagName('blockquote');
	for (i = 0; i < quotes.length; i++)		{		var cite = quotes[i].getAttribute('cite');
// value of cite attribute should only contain URI, not any other
if ((cite) && (cite != ''))			{
	newlink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
	newlink.setAttribute('href', cite);
	newlink.className = 'cite-link';
	newlink.appendChild(document.createTextNode(cite));
	newdiv = document.createElementNS('http://www.w3.org/1999/xhtml', 'cite');
	newdiv.className = 'blockquote-cite';
	newdiv.appendChild(document.createTextNode('Source: '));
	newdiv.appendChild(newlink);
	quotes[i].appendChild(newdiv);
	quotes[i].removeAttribute('cite');			}
		}
	}
// Ins and Del tags citations
function insdelCite()	{
if (!document.createElementNS)		{		document.createElementNS = function(ns, elt)			{
	return document.createElement(elt);			}
	}
var insdel = new Array(2);
insdel[0] = document.getElementsByTagName('ins');
insdel[1] = document.getElementsByTagName('del');
for (var i=0; i<insdel.length; i++)		{
if (insdel[i])			{
	for (var id=0; id<insdel[i].length; id++)				{				var isdl = insdel[i][id].getAttribute('cite');
if ((isdl) && (isdl != ""))					{
	idlink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
	idlink.setAttribute('href', isdl);
	idlink.className = 'cite-link ' + (i == 0 ? 'ins-cite' : 'del-cite');
	idlink.setAttribute('title','citation of ' + (i == 0 ? 'added' : 'deleted') + ' text');
	idlink.appendChild(document.createTextNode('#'));
	insdel[i][id].appendChild(idlink);
	insdel[i][id].removeAttribute('cite');					}
				}
			}
		}
	}
// Force IE not to show alternate text as tooltip
function noAltTooltip()	{	images = document.getElementsByTagName('img');
	for (var i = 0; i < images.length; i++)		{		var title = images[i].getAttribute('title');		var alt = images[i].getAttribute('alt');
if ((document.all) && (alt) && (!title))			{			images[i].setAttribute('title', '');			}
		}
	}
// set the namespace
var XHTMLNS = 'http://www.w3.org/1999/xhtml';
var CURRENT_NICE_TITLE;
// browser sniff
var browser = new Browser();
// determine browser and version.
function Browser()	{	var ua, s, i;
	this.isIE = false;
	this.isNS = false;
	this.version = null;
	ua = navigator.userAgent;
	s = 'MSIE';
if ((i = ua.indexOf(s)) >= 0)		{		this.isIE = true;		this.version = parseFloat(ua.substr(i + s.length));		return;		}
	s = 'Netscape6/';
if ((i = ua.indexOf(s)) >= 0)		{		this.isNS = true;		this.version = parseFloat(ua.substr(i + s.length));		return;		}
// treat any other 'Gecko' browser as NS 6.1.
	s = 'Gecko';
if ((i = ua.indexOf(s)) >= 0)		{		this.isNS = true;		this.version = 6.1;		return;		}
	}
// set delay vars to emulate normal hover delay
var delay;
var interval = 0.60;
// this function runs on window load it runs through all the links on the page as starts listening for actions
function makeNiceTitles()	{
if (!document.createElement || !document.getElementsByTagName) return;
if (!document.createElementNS)		{		document.createElementNS = function(ns, elt)
			{			return document.createElement(elt);			}
		}
	// do regular links
if (!document.links)		{		document.links = document.getElementsByTagName('a');		}
	for (var ti=0; ti<document.links.length; ti++)		{		var lnk = document.links[ti];
		// * I added specific class names here..
if (lnk.title)			{
	lnk.setAttribute('nicetitle', lnk.title);
	lnk.removeAttribute('title');
	addEvent(lnk, 'mouseover', showDelay);
	addEvent(lnk, 'mouseout', hideNiceTitle);
	addEvent(lnk, 'focus', showDelay);
	addEvent(lnk, 'blur', hideNiceTitle);			}
		}
	// do ins and del tags
	var tags = new Array(2);
	tags[0] = document.getElementsByTagName('ins');
	tags[1] = document.getElementsByTagName('del');
	for (var tt=0; tt<tags.length; tt++)		{
if (tags[tt])			{
	for (var ti=0; ti<tags[tt].length; ti++)				{				var tag = tags[tt][ti];
if (tag.dateTime)					{					var strDate = tag.dateTime;
	var month = strDate.substring(5,7);					var day = strDate.substring(8,10);
if (month[0] == '0')						{						month = month[1];						}
if (day[0] == '0')						{						day = day[1];						}
	var dtIns = new Date(strDate.substring(0,4), month-1, day, strDate.substring(11,13), strDate.substring(14,16), strDate.substring(17,19));
	tag.setAttribute('nicetitle', (tt == 0 ? 'Added' : 'Deleted') + ' on ' + dtIns.toString());
	addEvent(tag, 'mouseover', showDelay);
	addEvent(tag, 'mouseout', hideNiceTitle);
	addEvent(tag, 'focus', showDelay);
	addEvent(tag, 'blur', hideNiceTitle);					}
		}
	}
	}
}
function findPosition(oLink)	{
if (oLink.offsetParent)		{
	for (var posX = 0, posY = 0; oLink.offsetParent; oLink = oLink.offsetParent)			{			posX += oLink.offsetLeft;			posY += oLink.offsetTop;			}
	return [posX, posY];		}
else		{		return [oLink.x, oLink.y];		}
	}

function getParent(el, pTagName)	{
if (el == null)		{		return null;		}
// gecko bug, supposed to be uppercase
else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())		{		return el;		}
else		{		return getParent(el.parentNode, pTagName);		}
	}

// trailerpark wrapper function
function showDelay(e)	{
if (window.event && window.event.srcElement)		{        lnk = window.event.srcElement		}
else if (e && e.target)		{        lnk = e.target		}
if (!lnk) return;
// lnk is a textnode or an elementnode that's not ins/del
if (lnk.nodeType == 3 || (lnk.nodeType == 1 && lnk.tagName.toLowerCase() != 'ins' && lnk.tagName.toLowerCase() != 'del'))		{		// ascend parents until we hit a link
		lnk = getParent(lnk, 'a');		}

delay = setTimeout("showNiceTitle(lnk)", interval * 1000);	}

// build and show the nice titles
function showNiceTitle(link)	{    if (CURRENT_NICE_TITLE) hideNiceTitle(CURRENT_NICE_TITLE);
if (!document.getElementsByTagName) return;
    nicetitle = lnk.getAttribute('nicetitle');
    var d = document.createElementNS(XHTMLNS, 'div');
    d.className = 'nicetitle';
    var dc = document.createElementNS(XHTMLNS, 'div');
    dc.className = 'nicetitle-content';
    d.appendChild(dc);
    tnt = document.createTextNode(nicetitle);
    pat = document.createElementNS(XHTMLNS, 'p');
    pat.className = 'titletext';
    pat.appendChild(tnt);
// added in accesskey info
	if (lnk.accessKey)		{        axs = document.createTextNode(' [' + lnk.accessKey + ']');
		axsk = document.createElementNS(XHTMLNS, 'span');
        axsk.className = 'accesskey';
        axsk.appendChild(axs);
		pat.appendChild(axsk);		}
    dc.appendChild(pat);

if (lnk.href)		{        tnd = document.createTextNode(lnk.href);
        pad = document.createElementNS(XHTMLNS, 'p');
        pad.className = 'destination';
        pad.appendChild(tnd);
        dc.appendChild(pad);		}
    STD_WIDTH = 300;

	if (lnk.href)		{        h = lnk.href.length;		}
	else		{		h = nicetitle.length;		}

if (nicetitle.length)		{		t = nicetitle.length;		}
    h_pixels = h*6;
	t_pixels = t*10;
if (h_pixels > STD_WIDTH)		{        w = h_pixels;		}
	else if ((STD_WIDTH>t_pixels) && (t_pixels>h_pixels))		{        w = t_pixels;		}
	else if ((STD_WIDTH>t_pixels) && (h_pixels>t_pixels))		{        w = h_pixels;		}
	else		{        w = STD_WIDTH;		}
    d.style.width = w + 'px';
    mpos = findPosition(lnk);
    mx = mpos[0];
    my = mpos[1];
    d.style.left = (mx+15) + 'px';
    d.style.top = (my+35) + 'px';
if (window.innerWidth && ((mx+w) > window.innerWidth))		{        d.style.left = (window.innerWidth - w - 25) + 'px';		}
if (document.body.scrollWidth && ((mx+w) > document.body.scrollWidth))		{        d.style.left = (document.body.scrollWidth - w - 25) + 'px';		}
    document.getElementsByTagName('body')[0].appendChild(d);
    CURRENT_NICE_TITLE = d;	}
function hideNiceTitle(e)	{
// clearTimeout
	if (delay) clearTimeout(delay);
	if (!document.getElementsByTagName) return;
	if (CURRENT_NICE_TITLE)		{		document.getElementsByTagName('body')[0].removeChild(CURRENT_NICE_TITLE);		CURRENT_NICE_TITLE = null;		}
	}
addEvent(window, "load", floatImages);
addEvent(window, "resize", floatImages);
addEvent(window, "load", blockquoteCite);
addEvent(window, "load", insdelCite);
addEvent(window, "load", noAltTooltip);
addEvent(window, "load", makeNiceTitles);












