// Copyright (c) 2009 Erik van den Berg (http://www.planitworks.nl)
// Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) 
// and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
//
// Version: 1.2
// Requires jQuery 1.3.2+
(function(c){var d;var b;var f=function(g,h){return{width:(g&&parseInt(g))?(g-c(window).width()-c(window).scrollLeft()):0,height:(h&&parseInt(h))?(h-c(window).height()-c(window).scrollTop()):0}};var e=function(){for(cm in b){c(b[cm].allContext).removeClass(d.activeClass)}};var a=function(){if(d.activeId){c("#"+d.activeId).add("#"+d.activeId+" ul").hide()}d.activeId=null};c.fn.jeegoocontext=function(i,h){if(!d){d={}}if(!b){b={}}if(h&&h.menuClass){d.menuClass=h.menuClass}if(!d.menuClass){d.menuClass="jeegoocontext"}if(h&&h.activeClass){d.activeClass=h.activeClass}if(!d.activeClass){d.activeClass="active"}b[i]=c.extend({hoverClass:"hover",submenuClass:"submenu",operaEvent:"dblclick",fadeIn:200,delay:300,widthOverflowOffset:0,heightOverflowOffset:0,submenuLeftOffset:0,submenuTopOffset:0,autoAddSubmenuArrows:true},h||{});b[i].allContext=this.selector;c(document).mouseover(function(k){if(c(k.relatedTarget).parents("#"+i).length>0){window.clearTimeout(b[i].show);var j=c(k.relatedTarget).parent().find("li");j.add(j.find("> *")).removeClass(b[i].hoverClass);b[i].hide=window.setTimeout(function(){j.find("ul").hide()},b[i].delay)}}).click(function(j){if(d.activeId&&b[d.activeId].onHide){if(b[d.activeId].onHide.apply(c("#"+d.activeId),[j,b[d.activeId].context])==false){return false}}e();a()});if(b[i].autoAddSubmenuArrows){c("#"+i).find("li:has(ul)").not(":has(."+b[i].submenuClass+")").prepend('<span class="'+b[i].submenuClass+'"></span>')}c("#"+i).find("li").mouseover(function(o){var q=c(this);window.clearTimeout(b[i].show);window.clearTimeout(b[i].hide);c("#"+i).find("*").removeClass(b[i].hoverClass);var j=q.parents("li");q.add(q.find("> *")).add(j).add(j.find("> *")).addClass(b[i].hoverClass);var k=true;if(b[i].onHover){if(b[i].onHover.apply(this,[o,b[i].context])==false){k=false}}if(!b[i].proceed){b[i].show=window.setTimeout(function(){b[i].proceed=true;q.mouseover()},b[i].delay);o.stopPropagation();return false}b[i].proceed=false;q.parent().find("ul").not(q.find("> ul")).hide();if(!k){o.preventDefault();return false}var n=q.find("> ul");if(n.length!=0){var p=q.offset();var l=f((p.left+q.parent().width()+b[i].submenuLeftOffset+n.width()+b[i].widthOverflowOffset),(p.top+b[i].submenuTopOffset+n.height()+b[i].heightOverflowOffset));var m=p.top-q.parent().offset().top;n.css({left:(l.width>0)?(-n.width()-b[i].submenuLeftOffset+"px"):(n.width()+b[i].submenuLeftOffset+"px"),top:(l.height>0)?(m-l.height+b[i].submenuTopOffset)+"px":m+b[i].submenuTopOffset+"px"});n.fadeIn(b[i].fadeIn)}o.stopPropagation()}).click(function(j){if(b[i].onSelect){if(b[i].onSelect.apply(this,[j,b[i].context])==false){j.stopPropagation();return false}}a();c(b[i].context).removeClass(d.activeClass);j.stopPropagation()});var g=b[i].event;if(!g){g=c.browser.opera?b[i].operaEvent+".jeegoocontext":"contextmenu.jeegoocontext"}else{g+=".jeegoocontext"}return c(this)[b[i].livequery?"livequery":"bind"](g,function(l){b[i].context=this;var j=c("#"+i);var k=f((l.pageX+j.width()+b[i].widthOverflowOffset),(l.pageY+j.height()+b[i].heightOverflowOffset));if(k.width>0){l.pageX-=k.width}if(k.height>0){l.pageY-=k.height}if(b[i].onShow){if(b[i].onShow.apply(j,[l,b[i].context])==false){l.stopPropagation();return false}}a();d.activeId=i;e();c(b[i].context).addClass(d.activeClass);j.find("li, li > *").removeClass(b[i].hoverClass);j.css({left:l.pageX+"px",top:l.pageY+"px"}).fadeIn(b[i].fadeIn);l.stopPropagation();return false})};c.fn.nojeegoocontext=function(){c(this).unbind(".jeegoocontext")}})(jQuery);
