Team:EPF-Lausanne/template/script.js

From 2013.igem.org

(Difference between revisions)
Line 69: Line 69:
        
        
       var returnTimeout = null;
       var returnTimeout = null;
-
       var gotoMenuItem = function(item, onComplete) {
+
       var gotoMenuItem = function(item, returningToBase) {
         if (current == item) return;
         if (current == item) return;
         if (currentTarget != null && item[0] == currentTarget[0]) return;
         if (currentTarget != null && item[0] == currentTarget[0]) return;
Line 75: Line 75:
         current.removeClass("menu-item-selected");
         current.removeClass("menu-item-selected");
         current = item;
         current = item;
-
         current.addClass("menu-item-selected");
+
         if(!returningToBase) {
 +
          current.addClass("menu-item-selected");
 +
        }
         var currentPosition = $("#taxi").position().left
         var currentPosition = $("#taxi").position().left
         var menuItemPosition = item.position().left;
         var menuItemPosition = item.position().left;
Line 89: Line 91:
             complete: function() {
             complete: function() {
               currentTarget = null;
               currentTarget = null;
-
              if (onComplete) {
 
-
                onComplete();
 
-
              }
 
             }
             }
           });
           });
Line 105: Line 104:
       };
       };
       var returnToBase = function() {
       var returnToBase = function() {
-
         gotoMenuItem(base, function() {
+
         gotoMenuItem(base, true);
-
          base.removeClass("menu-item-selected");
+
-
        });
+
         returnTimeout = null;
         returnTimeout = null;
       }
       }

Revision as of 00:26, 9 September 2013

//Generate private namespace window.EPFL = (function(){

 //Little hack to stop MediaWiki from replacing ampersands...
 var amp = unescape("%26");
 return {
   init: function(){
     EPFL.setupTitle();
     EPFL.setupTOC();
     EPFL.startTaxi();
     $('p')
       .filter(function(){
         return $.trim($(this).text()) ===  && $.trim($(this).html()).length < 10;
       })
       .remove();
   },
   onLoad: function() {
     $(".main-item").on
   },
   setupTOC: function(){
     var toc = $("#toc");
     toc.remove();
     $(".paper").prepend(toc);
   },
   setupTitle: function(){
     var title = "";
     if(window.titleOverride !== undefined && window.titleOverride !== "" && window.titleOverride !== " " && window.titleOverride !== "{{{1}}}"){
       title = window.titleOverride;
     }else{
       var title = $($(".firstHeading")[0]).text();
       var prefix = "Team:EPF-Lausanne/";
       title = title.substr(prefix.length);
       titleParts = title.split("/");
       
       switch(titleParts[0]){
         case "Template":
           titleParts.shift();
           break;
       }
       
       var result = titleParts.join(" ");
       
       if(titleParts.length > 1){
         result = titleParts.shift()+": "+titleParts.join(" ");
       }
       
       if(result == ""){
         result = "Home";
       }
       title = result;
     }
     
     $("#pageTitle").text(title);
   },
   startTaxi: function() {
     var taxi = $("#taxi");
     var menu = $($("nav")[0]);
     
     var DURATION = 400;
     var EASING = "swing";
     var DELAY = 800;
     var OFFSET = 30;
     var animate = true;
     
     var base = $(menu.find(".menu-item")[0]);
     var current = $(menu.find(".menu-item")[0]);
     var currentTarget = null;
     
     current.addClass("menu-item-selected");
     
     var returnTimeout = null;
     var gotoMenuItem = function(item, returningToBase) {
       if (current == item) return;
       if (currentTarget != null && item[0] == currentTarget[0]) return;
       
       current.removeClass("menu-item-selected");
       current = item;
       if(!returningToBase) {
         current.addClass("menu-item-selected");
       }
       var currentPosition = $("#taxi").position().left
       var menuItemPosition = item.position().left;
       
       var targetPosition = menuItemPosition + OFFSET;
       
       if (animate) {
         $("#taxi").stop(true, false);
         currentTarget = item;
         $("#taxi").animate({left: targetPosition+"px"}, {
           duration: DURATION,
           easing: EASING,
           complete: function() {
             currentTarget = null;
           }
         });
       } else {
         $("#taxi").css({left: targetPosition+"px"});
       }
       
       if(currentPosition <= targetPosition) {
         $("#taxi").css({transform: "scale(1,1)", filter: ""});
       } else {
         $("#taxi").css({transform: "scale(-1,1)", filter: "fliph"});
       }
     };
     var returnToBase = function() {
       gotoMenuItem(base, true);
       returnTimeout = null;
     }
     
     $(".menu-item").mouseover(function() {
       var obj = $(this);
       
       while(obj[0] != undefined && obj[0].tagName.toLowerCase() != "div") {
         obj = obj.parent();
       }
       
       if(!obj.hasClass("menu-item")) return;
       
       if(returnTimeout != null) {
         clearTimeout(returnTimeout);
         returnTimeout = null;
       }
       
       gotoMenuItem(obj);
     }).mouseout(function() {
       if(!$(this).hasClass("menu-item")) return;
       
       if(returnTimeout == null) {
         returnTimeout = setTimeout(returnToBase, DELAY);
       }
     });
     animate = false;
     returnToBase();
     animate = true;
   }
 };

}()); /* if(!window.console){

 //Dummy console...
 window.console = {
   log: function(){ }
 };

}*/

$(function(){

 EPFL.onLoad();

});

var oldRunOnloadHook = runOnloadHook; runOnloadHook = function(){

 EPFL.init();
 if (oldRunOnloadHook) oldRunOnloadHook();

};