if (!window.HTMLElement) {
	
	if (!window.Element) {
		//var Element = new Object();
		Element = new Object();
	} else {
		Element = window.Element.prototype;
	}
	
	
	
} else {
	
	Element = HTMLElement.prototype;
	
}	


if (!document.DOMguay) {	

	document.addEvent = function(obj, ev, fn) {
		
		if (obj.addEventListener){
			
			obj.addEventListener(ev, fn, false);
			return true;
			
		} else if (obj.attachEvent){
			
			var r = obj.attachEvent('on' + ev, fn);
			return r;
			
		} else {
			
			return false;
			
		}
	}
	
	Element.addEvent = function(ev, fn) {
		
		return document.addEvent(this, ev, fn);
		
	}
	
	document.hasClass = function(className, element) {
		
		return (element.className && element.className.match( new RegExp( "\\b"+className+"\\b" ))) ? true : false;
		
	}
	
	document.addClass = function(className, element) {
		
		if (!document.hasClass(className, element)) {			
			if (element.className && element.className.length > 0) {
				element.className += (' ' + className);
			} else {
				element.className = className;
			}
		}

	}
	
	document.removeClass = function(className, element) {
		
		if (document.hasClass(className, element)) {			
			element.className = element.className.replace (new RegExp( "\\b" + className + "\\b" ), '');			
		}

	}
	
	// getElementsByClassName
	Element.hasClass = function (className) {
		
		return document.hasClass(className, this);
		  
	  
	  
	}
	
	if (typeof document.getElementsByClassName != 'function') {	
	
		document.getElementsByTagAndClassName = function(tagName, className, parentElement) {
		
			var elements = new Array();
			var parent = parentElement ? parentElement : document.body;
			var children = parent.getElementsByTagName(tagName);
		
			for (var i = 0; i < children.length; i++ ) {
				
				if (this.hasClass(className, children[i])) elements[elements.length] = children[i];
			
			}
		
			return elements;
		
		}
		
		document.getElementsByClassName = function(className, parentElement) { 
			return document.getElementsByTagAndClassName("*", className, parentElement);  
		}	
		
		Element.getElementsByTagAndClassName = function(tagName, className) {
			return document.getElementsByTagAndClassName(tagName, className, this);
		}
		
		Element.getElementsByClassName = function(className) {
			return document.getElementsByClassName (className, this);
		}
		
	}
	
	
	function getForm(element) {
		
		var frm = element;
			
		while (frm && frm.nodeName.toLowerCase() != 'form') {
			frm = frm.parentNode;
		}
		
		return frm;
		
	}
	
	function getMod(element) {		
		
		var div = element;
			
		while (div) {
			
			if (div.nodeName.toLowerCase() == 'div' && document.hasClass('HDMod', div)) {
				
				return div;
			} 
			
			div = div.parentNode;
		}
		
		return false;
		
	}
	
	
	Element.addClass = function(className) {
		
		return document.addClass(className, this);
		
	}
	
	Element.removeClass = function(className) {
		
		return document.removeClass(className, this);
		
	}
	
	document.show = function(element) {
		element.style.display = '';
	}

	document.hide = function(element) {
		element.style.display = 'none';
	}

	Element.show = function() {
		document.show(this);
	}
	
	Element.hide = function() {
		document.hide(this);
	}
	
	document.DOMguay = true;
}