0byt3m1n1
Path:
/
data
/
applications
/
aps.bak
/
wordpress
/
themes
/
inove
/
js
/
[
Home
]
File: menu.js
/* Author: mg12 Update: 2009/08/07 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, 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(); } } })();