function DOMGetElement(o) {
	// Determine DOM reference
  if (document.getElementById) return document.getElementById(o);
  else if (document.all)       return document.all[o];
  else if (document.layers)    return document.layers[o];
  return null;
}

// Element visibility
function DOMElementHide(o) {
	if (document.getElementById || document.all) {
		o.style.visibility = 'hidden';
		o.style.display = 'none';
	} else if (document.layers) o.visibility = 'hidden';
}

function DOMElementShow(o) {
	if (document.getElementById || document.all) {
		o.style.visibility = 'visible';
		o.style.display = 'block';
	} else if (document.layers) o.visibility = 'visible';
}

// Position functions
function DOMElementSetTop(o,val) {
	if (document.layers) o.top = val;
	else                 o.style.top = val;
}

function DOMElementSetTopPos(o,val) {
	// Set top position for the div
	if (document.layers) o.pageY = val;
	else                 o.style.top = val;
}

function DOMElementGetTop(o) {
	if (document.layers) return o.top;
	else                 return o.style.top;
}

function DOMElementSetLeft(o,val) {
	if (document.layers) o.left = val;
	else                 o.style.left = val;
}

function DOMElementSetLeftPos(o,val) {
	// Set left position for the div
	if (document.layers) o.pageX = val;
	else                 o.style.left = val;
}

function DOMElementGetLeft(o) {
	if (document.layers) return o.left;
	else                 return o.style.left;
}

// Dimension functions
function DOMElementGetHeight(o) {
	// Determine how high the div is
	if (document.all)                 return o.clientHeight;
	else if (document.getElementById) return parseInt(o.offsetHeight);
	else if (document.layers)         return o.document.height;
}

function DOMElementGetWidth(o) {
	// Determine how wide the div is
	if (document.all)                 return o.clientWidth;
	else if (document.getElementById) return parseInt(o.offsetWidth);
	else if (document.layers)         return o.document.width;
}

function DOMWindowGetXOffset() {
	// Determine how much of the div is hidden outside of the left-hand side of the browser window
	if (document.all) return document.body.scrollLeft;
	else              return window.pageXOffset;
}

function DOMWindowGetYOffset() {
	// Determine how much of the div is hidden outside the top of the browser window
	if (document.all) return document.body.scrollTop;
	else              return window.pageYOffset;
}

function DOMWindowGetInnerWidth() {
	// Determine how wide the browser window is
	if (document.all) return document.body.clientWidth;
	else              return window.innerWidth;
}

function DOMWindowGetInnerHeight() {
	// Determine how high the browser window is
	if (document.all) return document.body.clientHeight;
	else              return window.innerHeight;
}

// Event functions
function DOMEventGetOffsetX(e) {
	if (document.all)                  return e.offsetX;
	else if (document.getElementById)  return e.clientX + window.pageXOffset;
	else if (document.layers)          return e.pageX;
}

function DOMEventGetOffsetY(e) {
	if (document.all)                  return e.offsetY;
	else if (document.getElementById)  return e.clientY + window.pageYOffset;
	else if (document.layers)          return e.pageY;
}

function DOMEventGetClientX(e) {
	if (document.layers) return e.pageX;
	else                 return e.clientX;
}

function DOMEventGetClientY(e) {
	if (document.layers) return e.pageY;
	else                 return e.clientY;
} 

function DOMEventGetX(e) {
	if (document.all) return event.x;
	else              return e.pageX;
}

function DOMEventGetY(e) {
	if (document.all) return event.y;
	else              return e.pageY;
}
function DOMElementGetOffsetTop(o) {
	if (document.layers) return o.top;
	else                 return o.offsetTop;
}

function DOMElementGetOffsetLeft(o) {
	if (document.layers) return o.left;
	else                 return o.offsetLeft;
}

function DOMEventGetSrc(e) {
	if (document.all) return e.srcElement.href;
	else if (document.getElementById) {
		if (document.images[e.originalTarget.name])
			return document.images[e.originalTarget.name].src;
		else
			return null;
		}
	else if (document.layers) return e.target.src;
}

function DOMEventGetName(e) {
	if (document.all)                 return e.srcElement.name;
	else if (document.getElementById) return e.originalTarget.name;
	else if (document.layers)         return e.target.name;
}

if (document.createRange && document.createRange().createContextualFragment) HTMLElement.prototype.innerHTML = innerHTML;

function innerHTML(html) {
	while (this.hasChildNodes()) this.removeChild(this.lastChild);
	var range = document.createRange();
	range.setStartAfter(this);
	this.appendChild(range.createContextualFragment(html));
}

function DOMElementSetInnerHTML(o,html) {
	if (document.getElementById)       o.innerHTML = html;
	else if (document.all)             o.innerHTML = html;
	else if (document.layers) {
		o.document.open();
		o.document.write(html);
		o.document.close();
	}
}

function scrollbarFixUp(){
	if (is.ie) return 0;
	else if (is.nav) return 16;
	else return 0;
}
