/*
Author: mg12
Update: 2008/05/05
Author URI: http://www.neoease.com/
*/
(function() {

function $(id) {
	return document.getElementById(id);
}

function setStyleDisplay(id, status) {
	$(id).style.display = status;
}

function goTop(a, t) {
	a = a || 0.1;
	t = t || 16;

	var x1 = 0;
	var y1 = 0;
	var x2 = 0;
	var y2 = 0;
	var x3 = 0;
	var y3 = 0;

	if (document.documentElement) {
		x1 = document.documentElement.scrollLeft || 0;
		y1 = document.documentElement.scrollTop || 0;
	}
	if (document.body) {
		x2 = document.body.scrollLeft || 0;
		y2 = document.body.scrollTop || 0;
	}
	var x3 = window.scrollX || 0;
	var y3 = window.scrollY || 0;

	var x = Math.max(x1, Math.max(x2, x3));
	var y = Math.max(y1, Math.max(y2, y3));

	var speed = 1 + a;
	window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));
	if(x > 0 || y > 0) {
		var f = "MGJS.goTop(" + a + ", " + t + ")";
		window.setTimeout(f, t);
	}
}

function switchTab(showPanels, hidePanels, activeTab, activeClass, fadeTab, fadeClass) {
	$(activeTab).className = activeClass;
	$(fadeTab).className = fadeClass;

	var panel, panelList;
	panelList = showPanels.split(',');
	for (var i = 0; i < panelList.length; i++) {
		var panel = panelList[i];
		if ($(panel)) {
			setStyleDisplay(panel, 'block');
		}
	}
	panelList = hidePanels.split(',');
	for (var i = 0; i < panelList.length; i++) {
		panel = panelList[i];
		if ($(panel)) {
			setStyleDisplay(panel, 'none');
		}
	}
}

function loadCommentShortcut() {
	$('comment').onkeydown = function (moz_ev) {
		var ev = null;
		if (window.event){
			ev = window.event;
		} else {
			ev = moz_ev;
		}
		if (ev != null && ev.ctrlKey && ev.keyCode == 13) {
			$('submit').click();
		}
	}
	$('submit').value += ' (Ctrl+Enter)';
}

function getElementsByClassName(className, tag, parent) {
	parent = parent || document;

	var allTags = (tag == '*' && parent.all) ? parent.all : parent.getElementsByTagName(tag);
	var matchingElements = new Array();

	className = className.replace(/\-/g, '\\-');
	var regex = new RegExp('(^|\\s)' + className + '(\\s|$)');

	var element;
	for (var i = 0; i < allTags.length; i++) {
		element = allTags[i];
		if (regex.test(element.className)) {
			matchingElements.push(element);
		}
	}

	return matchingElements;
}

window['MGJS'] = {};
window['MGJS']['$'] = $;
window['MGJS']['setStyleDisplay'] = setStyleDisplay;
window['MGJS']['goTop'] = goTop;
window['MGJS']['switchTab'] = switchTab;
window['MGJS']['loadCommentShortcut'] = loadCommentShortcut;
window['MGJS']['getElementsByClassName'] = getElementsByClassName;

})();

  (function () {var Class = {create: function () {return function () {this.initialize.apply(this, arguments);};}};var GhostlyMenu = Class.create();GhostlyMenu.prototype = {initialize: function (target, align, sub) {this.obj = cleanWhitespace(target);this.align = align || "left";this.sub = sub || - 1;this.menu = this.obj.childNodes;if (this.menu.length < 2) {return;}this.title = this.menu[0];this.body = this.menu[1];cleanWhitespace(this.body).lastChild.getElementsByTagName("a")[0].className += " last";setStyle(this.body, "visibility", "hidden");setStyle(this.body, "display", "block");addListener(this.obj, "mouseover", bind(this, this.activate), false);addListener(this.obj, "mouseout", bind(this, this.deactivate), false);}, activate: function () {if (this.sub == 1) {var pos = currentOffset(this.title);var top = pos[1] - 1;var left = getWidth(this.body) - 2;if (this.align == "right") {var left = getWidth(this.body) * - 1;}} else {var pos = cumulativeOffset(this.title);var top = pos[1] + getHeight(this.title);var left = pos[0];if (this.align == "right") {left += getWidth(this.title) - getWidth(this.body);}}if (!/current/.test(this.title.className)) {this.title.className += " current";}setStyle(this.body, "left", left + "px");setStyle(this.body, "top", top + "px");setStyle(this.body, "visibility", "visible");}, deactivate: function () {this.title.className = this.title.className.replace("current", "");var thismenu = this;var tid = setInterval(function () {clearInterval(tid);if (!/current/.test(thismenu.title.className)) {setStyle(thismenu.body, "visibility", "hidden");}return false;}, 400);}};$A = function (iterable) {if (!iterable) {return [];}if (iterable.toArray) {return iterable.toArray();} else {var results = [];for (var i = 0; i < iterable.length; i++) {results.push(iterable[i]);}return results;}};bind = function () {var array = this.$A(arguments);var func = array[array.length - 1];var method = func, args = array, object = args.shift();return function () {return method.apply(object, args.concat(array));};};getHeight = function (element) {return element.offsetHeight;};getWidth = function (element) {return element.offsetWidth;};setStyle = function (element, key, value) {element.style[key] = value;};cleanWhitespace = function (list) {var node = list.firstChild;while (node) {var nextNode = node.nextSibling;if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) {list.removeChild(node);}node = nextNode;}return list;};currentOffset = function (element) {var valueT = element.offsetTop || 0;var valueL = element.offsetLeft || 0;return [valueL, valueT];};cumulativeOffset = function (element) {var valueT = 0, valueL = 0;do {valueT += element.offsetTop || 0;valueL += element.offsetLeft || 0;element = element.offsetParent;} while (element);return [valueL, valueT];};addListener = function (element, name, observer, useCapture) {if (element.addEventListener) {element.addEventListener(name, observer, useCapture);} else if (element.attachEvent) {element.attachEvent("on" + name, observer);}};
function loadMenus() {var align = "left";for (var i = 0; a = document.getElementsByTagName("link")[i]; i++) {if (a.getAttribute("rel") == "stylesheet" && a.getAttribute("href").indexOf("rtl.css") != - 1) {align = "right";}}var subscribe = document.getElementById("subscribe");if (subscribe) {new GhostlyMenu(subscribe, align);}var menubar = document.getElementById("menus");if (menubar) {var list = menubar.getElementsByTagName("ul");for (var i = 0; i < list.length; i++) {var menu = list[i].parentNode;if (menu.parentNode === menubar) {new GhostlyMenu(menu, align);} else {new GhostlyMenu(menu, align, 1);menu.firstChild.className += " subtitle";}}}}

if (document.addEventListener) {document.addEventListener("DOMContentLoaded", loadMenus, false);} else if (/MSIE/i.test(navigator.userAgent)) {document.write("<script id=\"__ie_onload_for_inove\" defer src=\"javascript:void(0)\"></script>");var script = document.getElementById("__ie_onload_for_inove");script.onreadystatechange = function () {if (this.readyState == "complete") {loadMenus();}};} else if (/WebKit/i.test(navigator.userAgent)) {var _timer = setInterval(function () {if (/loaded|complete/.test(document.readyState)) {clearInterval(_timer);loadMenus();}}, 10);} else {window.onload = function (e) {loadMenus();};}}());
