/*

	general extensions to DOM and functions to make cross-browser stuff easier.

*/
function xDOM(){
	
	
}
/*

	find the first parent node of a given type for a given element.

*/
xDOM.findParent = function(nodeName, target){
	if(target.parentNode){
		if(target.parentNode.nodeName == nodeName){
			return target.parentNode;
		}else{
			return xDOM.findParent(nodeName, target.parentNode);
		}
	}else{
		return false;
	}
}
/*

	Get an XMLHttpRequest object for the browser we're working in...

*/
xDOM.XMLHttpRequest = function () {
	var req = false;
    // branch for native XMLHttpRequest object
    if(window.XMLHttpRequest) {
    	try {
			req = new XMLHttpRequest();
        } catch(e) {
			req = false;
        }
    // branch for IE/Windows ActiveX version
    } else if(window.ActiveXObject) {
       	try {
        	req = new ActiveXObject("Msxml2.XMLHTTP");
      	} catch(e) {
        	try {
          		req = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch(e) {
          		req = false;
        	}
		}
    }
	return req;
}


xDOM.getElementsByClass = function (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;
}
// Return object with query string variables.
xDOM.parseQueryString  = function () {

 var objQuery = new Object();
 var strQuery = location.search.substring(1);
 var aryQuery = strQuery.split("&");
 var pair = [];
 for (var i = 0; i < aryQuery.length; i++){
  pair = aryQuery[i].split("=");
  if (pair.length == 2)
   objQuery[unescape(pair[0])] = unescape(pair[1]);
 }
 return objQuery;
}
