
proxyAddEvent(window, "load", modClass);

function proxyAddEvent(obj, event, func) {
   if (obj.addEventListener) {
		   obj.addEventListener(event, func, false);
   } else if (obj.attachEvent) {
		   obj.attachEvent("on" + event, func);
   }
}

function modClass(){
	if( !document.getElementById || !document.getElementsByTagName) return false;
	var container = document.getElementById("simplemenu");
	container.childNodes[0].className ="first";
	
	
}
function $i(s, p) {
	return (p || document).getElementById(s);
}
function $t(t, p) {
	return (p || document).getElementsByTagName(t || "*");
}
function $c(c, t, p) {
	var a = [];
	var ts = $t(t, p);
	var r = new RegExp("\\b" + c + "\\b");
	for (var i = 0, t; t = ts[i]; i++) {
		if (t.className.match(r)) {
			a.push(t);
		}
	}
	return a;
}
var Class = {
	add: function (o, c) {
		var cn = o.className;
		var m = new RegExp("\\b" + c + "\\b", "i").exec(cn);
		if (!m) {
			o.className += (cn.length > 0 ? " " : "") + c;
		}
	},

	del: function (o, c) {
		var cn = o.className;
		var m = new RegExp("\\b" + c + "\\b", "i").exec(cn);
		if (m) {
			o.className = (cn.replace(new RegExp(m), ""));
		}
	},
	
	get: function(o) {
		return o.className.match(/\b\w+\b/g);
	}
};
Array.prototype.contains = function(o) {
	for (var i = 0, l = this.length; i < l; i++) {
		if (this[i] === o) {
			return i + 1;
		}
	}
	return 0;
};
Function.bind = function(f, o) {
	var a;
	if (arguments.length > 0) {
		a = $a(arguments).slice(2, arguments.length);
	}
	
	for (var i = 0, l = Function.bind.cache.length; i < l; i++) {
		var fn = Function.bind.cache[i];
		if (fn.fnct == f && fn.obj == o && fn.args.length == a.length) {
			var t = true;
			for (var j = 0, a1, a2; (a1 = fn.args[j]) && (a2 = a[j]); j++) {
				t = a1 == a2;
				if (!t) {
					break;
				}
			}
			if (t) {
				return fn.method;
			}
		}
	}
	
	var fn = {
		fnct: f,
		obj: o,
		args: a,
		method: function() {
			return f.apply(o, (a ? a.concat($a(arguments)) : arguments));
		}
	};
	
	Function.bind.cache.push(fn);
	return fn.method;
};
Function.bind.cache = [];
function $a(a) {
	var r = new Array();
	for (var i = 0, l = a.length; i < l; i++) {
		r.push(a[i]);
	}
	return r;
}
if (!Event) {
	var Event = {};
}
Event.attach = function (o, t, f, fc, c, a) {
	var fn = Function.bind(f, (fc || o));
	var z = o["_on" + t];
	if (z) {
		o["_on" + t] = function() {
			var f1 = z.apply(this, arguments);
			var f2 = fn.apply(this, arguments);
			return ((f1 !== false ? true : false) && (f2 !== false ? true : false));
		};
	} else {
		var h = Function.bind(Event.handle, Event, fn, a);
		if (o.addEventListener) {
			o.addEventListener(t, h, (c ? true : false));
		} else {
			o.attachEvent("on" + t, h);
		}
	}
};
Event.detach = function(o, t, f, fc, c, a) {
	var fn = Function.bind(f, (fc || o));
	var z = o["_on" + t];
	if (!z) {
		var h = Function.bind(Event.handle, Event, fn, a);
		if (o.removeEventListener) {
			o.removeEventListener(t, h, (c ? true : false));
		} else {
			o.detachEvent("on" + t, h);
		}
	}
};
Event.handle = function(f, as, e) {
	if (!e) {
		e = window.event;
	}
	if (!e.preventDefault) {
		e.preventDefault = function() {
			this.returnValue = false;
		};
	}
	if (!e.stopPropagation) {
		e.stopPropagation = function() {
			this.cancelBubble = true;
		};
	}
	if (!e.target && e.srcElement) {
		e.target = e.srcElement;
		if (e.type == "onmouseout") {
			e.relatedTarget = e.toElement;
		} else if (e.type == "onmouseover") {
			e.relatedTarget = e.fromElement;
		}
	}
	if (!e.detail && e.wheelDelta) {
		e.detail = e.wheelDelta * -1;
	}
	if (as) {
		for (var i = 0, a; a = as[i]; i++) {
			switch(a) {
				case Event.actions.PREVENTDEFAULT:
					e.preventDefault();
					break;
				
				case Event.actions.STOPPROPAGATION:
					e.stopPropagation();
					break;
			}
		}
	}
	f(e);
};
Event.actions = {
	PREVENTDEFAULT: 1,
	STOPPROPAGATION: 2
};
function Ajax(url) {
	this.method = Ajax.method.GET;
	this.async = true;
	this.output = Ajax.output.XML;
	this.contentType = "application/x-www-form-urlencoded";
	this.xmlhttp = (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest());
	this.xmlhttp.url = url;
	this.xmlhttp.onreadystatechange = Function.bind(this.onstatechange, this);
}
Ajax.method = {
	GET: "GET",
	POST: "POST"
};
Ajax.output = {
	XML: 0,
	TEXT: 1
};
Ajax.prototype = {
	_onprogress: function(c, t) {},
	_onload: function(r, x) {},
	_onerror: function(r, c, t) {},
	send: function(s, t) {
		this.xmlhttp.open(this.method, this.xmlhttp.url, this.async);
		if (this.async) {
			this.xmlhttp.setRequestHeader("Content-Type", this.contentType);
			this.xmlhttp.setRequestHeader("Content-Length", (s ? s.length : 0));
			// Slight hack to allow SOAP 1.1 requests (1.2 doesn't work with Microsoft.XMLHTTP and responseXML)
			if (this.soapAction) {
				this.xmlhttp.setRequestHeader("SOAPAction", this.soapAction);
			}
		}
		this.xmlhttp.send(s);
		if (!this.async) {
			return (this.xmlhttp["response" + (this.output == Ajax.output.XML ? "XML" : "Text")]);
		}
	},
	onstatechange: function() {
		switch (this.xmlhttp.readyState) {
			case 3:
				var len;
				var l;
				try {
					len = this.xmlhttp.responseText.length;
					l = parseInt(this.xmlhttp.getResponseHeader("Content-Length"));
				} catch (er) {
					l = -1;
					len = -1;
				}
				this._onprogress(len, l);
				break;
			
			case 4:
				if (this.xmlhttp.status == 200) {
					this._onload(this.xmlhttp["response" + (this.output == Ajax.output.XML ? "XML" : "Text")], this.xmlhttp);
				} else {
					this._onerror(this.xmlhttp["response" + (this.output == Ajax.output.XML ? "XML" : "Text")], this.xmlhttp.status, this.xmlhttp.statusText);
				}
				break;
		}
	}
};
function AjaxForm(form) {
	this.form = form;
	Event.attach(form, "submit", this.submit, this, null, [ Event.actions.PREVENTDEFAULT ]);
}
AjaxForm.prototype = {
	submit: function() {
		var ajax = new Ajax(this.form.getAttribute("action"));
		ajax.method = Ajax.method.POST;
		ajax.output = Ajax.output.TEXT;
		Event.attach(ajax, "load", this.submitCb, this);
		Event.attach(ajax, "error", function(r, c, t) { this._onerror(r, c, t); }, this);

		var values = [];
		var inputs = $t("input", this.form);
		for (var i = 0, input; input = inputs[i]; i++) {
			var type = input.getAttribute("type").toLowerCase();
			if (type == "text" || type == "hidden" || ((type == "checkbox" || type=="radio") && input.checked)) {
				values.push(input.getAttribute("name") + "=" + encodeURIComponent(input.value));
			}
		}
		
		var texts = $t("textarea", this.form);
		for (var i = 0, text; text = texts[i]; i++) {
			values.push(text.getAttribute("name") + "=" + encodeURIComponent(text.value));
		}
		
		Class.add(this.form, "loading");
		ajax.send(values.join("&"));
	},
	submitCb: function(r) {
		Class.del(this.form, "loading");
		Class.add(this.form, "submitted");
	},
	_onerror: function(r, c, t) {
		Class.del(this.form, "loading");
		Class.add(this.form, "error");
	}
};
