/************************
Onload function.

Examples on calling it;
addLoadEvent(nameOfSomeFunctionToRunOnPageLoad);
addLoadEvent(function() {
  //more code to run on page load
});
************************/
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

//attach events
function onloader(func) {
	if(window.addEventListener && !window.opera) { // Firefox 1.5+, Gecko/Mozilla 1.0.1+, Konqueror, Safari 3.0
		window.addEventListener('load', func, true);
	}
	else if(window.attachEvent) { // Microsoft IE 5+, Opera 8.0+
		window.attachEvent('onload', func);
	}
	else { // Incomplete solution.. Add func to any existing window.onload. Any later inconsiderate window.onload can overwrite the window.onload set here
		var o=window.onload;
		window.onload = function() { o ? o() : o;func() }
	}
	return;
}


/************************
Onload Calls
************************/
onloader(externalLinks);


/************************
Target attribute for links for valid xhtml strict.
Eg. <a href='#' rel='external'>link</a>
************************/
function externalLinks() {
	if (!document.getElementsByTagName)
		return;

	var anchors = document.getElementsByTagName("a");
	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") { //new window
			anchor.target = "_blank";
		}
		else if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "top") { //load in top frame
			anchor.target = "_top";
		}
	}
}


/************************
getElementsByClassName - use natively if possible.
Firefox 3+, Safari 3.1+ and Opera 9.5b+ support getElementsByClassName
************************/
if(!document.getElementsByClassName) {
	Object.prototype.getElementsByClassName = document.getElementsByClassName = document.getElementsByClassName || function(className) {
		className = className.replace(/\s+/g, ' ').replace(/^\s|![A-Za-z0-9-_\s]|\s$/g, '').split(' ');
	
		for (var i = 0, elements = this.getElementsByTagName('*'), elementsLength = elements.length, b = [], classNameLength = className.length, passed = true; i < elementsLength; i++, passed = true) {
			for (var j = 0; j < classNameLength && passed; j++) {
				passed = (new RegExp('(^|\\\s)' + className[j] + '(\\\s|$)', 'i')).test(elements[i].className);
			}
	
			if (passed) {
				b.push(elements[i]);
			}
		}
	
		return b;
	};
}

