/*

	References [function, resource]
	
	$                   http://www.dustindiaz.com/top-ten-javascript/
	addEvent            http://www.ejohn.org/projects/flexible-javascript-events/
	externalLinks       http://www.sitepoint.com/article/standards-compliant-world/
	getElementsByClass  http://www.dustindiaz.com/getelementsbyclass/
	ieHover             http://www.htmldog.com/articles/suckerfish/dropdowns/
	insertAfter         http://snipplr.com/view/2107/insertafter-function-for-the-dom/
	removeEvent         http://www.ejohn.org/projects/flexible-javascript-events/
	swapImage           http://www.alistapart.com/articles/imagegallery/
	toggle              http://www.dustindiaz.com/seven-togglers/

*/

//
function $() {
	var elements = new Array();
	for(var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if(typeof element == 'string')
			element = document.getElementById(element);
		if(arguments.length == 1)
			return element;
		elements.push(element);
	}
	return elements;
}

// 
function addEvent(obj, type, fn) {
	if(obj.attachEvent) {
		obj['e'+type+fn] = fn;
		obj[type+fn] = function() {
			obj['e'+type+fn](window.event);
		}
		obj.attachEvent('on'+type, obj[type+fn] );
	} else
		obj.addEventListener(type, fn, false);
}

// 
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')
			anchor.setAttribute('target', '_blank');
	}
}

// 
function getElementsByClass(searchClass, node, tag) {
	var classElements = new Array();
	if(node == null)
		node = document;
	if(tag == null)
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\\\s)"+searchClass+"(\\\\s|$)");
	for(i = 0, j = 0; i < elsLen; i++)
		if(pattern.test(els[i].className)) {
			classElements[j] = els[i];
			j++;
		}
	return classElements;
}

// 
ieHover = function() {
	var sfEls = document.getElementById('navigation').getElementsByTagName('li');
	for(var i = 0; i < sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className += " iehover";
		}
		sfEls[i].onmouseout=function() {
			this.className = this.className.replace(new RegExp(" iehover\\b"), "");
		}
	}
}

// 
function insertAfter(newElement, targetElement) {
	var parent = targetElement.parentNode;
	if(parent.lastchild == targetElement)
		parent.appendChild(newElement);
	else
		parent.insertBefore(newElement, targetElement.nextSibling);
}

// 
function removeEvent(obj, type, fn) {
	if(obj.detachEvent) {
		obj.detachEvent('on'+type, obj[type+fn]);
		obj[type+fn] = null;
	} else
		obj.removeEventListener(type, fn, false);
}

//
function swapImage(whichpic) {
	if(document.getElementById) {
		document.getElementById('placeholder').src = whichpic.href;
		if(whichpic.title)
			document.getElementById('description').childNodes[0].nodeValue = whichpic.title;
		else
			document.getElementById('description').childNodes[0].nodeValue = whichpic.childNodes[0].nodeValue;
		return false;
	} else
		return true;
}

// 
function toggle() {
	for( var i=0; i < arguments.length; i++ )
		$(arguments[i]).style.display = ($(arguments[i]).style.display != 'none' ? 'none' : '');
}

// 
addEvent(window, 'load', externalLinks);
addEvent(window, 'load', ieHover);