/*

Author: jcyuan.space@gmail.com

for top bar 'home', 'favorite' and the menu

@2011 1.13

*/

window.addEvent('domready', function()

{

	new Menu('menubar').draw();

	initHeaders();
	showTime();
});


var timer0 = null;
var week = new Array( "日", "一", "二", "三", "四", "五", "六" );

function showTime()
{

   var dt = new Date();
   var weekday = week[dt.getDay()];
   var tp = document.getElementById("timePlace");
   //var result = dt.toLocaleDateString()+" 星期"+weekday;//+" "+dt.toLocaleTimeString();
   var result = dt.toLocaleDateString()+" 星期"+weekday+" "+dt.toLocaleTimeString();
   tp.innerHTML = result;
   //timer0 = setTimeout(showTime,1000);  
}



function initHeaders()

{

	var handlers = [function(e)

	{

		e.stop();

		var url = top.location;

		if(Browser.ie)

		{

			document.body.style.behavior = 'url(#default#homepage)';

			document.body.setHomePage(url);

		}

		else if(Browser.firefox)

		{

			try

			{

				netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");

			}

			catch(e)

			{

				alert("操作已被浏览器拒绝！请在浏览器地址栏输入“about:config”并回车然后将[signed.applets.codebase_principal_support]设置为'true'后再重试一次。");

				return;

			}

			

			var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);

			prefs.setCharPref('browser.startup.homepage', url);

		}

		else

		{

			alert("无法为该浏览器自动设置首页，请您手动设置。");

			return;

		}

	}, function(e)

	{

		e.stop();

		var title = document.title;

		var url = top.location;

		try 

    	{

			window.external.addFavorite(url, title);

		}

		catch(e)

		{

			try

			{

				window.sidebar.addPanel(title, url, "");

			}

			catch(e)

			{

				alert("无法为该浏览器增加新的Bookmark，请您手动添加。");

			}

		}

	}];

	$$('setHomePage', 'addFavorite').forEach(function(ele, i)

	{

		ele.addEvent('click', handlers[i]);

	});

}



var Menu = new Class({

	id : '',

	offsetX : 6,

	targetX : 30,

	initialize : function(menuid)

	{

		this.id = menuid;

	},

	setMenuID : function(id)

	{

		this.id = id;

	},

	draw : function()

	{

		if(!this.id)

		{

			throw new Error('invalid menu id, please set it first.');

			return;

		}

		

		this.menuItems = $$('#' + this.id + ' > ul > li').filter(function(item){ return (!item.hasClass('menusep')); });

		this.menuItems.each(function(item)

		{

			var i = item;

			

			item.addEvent('mouseenter', (function(e){ this._mouseenter.apply(this, [e, i]); }).bind(this));

			item.addEvent('mouseleave',  (function(e){ this._mouseleave.apply(this, [e, i]); }).bind(this));

			

			var subitem = item.getElement('ul.submenu');

			if(typeOf(subitem) == 'element')

			{

				item.subMenu = subitem;

				subitem.set('morph', {

					link:'cancel',

					transition:'expo:out',

					duration:700

				});

				subitem.setStyles({'left':this.targetX, 'opacity':0, 'display':'block'}); //init

				

				subitem.addEvent('mouseenter', (function(e){ e.stop(); clearTimeout(this.timer); }).bind(subitem));

				subitem.addEvent('mouseleave', (function(e){ this._mouseleave.apply(this, [e, i]); }).bind(this));

			}

		}, this);

	},

	/*events*/

	_mouseenter : function(e, i)

	{

		e.stop();

		if(!i.subMenu)return;

		clearTimeout(i.subMenu.timer);

		i.subMenu.morph({'left':this.offsetX, 'opacity':1});

	},

	_mouseleave : function(e, i)

	{

		e.stop();

		if(!i.subMenu)return;

		clearTimeout(i.subMenu.timer);

		i.subMenu.timer = i.subMenu.morph.delay(100, i.subMenu, {'left':this.targetX, 'opacity':0});

	}

});
