/*Author: mg12Update: 2009/04/19Author URI: http://www.neoease.com/*/(function() {var Class = {	create: function() {		return function() {			this.initialize.apply(this, arguments);		}	}}var GhostlyMenu = Class.create();GhostlyMenu.prototype = {	initialize: function(target, align, opacity, offset) {		this.obj = cleanWhitespace(target);		this.align = align || 'left';		this.opacity = 0;		this.maxopacity = opacity || 1;		this.offset = offset || 0;		this.menu = this.obj.childNodes		if (this.menu.length < 2) { return; }		this.title = this.menu[0];		this.body = this.menu[1];		cleanWhitespace(this.body).firstChild.className = 'first';		if (/MSIE/i.test(navigator.userAgent)) {			var readers = getElementsByClassName('reader', 'a', this.body);			for (var i = 0; i < readers.length; i++) {				setStyle(readers[i], 'cursor', 'hand');			}		}		setStyle(this.body, 'visibility', 'hidden');		setStyle(this.body, 'position', 'absolute');		setStyle(this.body, 'overflow', '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() {		var pos = cumulativeOffset(this.title);		var left = pos[0];		if (this.align == 'right') {			var offset = getWidth(this.title) - getWidth(this.body) + this.offset;			left += offset;		}		var top = pos[1] + getHeight(this.title);		setStyle(this.body, 'left', left + 'px');		setStyle(this.body, 'top', top + 'px');		setStyle(this.body, 'visibility', 'visible');		setStyle(this.body, 'opacity', this.opacity);		setStyle(this.body, 'MozOpacity', this.opacity);		setStyle(this.body, 'KhtmlOpacity', this.opacity);		setStyle(this.body, 'filter', 'alpha(opacity=' + this.opacity * 100 + ')');		if(this.tid) {			clearTimeout(this.tid);		}		this.tid = setInterval(bind(this, this.appear), 20);	},	deactivate: function(){		if(this.tid) {			clearTimeout(this.tid);		}		this.tid = setInterval(bind(this, this.fade), 40);	},	appear: function() {		this.opacity += 0.1;		if(this.opacity >= this.maxopacity) {			this.opacity = this.maxopacity;			clearTimeout(this.tid);		}		setStyle(this.body, 'opacity', this.opacity);		setStyle(this.body, 'MozOpacity', this.opacity);		setStyle(this.body, 'KhtmlOpacity', this.opacity);		setStyle(this.body, 'filter', 'alpha(opacity=' + this.opacity * 100 + ')');	},	fade:function() {		this.opacity -= 0.1;		if(this.opacity <= 0) {			this.opacity = 0;			setStyle(this.body, 'visibility', 'hidden');			clearTimeout(this.tid);		}		setStyle(this.body, 'opacity', this.opacity);		setStyle(this.body, 'MozOpacity', this.opacity);		setStyle(this.body, 'KhtmlOpacity', this.opacity);		setStyle(this.body, 'filter', 'alpha(opacity=' + this.opacity * 100 + ')');	}}$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;	}}getElementsByClassName = function(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;}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;}getStyle = function(element, key) {	return element.style[key];}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;}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 subscribe = document.getElementById('subscribe');	if (subscribe) {		new GhostlyMenu(subscribe, 'left', 1, 1);	}	var menubar = document.getElementById('menus');	if (menubar) {		var list = cleanWhitespace(menubar.childNodes);		for (var i = 0; i < list.length; i++) {			new GhostlyMenu(list[i], 'left', 1, 1);		}	}}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();	}}})();