//emul ie
if(typeof HTMLElement!='undefined') {
	HTMLElement.prototype.insertAdjacentElement = function(where,parsedNode) {
		switch(where) {
		case 'beforeBegin':
			this.parentNode.insertBefore(parsedNode,this)
			break;
		case 'afterBegin':
			this.insertBefore(parsedNode,this.firstChild);
			break;
		case 'beforeEnd':
			this.appendChild(parsedNode);
			break;
		case 'afterEnd':
			if (this.nextSibling) this.parentNode.insertBefore(parsedNode,this.nextSibling);
			else this.parentNode.appendChild(parsedNode);
			break;
		}
	};

	HTMLElement.prototype.insertAdjacentHTML = function(where,htmlStr) {
		var r = this.ownerDocument.createRange();
		r.setStartBefore(this);
		var parsedHTML = r.createContextualFragment(htmlStr);
		this.insertAdjacentElement(where,parsedHTML)
	};


	HTMLElement.prototype.insertAdjacentText = function(where,txtStr) {
		var parsedText = document.createTextNode(txtStr)
		this.insertAdjacentElement(where,parsedText)
	};


	HTMLElement.prototype.__defineSetter__("innerHTML", function (str) {
		var r = this.ownerDocument.createRange();
		r.selectNodeContents(this);
		r.deleteContents();
		var df = r.createContextualFragment(str);
		this.appendChild(df);
		return str;
	});

	HTMLElement.prototype.__defineSetter__("outerHTML", function (str) {
		var r = this.ownerDocument.createRange();
		r.setStartBefore(this);
		var df = r.createContextualFragment(str);
		this.parentNode.replaceChild(df, this);
		return str;
	});


	HTMLElement.prototype.__defineGetter__("innerHTML", function () {
		return getInnerHTML(this);
	});

	HTMLElement.prototype.__defineGetter__("outerHTML", function () {
		return getOuterHTML(this)
	});
}


if(typeof HTMLBodyElement!='undefined') {
	Event.prototype.__defineGetter__("clientWidth", function() {
		return window.innerWidth;
	});

	Event.prototype.__defineGetter__("clientHeight", function() {
		return window.innerHeight;
	});
}

if(typeof CSSStyleDeclaration!='undefined') {
	CSSStyleDeclaration.prototype.__defineSetter__("cursor", function(v) {
		if(v=="hand") v = "pointer";
		this.setProperty("cursor", v, "important");
	});
}

