Team:Edinburgh/tech/js

From 2011.igem.org

(Difference between revisions)
Line 98: Line 98:
}
}
}
}
-
 
-
var mytextsizer=new fluidtextresizer({
 
-
controlsdiv: "fontnav",
 
-
targets: [".navbody"],
 
-
levels: 5,
 
-
persist: "session",
 
-
animate: 0})
 
-
});
 
-
 
/* The following is by Lukasz Kopec, Team Edinburgh 2011 */
/* The following is by Lukasz Kopec, Team Edinburgh 2011 */
/* For hints */
/* For hints */

Revision as of 16:13, 21 September 2011

/**

  • 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); /* Text resizing*/ /*Fluid Text Resizer (June 27th, 2010)

jQuery.noConflict()

function fluidtextresizer(setting){ fluidtextresizer.count=(fluidtextresizer.count)? ++fluidtextresizer.count : 1 this.cookiename="fluidtextsizer"+fluidtextresizer.count //name of cookie to use to store persistence for this text resizer instance this.setting=setting this.selectors=[] //array translating setting.targets into array of jquery selectors this.$controls=null this.defaultfontsizes=[] this.curfontlevel=0 var thisobj=this jQuery(function($){ //on document.ready var els=setting.targets for (var i=0; i<els.length; i++){ if ($(els[i]).length==0){ //if selector doesn't yield any matched elements els.splice(i, 1) //delete it from setting.targets[] i-=1 continue } var curfontsize=$(els[i]).css('fontSize') thisobj.defaultfontsizes.push({val:parseFloat(curfontsize), unit:curfontsize.slice(-2)}) //remember default font sizes of target elements thisobj.selectors.push($(els[i])) //cache selector } if (setting.controlsdiv){ //if special container for resize controls defined thisobj.$controls=$('#'+setting.controlsdiv).find('a[href^=#fontsize], a[href=#bigger], a[href=#smaller]') thisobj.$controls.each(function(){ var $target=$(this) $target.data('level', $target.attr('href').replace(/(#)|(fontsize)/ig, )) //remove "#" and "fontsize" from href to derive level $target.click(function(){ thisobj.setFontLevel($target.data('level')) return false }) }) } if (setting.persisttype!="none"){ var curfontlevel=fluidtextresizer.routines.getCookie(thisobj.cookiename) || 0 //get persisted font level, or 0 to indicate no change in font size curfontlevel=parseInt(curfontlevel) if (curfontlevel>=-setting.levels && curfontlevel<=setting.levels){ //if font level within range thisobj.setFontLevel(curfontlevel, true) } } }) }

fluidtextresizer.prototype={

setFontLevel:function(level, disableanim){ var s=this.setting var $els=this.selectors var level=(level=="bigger")? this.curfontlevel+1 : (level=="smaller")? this.curfontlevel-1 : parseInt(level) //calculate new font size level if (s.controlsdiv){ //if special container for resize controls defined this.$controls.filter('.selectedcontrol').removeClass('selectedcontrol').end() //deselect previously selected control .filter('[href=#fontsize'+level+']').addClass('selectedcontrol') //apply "selectedcontrol" CSS class to corresponding control } if (level<-s.levels || level>s.levels || level==this.curfontlevel) //if target level is out or range (range is int from -s.levels to +s.levels) or is current level already return for (var i=0; i<$els.length; i++){ var abslevel=Math.abs(level) var valchange=Math.pow(1.2, abslevel) //calculate fontlevel^1.2 //calculate new font size, which is default font size multiply or divided by valchange: var newfontsize=this.defaultfontsizes[i].val * (level<0? 1/valchange : level>0? valchange : 1) + this.defaultfontsizes[i].unit $els[i].animate({fontSize: newfontsize}, disableanim? 0 : this.setting.animate) } if (s.persist=="session"){ fluidtextresizer.routines.setCookie(this.cookiename, level) } this.curfontlevel=level }

}

fluidtextresizer.routines={ getCookie:function(Name){ var re=new RegExp(Name+"=[^;]*", "i"); //construct RE to search for target name/value pair return (document.cookie.match(re))? document.cookie.match(re)[0].split("=")[1] : null //return cookie value if found or null },

setCookie:function(name, value, days){ var expirestr= if (typeof days!="undefined") //if set persistent cookie expirestr="; expires="+expireDate.setDate(new Date().getDate()+days).toGMTString() document.cookie = name+"="+value+"; path=/"+expirestr } } /* 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'); }