Team:TU Delft/test
From 2010.igem.org
(Difference between revisions)
Line 5: | Line 5: | ||
<script> | <script> | ||
//Global Vars | //Global Vars | ||
+ | var currentPage; | ||
var in_frame_test = 1; | var in_frame_test = 1; | ||
+ | |||
+ | function dbgout(msg) { | ||
+ | var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; | ||
+ | if(is_chrome) console.log(msg); | ||
+ | } | ||
+ | |||
+ | // Set document ready callback | ||
+ | $(function() { | ||
+ | // Initialize history plugin. | ||
+ | $(window).hashchange(historyCallback); | ||
+ | rewriteLinks($("#navlist")); | ||
+ | |||
+ | historyCallback(); | ||
+ | |||
+ | // setup hovering | ||
+ | $(".menu_button").hover( | ||
+ | function () { $(this).addClass("hover"); }, | ||
+ | function () { $(this).removeClass("hover"); } | ||
+ | ); | ||
+ | }); | ||
+ | |||
+ | |||
+ | function isDefined(variable) | ||
+ | { | ||
+ | return typeof(window[variable]) != "undefined"; | ||
+ | } | ||
+ | |||
+ | function splitHash(hash) { | ||
+ | var kvpairs = hash.split('&'); | ||
+ | var i; | ||
+ | var kvmap = {}; | ||
+ | for(i=0;i<kvpairs.length;i++) { | ||
+ | var s = kvpairs[i].split('='); | ||
+ | kvmap[s[0]] = s[1]; | ||
+ | } | ||
+ | return kvmap; | ||
+ | } | ||
+ | |||
+ | function setHash(page, kvmap) { | ||
+ | var str = '#page=' + page; | ||
+ | var i; | ||
+ | if (kvmap) { | ||
+ | for(i in kvmap) { | ||
+ | str += '&' + i + '=' + kvmap[i]; | ||
+ | } | ||
+ | } | ||
+ | location.hash = str; | ||
+ | } | ||
+ | |||
+ | |||
+ | function include_js(file, cb) { | ||
+ | var html_doc = document.getElementsByTagName('head')[0]; | ||
+ | var js = document.createElement('script'); | ||
+ | js.setAttribute('type', 'text/javascript'); | ||
+ | js.setAttribute('src', file); | ||
+ | html_doc.appendChild(js); | ||
+ | |||
+ | js.onreadystatechange = function () { | ||
+ | if (js.readyState == 'complete') { | ||
+ | cb(); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | js.onload = cb; | ||
+ | } | ||
+ | |||
+ | function loadScript(src, callback) | ||
+ | { | ||
+ | include_js(src, callback); | ||
+ | } | ||
+ | |||
+ | function loadPage(page) | ||
+ | { | ||
+ | currentPage = page; | ||
+ | var url = wgServer + "/Team:TU_Delft/" + page + "?action=render"; | ||
+ | $(window).trigger('page_close'); | ||
+ | $("#iGEM_TU_Delft_container").fadeOut(200); | ||
+ | |||
+ | var processPage = function(next) { | ||
+ | dbgout('processPage: ' + page); | ||
+ | $(window).trigger('page_init'); | ||
+ | rewriteLinks($("#load")); | ||
+ | next(); | ||
+ | } | ||
+ | |||
+ | $.get(url, function(data) { | ||
+ | $("#iGEM_TU_Delft_container").html(data).fadeIn(200).queue(processPage); | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | function historyCallback() { | ||
+ | var hash = location.hash; | ||
+ | if(hash) { | ||
+ | hash = hash.substring(1); | ||
+ | if(hash.split('=').length > 1) { | ||
+ | var kvmap = splitHash(hash); | ||
+ | var changepage; | ||
+ | |||
+ | // looks a little clumsy, but js AND operator conflicts with mediawiki markup | ||
+ | if (kvmap.page) if(kvmap.page != currentPage) changepage = kvmap.page; | ||
+ | |||
+ | if (changepage) { | ||
+ | loadPage(changepage); | ||
+ | } else | ||
+ | $(window).trigger('hashupdate'); | ||
+ | } | ||
+ | } else { | ||
+ | setHash('pages/home'); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | function rewriteLinks(elem) { | ||
+ | $("a",elem).each(function() { | ||
+ | var txt = $(this).text(); | ||
+ | var url = this.href; | ||
+ | |||
+ | if(this.hash) | ||
+ | this.href = this.hash; | ||
+ | else if(txt != "edit") | ||
+ | this.href = this.href.replace("https://2010.igem.org/Team:TU_Delft/", "#page="); | ||
+ | |||
+ | // dbgout('rewriting ' + url + ' to ' + this.href); | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | |||
</script> | </script> | ||
- | |||
<div id="iGEM_TU_Delft_container"> | <div id="iGEM_TU_Delft_container"> | ||
</div> | </div> | ||
</html> | </html> |
Revision as of 12:30, 27 September 2010