/*
 * hiddenAttr.js: Cross-browser hidden attribute implementation.
 * NOTE should work in IE 8+ and any other browser
 * 2011-07-10
 *
 * By Marcus Hauser, http://marcus.lugsp.at/
 * Public Domain.
 * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
 */

/*global self, document */

/*! @source http://marcus.lugsp.at/js/standard/hiddenAttr.js*/

if(typeof document !== "undefined" && !("hidden" in document.createElement("div")))
{
	(function (view)
	{
		"use strict";

		// define variables and functions
		var
		proto = (view.HTMLElement || view.Element).prototype,
		hiddenGetter = function()
		{
			if(this.hasAttribute("hidden"))
			{
				return true;
			}
			return false;
		},
		hiddenSetter = function(flag)
		{
			if(flag)  // true
			{
				this.setAttribute("hidden", "");
			}
			else  // false
			{
				if(this.hasAttribute("hidden"))
				{
					this.removeAttribute("hidden");
				}
			}
		};

		// install getter and setter
		if(Object.defineProperty)
		{
			Object.defineProperty(proto, "hidden",
			{
				"get": hiddenGetter,
				"set": hiddenSetter
			});
		}
		else if(Object.__defineGetter__ && Object.__defineSetter__)
		{
			proto.__defineGetter__("hidden", hiddenGetter);
			proto.__defineSetter__("hidden", hiddenSetter);
		}
	}(self));
}

