
/*
* General DOM tools
*/
/*
* Converts an object or array into a string in a very rudimentary way for debugging
* @param obj Objec tor array to be converted
* @return str String representing the inputted object
*/
function to_str(obj){
	str="";
	for(i in obj){
		str+= i+"="+obj[i]+"<br/>";
	}
	return str
}
/*
* Trace a string to a trace element for debugging
* @param str String to trace
*/
function trace(str){
	if(typeof line_num=="undefined"){
		line_num=0;
	}
	if(document.getElementById("trace")!=null){
		document.getElementById("trace").innerHTML+=line_num+": "+str+"<br/>";
		line_num++;
	}
	
}

/*
* Remove ALL child nodes from an element
* @param parent_node DOM element (e.g. <div>) to remove children from
*/
function removeChildNodes(parent_node){
	if ( parent_node.hasChildNodes() )	{
		while ( parent_node.childNodes.length >= 1 ){
			parent_node.removeChild( parent_node.firstChild );       
		} 
	}
}
/*
* Inserts a new paragraph into a DOM element
* @param parent_node DOM element (e.g. <div>) to insert <p> child into
* @param node_content Text to insert
*/
function appendParagraph(parent_node, node_content){
	var new_node = document.createElement("p");
	var new_text = document.createTextNode(node_content);
	new_node.appendChild(new_text);
	parent_node.appendChild(new_node);
}

/*
* Makes specific <a> tags launch in an external window
*/
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";
	}
}
window.onload = externalLinks;
