Team:Edinburgh/tech/js

From 2011.igem.org

/**

  • hoverIntent r6 // 2011.02.26 // jQuery 1.5.1+
  • <http://cherne.net/brian/resources/jquery.hoverIntent.html>
  • @param f onMouseOver function || An object with configuration options
  • @param g onMouseOut function || Nothing (use configuration options object)
  • @author Brian Cherne brian(at)cherne(dot)net
  • /

(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev])}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob)},cfg.interval)}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev])};var handleHover=function(e){var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t)}if(e.type=="mouseenter"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob)},cfg.interval)}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob)},cfg.timeout)}}};return this.bind('mouseenter',handleHover).bind('mouseleave',handleHover)}})(jQuery);

/* The following is by Lukasz Kopec, Team Edinburgh 2011 */ /* For hints */ $(document).ready(function() { var hint_no = 0; $('#hintcontainer').load("/Team:Edinburgh/tech/Hints?action=raw", function() { $('.hint').hide(); var h; $('#def_hint').show(); }); $('.hardword').hoverIntent({ over: function() { $('.hint').hide(); h = $(document).find('#'+$(this).attr('id')+'_hint').height(); $(document).find('#'+$(this).attr('id')+'_hint').show(50); hint_no++; $('#hintcontainer').height(h+10); }, timeout: 2000, out: function() { $(document).find('#'+$(this).attr('id')+'_hint').hide('fast'); hint_no--; if (hint_no == 0) { $('#def_hint').show(); h = $('#def_hint').height(); $('#hintcontainer').height(h+10); } } }); h = $('#def_hint').height(); $('#hintcontainer').height(h+10); });

/* For selecting the right menus */ function getMenus(cat, page) { $('.leftmenu').hide(); $('#'+cat+'menu').show(); $('.'+page+'menu').show(); $('.'+cat).attr('id', 'current'); $('.'+page).attr('id', 'leftcurrent'); $('.logo').attr('id', cat+'logo'); $('html').attr('id', cat+'body'); }