Template:Team:Washington/Templates/Header
From 2009.igem.org
(Difference between revisions)
Line 1: | Line 1: | ||
<html> | <html> | ||
<script type="text/javascript"> | <script type="text/javascript"> | ||
- | + | (function(){ | |
- | (function(){var DomReady=window.DomReady={};var userAgent=navigator.userAgent.toLowerCase();var browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:(/msie/.test(userAgent)) | + | |
+ | var DomReady = window.DomReady = {}; | ||
+ | |||
+ | // Everything that has to do with properly supporting our document ready event. Brought over from the most awesome jQuery. | ||
+ | |||
+ | var userAgent = navigator.userAgent.toLowerCase(); | ||
+ | |||
+ | // Figure out what browser is being used | ||
+ | var browser = { | ||
+ | version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1], | ||
+ | safari: /webkit/.test(userAgent), | ||
+ | opera: /opera/.test(userAgent), | ||
+ | msie: eval('(/msie/.test(userAgent))\x26\x26(!/opera/.test( userAgent ))'), | ||
+ | mozilla: eval('(/mozilla/.test(userAgent))\x26\x26(!/(compatible|webkit)/.test(userAgent))') | ||
+ | }; | ||
+ | |||
+ | var readyBound = false; | ||
+ | var isReady = false; | ||
+ | var readyList = []; | ||
+ | |||
+ | // Handle when the DOM is ready | ||
+ | function domReady() { | ||
+ | // Make sure that the DOM is not already loaded | ||
+ | if(!isReady) { | ||
+ | // Remember that the DOM is ready | ||
+ | isReady = true; | ||
+ | |||
+ | if(readyList) { | ||
+ | for(var fn = 0; fn < readyList.length; fn++) { | ||
+ | readyList[fn].call(window, []); | ||
+ | } | ||
+ | |||
+ | readyList = []; | ||
+ | } | ||
+ | } | ||
+ | }; | ||
+ | |||
+ | // From Simon Willison. A safe way to fire onload w/o screwing up everyone else. | ||
+ | function addLoadEvent(func) { | ||
+ | var oldonload = window.onload; | ||
+ | if (typeof window.onload != 'function') { | ||
+ | window.onload = func; | ||
+ | } else { | ||
+ | window.onload = function() { | ||
+ | if (oldonload) { | ||
+ | oldonload(); | ||
+ | } | ||
+ | func(); | ||
+ | } | ||
+ | } | ||
+ | }; | ||
+ | |||
+ | // does the heavy work of working through the browsers idiosyncracies (let's call them that) to hook onload. | ||
+ | function bindReady() { | ||
+ | if(readyBound) { | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | readyBound = true; | ||
+ | |||
+ | // Mozilla, Opera (see further below for it) and webkit nightlies currently support this event | ||
+ | if (eval('document.addEventListener\x26\x26!browser.opera')) { | ||
+ | // Use the handy event callback | ||
+ | document.addEventListener("DOMContentLoaded", domReady, false); | ||
+ | } | ||
+ | |||
+ | // If IE is used and is not in a frame | ||
+ | // Continually check to see if the document is ready | ||
+ | if (eval('browser.msie\x26\x26window == top')) (function(){ | ||
+ | if (isReady) return; | ||
+ | try { | ||
+ | // If IE is used, use the trick by Diego Perini | ||
+ | // http://javascript.nwbox.com/IEContentLoaded/ | ||
+ | document.documentElement.doScroll("left"); | ||
+ | } catch(error) { | ||
+ | setTimeout(arguments.callee, 0); | ||
+ | return; | ||
+ | } | ||
+ | // and execute any waiting functions | ||
+ | domReady(); | ||
+ | })(); | ||
+ | |||
+ | if(browser.opera) { | ||
+ | document.addEventListener( "DOMContentLoaded", function () { | ||
+ | if (isReady) return; | ||
+ | for (var i = 0; i < document.styleSheets.length; i++) | ||
+ | if (document.styleSheets[i].disabled) { | ||
+ | setTimeout( arguments.callee, 0 ); | ||
+ | return; | ||
+ | } | ||
+ | // and execute any waiting functions | ||
+ | domReady(); | ||
+ | }, false); | ||
+ | } | ||
+ | |||
+ | if(browser.safari) { | ||
+ | var numStyles; | ||
+ | (function(){ | ||
+ | if (isReady) return; | ||
+ | if (eval('document.readyState != "loaded"\x26\x26document.readyState != "complete"')) { | ||
+ | setTimeout( arguments.callee, 0 ); | ||
+ | return; | ||
+ | } | ||
+ | if (numStyles === undefined) { | ||
+ | var links = document.getElementsByTagName("link"); | ||
+ | for (var i=0; i < links.length; i++) { | ||
+ | if(links[i].getAttribute('rel') == 'stylesheet') { | ||
+ | numStyles++; | ||
+ | } | ||
+ | } | ||
+ | var styles = document.getElementsByTagName("style"); | ||
+ | numStyles += styles.length; | ||
+ | } | ||
+ | if (document.styleSheets.length != numStyles) { | ||
+ | setTimeout( arguments.callee, 0 ); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | // and execute any waiting functions | ||
+ | domReady(); | ||
+ | })(); | ||
+ | } | ||
+ | |||
+ | // A fallback to window.onload, that will always work | ||
+ | addLoadEvent(domReady); | ||
+ | }; | ||
+ | |||
+ | // This is the public function that people can use to hook up ready. | ||
+ | DomReady.ready = function(fn, args) { | ||
+ | // Attach the listeners | ||
+ | bindReady(); | ||
+ | |||
+ | // If the DOM is already ready | ||
+ | if (isReady) { | ||
+ | // Execute the function immediately | ||
+ | fn.call(window, []); | ||
+ | } else { | ||
+ | // Add the function to the wait list | ||
+ | readyList.push( function() { return fn.call(window, []); } ); | ||
+ | } | ||
+ | }; | ||
+ | |||
+ | bindReady(); | ||
+ | |||
+ | })(); | ||
DomReady.ready(function() { | DomReady.ready(function() { | ||
if (Math.max(document.documentElement.scrollTop, document.body.scrollTop) === 0) { | if (Math.max(document.documentElement.scrollTop, document.body.scrollTop) === 0) { | ||
Line 22: | Line 166: | ||
} | } | ||
}; | }; | ||
- | |||
- | |||
<style type="text/css"> | <style type="text/css"> | ||
#h_leftBar { | #h_leftBar { | ||
float: left; | float: left; | ||
} | } | ||
- | |||
#uw_navBar { | #uw_navBar { | ||
float: left; | float: left; | ||
Line 51: | Line 192: | ||
border-left: 1px solid black; | border-left: 1px solid black; | ||
} | } | ||
- | |||
#contentSub { | #contentSub { | ||
display: none; | display: none; |
Revision as of 08:38, 8 October 2009