site = {
	popups: {},
	
	menus: {},
	
	init: function(){
		this.highlightMenu();
		this.preparePopups();
		this.prepareMenus();
	},
	
	highlightMenu: function(){
		dojo.query('#menulinks a').forEach(function(node){
			if( window.location.href == dojo.attr(node,'href') ){
				dojo.addClass(node,'current');
			}
		});
	},
	
	preparePopups: function(){
		var popupLinks = dojo.query('.popupLink');
		popupLinks.forEach(function(node){
			var popupId = node.id.substr(6);
			
			var popup = dojo.byId('popup'+popupId);
			
			this.popups[popupId] = {
				link: node,
				node: popup,
				_showAnim: dojo.fadeIn({node: popup}),
				_hideAnim: dojo.fadeOut({node: popup, onEnd: function(){dojo.style(popup,'display','none');}}),
				show: function(){
					dojo.style(popup,{opacity:0, display: 'block'});
					this._showAnim.play();
				},
				hide: function(){this._hideAnim.play();}
			};
			
			dojo.connect(node,'onclick',this,function(e){
				dojo.stopEvent(e);
				this.popups[popupId].show();
			});
			
			dojo.query('.popupCloseButton',popup).forEach(function(button){
				dojo.connect(button,'onclick',this,function(e){
					dojo.stopEvent(e);
					this.popups[popupId].hide();
				});
			},this);
			
			dojo.style(popup,{
				display: 'none',
				visibility: 'visible'
			});
		},this);
		
	},
	
	prepareMenus: function(){
		var menuAnchors = dojo.query('.catMenuAnchor');
		menuAnchors.forEach(function(anchor){
			var id = anchor.id.substr(7);
			
			var menu = dojo.byId('catMenu-'+id);
			
			this.menus[id] = {
				anchor: anchor,
				node: menu,
				timer: null,
				isShowing: false,
				_showAnim: dojo.fadeIn({
					node: menu, 
					duration: 100,
					onEnd: function(){
						site.menus[id].isShowing = true;
					}
				}),
				_hideAnim: dojo.fadeOut({
					node: menu, 
					duration: 500,
					onEnd: function(){
						dojo.style(menu,'display','none');
						site.menus[id].isShowing = false;
					}
				}),
				show: function(){
					dojo.style(menu,{opacity:0, display: 'block'});
					this._showAnim.play();
				},
				hide: function(){this._hideAnim.play();}
				
			};
			
			dojo.connect(anchor,'onmouseenter',this,function(){ this.showMenu(id); });
			dojo.connect(anchor,'onmouseleave',this,function(){ this.hideMenu(id); });
			dojo.connect(menu,'onmouseenter',this,function(){ this.showMenu(id); });
			dojo.connect(menu,'onmouseleave',this,function(){ this.hideMenu(id); });
			
			dojo.style(menu,{
				'left': (anchor.offsetWidth+5) + 'px',
				'top': '-6px',
  			    'display': 'none',
				'visibility': 'visible'
			});
			
		},this);
	},
	
	showMenu: function(id){
		var menu = this.menus[id];
		if(menu.timer){
			clearTimeout(menu.timer);
		}
		if(!menu.isShowing){
			var useFade = true;
			
			for(var _id in this.menus){
				if(_id != id){
					var _menu = this.menus[_id];
					if(_menu.isShowing || true){
						if(_menu.timer){
							clearTimeout(_menu.timer);
						}
						dojo.style(_menu.node,'display','none');
						//_menu.isShowing = false;
						useFade = false;
					}
				}
			}
			if(useFade){
				menu.show();
			}else{
				dojo.style(menu.node,{'display':'block','opacity':1});
				//menu.isShowing = true;
			}
		}
	},
	
	hideMenu: function(id){
		var menu = this.menus[id];

		if(menu.timer){
			clearTimeout(menu.timer);
		}
		if(!menu.isShowing){
			//return;
		}
		menu.timer = setTimeout(dojo.hitch(menu,'hide'),700);
	}
	
};

dojo.addOnLoad(dojo.hitch(site,'init'));
