/**
 *  adds a rendom paremeter to url for prevent caching
 */
function addRandomSeed(url){
   var rnd = Math.random();

   return url +"&rnd=" + rnd;
}
/**
 * Takes a string and returns the same string, leaving only the digits.
 */
function leaveDigits(str) {
	var newStr = "";
	var exp = /\d+/g;
	var array;
	while (array = exp.exec(str)) {
		newStr += array.join();
	}
	return(newStr);
}


/**
 * Returns all elements of a given class name.
 */
function getElementsByClassName(oElm, strTagName, strClassName){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	strClassName = strClassName.replace(/\-/g, "\\-");
	var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)");
	var oElement;
	for(var i=0; i<arrElements.length; i++){
		oElement = arrElements[i];
		if(oRegExp.test(oElement.className)){
			arrReturnElements.push(oElement);
		}
	}
	return (arrReturnElements)
}

/**
 * Clears the value of the input field on the first click.
 */
function clearValue(el) {
	el.value='';
	el.onfocus='';
}

/**
 * These functions handle adding, clearing, and replacing sections of text on the page.
 */
function addText(el, strText, newID) {
	eSpan = document.createElement("span");
	eSpan.setAttribute("id", newID);
	eSpan.appendChild(document.createTextNode(strText));
	document.getElementById(el).appendChild(eSpan);
}

function addTranscript(el, node, strSpeaker, newID) {
	node.setAttribute("class", newID);
	node.setAttribute("className", newID);

    if ((strSpeaker != "") && ((strSpeaker < curSpeaker) || (strSpeaker > curSpeaker)) && node.getAttribute("hasSpeaker")!="true")
		{
		curSpeaker = strSpeaker;
		eb = document.createElement("span");
		eb.setAttribute("class", "transcriptName ");
		eb.setAttribute("className", "transcriptName ");
		var formattedSpeaker = new String(strSpeaker + ': ');
		eb.appendChild(document.createTextNode(formattedSpeaker));
		node.insertBefore(eb, node.firstChild);
        node.setAttribute("hasSpeaker","true");
        }
	document.getElementById(el).appendChild(node);
}

function clearContent(el) {
	nEl = el.cloneNode(false);
	el.parentNode.insertBefore(nEl, el);
	el.parentNode.removeChild(el);
}

function replaceText(el, strText, newID) {
	clearContent(document.getElementById(el));
	addText(el, strText, newID);
}

function replaceTranscript(el, strText, strSpeaker, newID) {
	clearContent(document.getElementById(el));
	curSpeaker = "";
	addTranscript(el, strText, strSpeaker, newID);
}