function GetElementId(element) {
	
	if (element.id) {
		
		return element.id;
	}
	else if (!element.id) {
		
		if (IsNodeTypeTextOrCDATA(element) && element.parentNode && element.parentNode.id) {
			
			return element.parentNode.id;
		}
	}
	
	return null;
}

function GetElementValue(element) {

	if (element.value) {
		
		return element.value;
	}
	
	return null;
}

function IsNodeTypeTextOrCDATA(node) {
	
	isNodeTypeTextOrCDATA = false;
	
	if (node && (node.nodeType == 3 || node.nodeType == 4)) {
		
		isNodeTypeTextOrCDATA = true;
	}
	
	return isNodeTypeTextOrCDATA;
}

function getElementsByPartialId(searchPartialId, tag, elm) {
		
	if (!document.getElementsByTagName) {

		return;
	}
	
	//var testPartialId = new RegExp("^" + searchPartialId + "(\_|[0-9])");
	var testPartialId = new RegExp(searchPartialId);
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all) ? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	
	for (var i=0; i<length; i++) {
		
		current = elements[i];
		
		if(testPartialId.test(current.id)) {
			
			returnElements.push(current);
		}
	}
	
	return returnElements;
}

function getElementsByClass(searchClass, tag, node) {
		
	if (!document.getElementsByTagName) {
		
		return;
	}
	
	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;
}