var Contextmenu = {
    handler: {},
    init : function() {
    },
    set : function(m) {
	$(document)
	    .unbind('contextmenu')
	    .unbind('click');
	Contextmenu.handler = {};
	$('#contextmenu').remove();
	$(document.body).append('<ul id="contextmenu"></ul>');
	$('#contextmenu').hide()
	    .css({position:'fixed',
		  zIndex:100000,
		  backgroundColor:'#fff',
		  padding:'10px',
		  border:'1px solid #ccc',
		  MozBoxShadow: '2px 2px 6px #ccc',
		  WebkitBoxShadow: '2px 2px 6px #ccc',
		  WebkitBorderRadius: '4px',
		  MozBorderRadius: '4px'
		 });
	var i = 0;
	for(var n in m) {
	    var id = 'contextmenuitem-'+(i++);
	    if(m[n] == undefined) {
		$('#contextmenu').append('<li class="contextmenu-separator">-</li>');
	    } else {
		$('#contextmenu').append('<li><a id="'+id+'" class="a-contextmenuitem" href="javascript:void(0)">'+n+'</a></li>');
		Contextmenu.handler[id] = m[n];
		$('#'+id)
		    .bind('click',function(evt) {
			      $('#contextmenu').hide();
			      var id = $(evt.target).attr('id');
			      Contextmenu.handler[id]();
			  });
	    }
	}
	$(document)
	    .bind('contextmenu',function(evt) {
		      $('#contextmenu').show()
			  .css({top:evt.clientY,
				left:evt.clientX
			       });
		      return false;
		  })
	    .bind('click',function(evt) {
		      $('#contextmenu').hide();
		  });
    }
}
$(document).ready(Contextmenu.init);
