// JavaScript Document
/*
USAGE:
addLoadEvent(function_name); 

Where 'function_name' is the name of the function you wish to run onload

DESCRIPTION:
Adds a function to the onload call dynamically.
*/
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

/*
USAGE:
toggleDisplay(element_id, [new_element_state(show|hide)]);

Where 'element_id' is the id of the element you wish to change.
Optional: 'new_element_state' is the new state of the element.

DESCRIPTION:
This function sets the class of the selected element to "show" or "hide" depending on current state of the element OR the state given by 'new_element_state'.
The primary purpose of this function is to show or hide elements on a web page.
*/
function toggleDisplay (elementId, elementState, textElementId, elementText ){
	var element = document.getElementById(elementId);
	var txtState;
	if(elementState == "show" || elementState == "hide"){ 
		switch(elementState){
			case 'show':
				element.className = "show";
				txtState = "hide";
			break;
			case 'hide':
			default:
				element.className = "hide";
				txtState = "show";
			break;
		}
	} else {
		switch(element.className.toLowerCase()){
			case 'hide':
				element.className = "show";
				txtState = "hide";
			break;
			case 'show':
			default:
				element.className = "hide";
				txtState = "show";
			break;
		}
	}
	if(textElement = document.getElementById(textElementId)){
		textElement.innerHTML = elementText.replace("[state]", txtState);
	}
}

function clone(elementId, refId){
	var element = document.getElementById(elementId);
	var ref = document.getElementById(refId);
	var div = element.childNodes[3].cloneNode(true);
	var del = document.createElement("INPUT");
	del.setAttribute("type", "button");
	del.setAttribute("value", "delete");
	del.onclick = function(){
		this.parentNode.parentNode.removeChild(this.parentNode);
	}
	div.insertBefore(del,div.getElementsByTagName('hr')[0]);
	element.insertBefore(div,ref);
}

//External Links Array
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.target = "_blank";
 }
}

addLoadEvent(externalLinks);