var cMenuTooltip = new Class.create({
	initialize: function(menu_id, duration){
		this.menu = menu_id;
		this.duration = duration || 0.5;
		
		this.start();
	},
	
	start: function(){
		var obj = this;
		$(this.menu).select("a").each(function(item, index){
			item.onmouseover = (function(){
				this.show.bind(this).defer(item, index);
			}).bind(obj);
			item.onmouseout = (function(){
				this.hide.bind(this).defer(item, index);
			}).bind(obj);
		});
		
		$(this.menu + "_more").select(".info").each(function(item){
			item.hide();
		});
	},
	
	show: function(item, index){
		// finds the position where we shall show the tooltip and move it there
		var pos = item.positionedOffset();
		var info = $(item.identify() + "i");
		var w = info.getWidth();
		var w2 = item.getWidth();
		
		var x = pos[0] - (w - w2) / 2;
		

		if (info["effects"]){
			info.effects.cancel();
		}
		
		info.setOpacity(0).show().setStyle({
			left: x - 200 + "px",
			visibility: 'visible',
			position: 'absolute'
		}).update(info.innerHTML.gsub(" ", "&nbsp;"));
		
		info.effects = new Effect.Morph(info, {
			style: 'left:' + x + 'px; opacity: 1',
			duration: this.duration
		});
	},
	
	hide: function(item, index){
		var item = $(item.identify() + "i");
		
		if (item["effects"]){
			item.effects.cancel();
		}
		
		item.effects = new Effect.Morph(item, {
			style: 'left: ' + (item.positionedOffset()[0] + 200) + 'px; opacity: 0', 
			duration: this.duration
		});	
	}
});

new cMenuTooltip("mm");

/* sidebar tabs */
var tabs = $("tabwidget");
var containers = $("tabwidget_container");
var selected_tab;
var _oct;

function show_tab(item, id){
    if (id == selected_tab || !$(id)){ return }
    selected_tab = id;
    containers.childElements().each(function(item){
        if (item.identify() != selected_tab){
            new Effect.Parallel([
                Effect.BlindUp(item, {sync: true}),
                new Effect.Fade(item, {sync: true})
            ], {duration: 0.4, queue: {position: 'end', scope: item.identify()}});
        }
        else{
            Effect.Queues.get(item.identify()).each(function(e){
                e.effects.each(function(e){ e.cancel() });
            });
            new Effect.Parallel([
                Effect.BlindDown(item, {sync: true}),
                new Effect.Appear(item, {sync: true})
            ], {duration: 0.4, queue: {position: 'front', scope: item.identify()}});
        }
    });
    tabs.select("li.tab-item").invoke("removeClassName", "selected");
    item.up().addClassName("selected");
}

if (tabs && containers){
    var i, st;
    tabs.select("li.tab-item > a").each(function(item, index){
        var tab_id = item.href;
        if (tab_id.indexOf("#") != -1){
            tab_id = tab_id.substr(tab_id.indexOf("#") + 1);
            item.observe("click", function(e){
                e.stop();
		var at = new Date()
		if (_oct && at - _oct < 400){ return }
		_oct = at;
                show_tab(this, tab_id);
            });
        }
        if (index == 0 || item.up().hasClassName("selected")){
            i = item;
            st = tab_id;
        }
    });
    
    show_tab(i, st);
}

