//add an onload event
function addOnLoadEvent(onloadToAdd){
	var prevOnLoad = window.onload;	
	if(typeof window.onload != 'function'){
		window.onload = onloadToAdd;
	} else {
		window.onload = function(){
		if(prevOnLoad){
			prevOnLoad();
		}
		onloadToAdd();
		}
	}

}


    /////////////////////////////
  //           DOM+          //
/////////////////////////////


// DOM+ node manpulation
function removeChildren(elm){
	while (elm.hasChildNodes()){
		elm.removeChild(elm.lastChild);		
	}
}

//will recursively copy all children of FROM to TO
function copyChildren(from, to){
	var start = from.childNodes;
	for(var i = 0; i<start.length; i++){
		if(start[i].nodeType==1){
			var x = document.createElement(start[i].nodeName);
			to.appendChild(x);
			
		}else if(start[i].nodeType == 3){
			var x = document.createTextNode(start[i].nodeValue);
			to.appendChild(x);
		}
		copyChildren(start[i], x);
	}
}

// DOM+ element selection expansion (come up with something more sexy sounding for this please)

//Courtesy of quirksMode.com
//TagNames, plural
function getElementsByTagNames(list,obj) {
	if (!obj) var obj = document;
	var tagNames = list.split(',');
	var resultArray = new Array();
	for (var i=0;i<tagNames.length;i++) {
		var tags = obj.getElementsByTagName(tagNames[i]);
		for (var j=0;j<tags.length;j++) {
			resultArray.push(tags[j]);
		}
	}
	var testNode = resultArray[0];
	if (!testNode) return [];
	if (testNode.sourceIndex) {
		resultArray.sort(function (a,b) {
				return a.sourceIndex - b.sourceIndex;
		});
	}
	else if (testNode.compareDocumentPosition) {
		resultArray.sort(function (a,b) {
				return 3 - (a.compareDocumentPosition(b) & 6);
		});
	}
	return resultArray;
}



//courtesy of Dustin Diaz
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 (var i = 0, j = 0; i < elsLen; i++) {
            if ( pattern.test(els[i].className) ) {
                    classElements[j] = els[i];
                    j++;
            }
    }
    return classElements;
}
/* elm - object whose name is to be updated
   value - className to update
   which - 1: add class name -- -1: remove class name */
function updateClassName(elm, value, which){
	console.log(which)
	var updateValue;
	if(!which){which = 1;}
	if(which ==1){
		if(elm.className != ''){
			updateValue = value;
		}else{
			updateValue = ' ' + value;
		}
		elm.className += updateValue;
	}else if (which == -1){
		var RExp = ' '+value+'\\b';
		elm.className=elm.className.replace(new RegExp(value+'\\b'), "");
	}
	
}



