Team:TU Delft/files/main.js
From 2010.igem.org
Line 39: | Line 39: | ||
return kvmap; | return kvmap; | ||
} | } | ||
- | |||
function setHash(page, kvmap) { | function setHash(page, kvmap) { | ||
Line 61: | Line 60: | ||
js.onreadystatechange = function () { | js.onreadystatechange = function () { | ||
- | if (js.readyState == 'complete') | + | if (js.readyState == 'complete') { |
cb(); | cb(); | ||
+ | } | ||
} | } | ||
Line 70: | Line 70: | ||
function loadScript(src, callback) | function loadScript(src, callback) | ||
{ | { | ||
- | + | include_js(src, callback); | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
} | } | ||
- | function loadPage(page | + | function loadPage(page) |
{ | { | ||
currentPage = page; | currentPage = page; | ||
Line 92: | Line 84: | ||
$(window).trigger('page_init'); | $(window).trigger('page_init'); | ||
rewriteLinks($("#load")); | rewriteLinks($("#load")); | ||
- | |||
next(); | next(); | ||
} | } | ||
Line 113: | Line 104: | ||
if (changepage) { | if (changepage) { | ||
- | loadPage(changepage | + | loadPage(changepage); |
- | } else | + | } else |
- | + | ||
$(window).trigger('hashupdate'); | $(window).trigger('hashupdate'); | ||
- | |||
} | } | ||
} else { | } else { | ||
Line 130: | Line 119: | ||
var url = this.href; | var url = this.href; | ||
- | if(this.hash) | + | if(this.hash) |
- | + | this.href = this.hash; | |
- | + | else if(txt != "edit") | |
- | + | ||
- | + | ||
- | + | ||
this.href = this.href.replace("https://2010.igem.org/Team:TU_Delft/", "#page="); | this.href = this.href.replace("https://2010.igem.org/Team:TU_Delft/", "#page="); | ||
Revision as of 09:23, 5 August 2010
//Global Vars var currentPage;
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'); $("#load").fadeOut(200);
var processPage = function(next) { dbgout('processPage: ' + page); $(window).trigger('page_init'); rewriteLinks($("#load")); next(); }
$.get(url, function(data) { $("#load").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); }); }