Path: blob/master/calctut/calctut-res/calctut.js
2467 views
var calctut = {1pages: ["index.html", "limits.html", "continuity.html", "onesided.html", "inflimits.html", "slantasymp.html", "tangent.html", "derivative.html", "differentiability.html", "diffrules.html"],2titles: ["Introduction", "Limits", "Continuity", "One-Sided Limits", "Limits at Infinity", "Supplement: Slant Asymptotes", "Tangent Lines", "The Definition of the Derivative", "Differentiability", "Differentiation Rules"],3id: null,4index: -1,5start: -1,6end: -1,7lines: false,8fsize: 0,9twoyears: null,10redir: null,1112initCalc: function() {13calctut.pages[-1] = "review.html";14calctut.titles[-1] = "Review";15calctut.id = [];16for(var i = 0; i < calctut.pages.length; i ++) {17calctut.id[i] = calctut.pages[i].substring(0, calctut.pages[i].lastIndexOf("."));18}19if(calctut.index == -1) {20calctut.refreshIndex();21}22calctut.updateTitle();23calctut.twoyears = new Date();24calctut.twoyears.setFullYear(calctut.twoyears.getFullYear()+2);25},2627refreshIndex: function() {28var curpage = location.href.substring(location.href.lastIndexOf("\/")+1);29for(var i = 0; i < calctut.pages.length; i ++) {30if(curpage == calctut.pages[i]) {31calctut.index = i;32}33}34},3536updateTitle: function() {37document.title = "Sage Calculus Tutorial - "+calctut.titles[calctut.index];38},3940pageLoad: function() {41calctut.checkCookie();42calctut.writeCookieLastVisited();43calctut.updateLineNumbers();44if(calctut.fsize && calctut.fsize !== 0) {45var sign = Math.abs(calctut.fsize)/calctut.fsize;46for(var i = 0; i < Math.abs(calctut.fsize); i ++) {47changeFontSize(sign, sign*2, false);48}49}50calctut.goToCurrentNav();51calctut.hideExplanations();52calctut.populateDropdown();53},5455checkCookie: function() {56var namestart, nameend;57var arr = ["lines", "fsize"];58var value;59for(var i = 0; i < arr.length; i ++) {60var index = document.cookie.indexOf(arr[i]);61if(index != -1) {62namestart = (document.cookie.indexOf("=", index) + 1);63nameend = document.cookie.indexOf(";", index);64if(nameend == -1) {65nameend = document.cookie.length;66}67value = document.cookie.substring(namestart, nameend);68switch (i) {69case 0:70calctut.lines = value == "true";71break;72case 1:73calctut.fsize = value;74break;75default:76break;77}78}79}80},8182writeCookieLines: function() {83document.cookie = "lines="+calctut.lines+"; expires="+calctut.twoyears.toString();84},8586writeCookieFSize: function() {87if(calctut.fsize > 5) {88calctut.fsize = 5;89} else if(calctut.fsize < -2) {90calctut.fsize = -2;91}92document.cookie = "fsize="+calctut.fsize+"; expires="+calctut.twoyears.toString();93},9495writeCookieLastVisited: function() {96document.cookie = "lastvisited="+calctut.pages[calctut.index]+"; expires="+calctut.twoyears.toString();97},9899goToCurrentNav: function() {100return;101/*102var pos = calctut.end-calctut.index;103if(calctut.index < 0) {104pos = 1;105}106navbarjs.initSlide(pos, true);107navbarjs.currentTab = pos;108*/109},110111hideExplanations: function() {112for(var i = 1; true; i ++) {113d = document.getElementById("explain"+i);114if(!d) {115break;116}117d.style.display = 'none';118}119},120121populateDropdown: function() {122var select = document.getElementById("tutgoto");123var x = new Option();124x.text = "Go to...";125x.value = "-1";126var y = new Option();127y.text = "Review";128y.value = "-1";129//Even though select.add(x, null); would be standards-compliant, IE doesn't support it. Hm...130//One more reason to use Firefox, I guess.131try {132select.add(x, null);133select.add(y, null);134} catch(err) {135select.add(x);136select.add(y);137}138for(var i = 0; i < calctut.pages.length; i ++) {139var opt = new Option();140if(i > 0) {141var num = i+"";142if(num.length == 1)143num = "0"+num;144opt.text = num+"-"+calctut.titles[i];145} else {146opt.text = calctut.titles[i];147}148opt.value = ""+i;149try {150select.add(opt, null);151} catch(err) {152select.add(opt);153}154}155select.selectedIndex = calctut.index+2;156},157158toggleLineNumbers: function() {159calctut.lines = !calctut.lines;160calctut.writeCookieLines();161calctut.updateLineNumbers();162},163164fontPlus: function() {165calctut.fsize ++;166calctut.writeCookieFSize();167},168169fontMinus: function() {170calctut.fsize --;171calctut.writeCookieFSize();172},173174updateLineNumbers: function() {175var pres = document.getElementsByTagName('pre');176var tutcodes = new Array();177for(var i = 0; i < pres.length; i ++) {178if(pres[i].className == 'tutcode')179tutcodes.push(pres[i]);180}181for(var i = 0; i < tutcodes.length; i ++) {182var s = tutcodes[i].innerHTML.split('\n');183var html = '';184for(var a = 0; a < s.length; a ++) {185if(s[a] == '' && a+1 == s.length) {186break;187}188if(calctut.lines) {189s[a] = (a+1)+') '+s[a];190} else if(s[a].indexOf(")") == (a+1).toString().length) {191s[a] = s[a].substring((a+1).toString().length+2);192} else {193i = -1;194break;195}196html += s[a]+'\r\n';197}198if(i == -1) {199break;200}201tutcodes[i].innerHTML = html;202}203},204205dropdownSelect: function () {206var select = document.getElementById("tutgoto");207if(select.selectedIndex > 0) {208document.location.href = calctut.pages[select.selectedIndex-2];209}210},211212generateNav: function() {213if(calctut.id == null) {214calctut.initCalc();215}216calctut.start = calctut.index;217calctut.end = calctut.index;218if(calctut.index+1 < calctut.pages.length) {219document.write("<li id=\""+calctut.id[calctut.index+1]+"\"><a href=\""+calctut.pages[calctut.index+1]+"\" title=\"\">Next ("+calctut.titles[calctut.index+1]+")<\/a><\/li>");220calctut.end = calctut.index+1;221}222if(calctut.index >= -1)223document.write("<li id=\""+calctut.id[calctut.index]+"\"><a href=\""+calctut.pages[calctut.index]+"\" title=\"\">"+calctut.titles[calctut.index]+"<\/a><\/li>");224if(calctut.index >= 0) {225document.write("<li id=\""+calctut.id[calctut.index-1]+"\"><a href=\""+calctut.pages[calctut.index-1]+"\" title=\"\">Previous ("+calctut.titles[calctut.index-1]+")<\/a><\/li>");226calctut.start = calctut.index-1;227}228},229230toggle: function(no) {231var disp = document.getElementById("explain"+no).style.display == 'none';232if(disp) {233document.getElementById("explain"+no).style.display = '';234} else {235document.getElementById("explain"+no).style.display = 'none';236}237},238239ansToggle: function(no, text) {240var ans = document.getElementById("answer"+no);241if(ans.innerHTML == "Toggle answer") {242ans.innerHTML = text;243}244else {245ans.innerHTML = "Toggle answer";246}247},248249writePreviousPage: function() {250if(calctut.index-1 >= 0) {251document.write("<td><a class=\"noresize\" href=\""+calctut.pages[calctut.index-1]+"\">Previous ("+calctut.titles[calctut.index-1]+")<\/a><\/td>");252} else {253document.write("<td> <\/td>");254}255},256257writeNextPage: function() {258if(calctut.index+1 < calctut.pages.length) {259document.write("<td><a class=\"noresize\" href=\""+calctut.pages[calctut.index+1]+"\">Next ("+calctut.titles[calctut.index+1]+")<\/a><\/td>");260} else {261document.write("<td> <\/td>");262}263},264265doLastVisited: function() {266calctut.initCalc();267var namestart, nameend, address, title = "";268var index = document.cookie.indexOf("lastvisited");269if(index != -1) {270namestart = (document.cookie.indexOf("=", index) + 1);271nameend = document.cookie.indexOf(";", index);272if(nameend == -1)273nameend = document.cookie.length;274address = document.cookie.substring(namestart, nameend);275} else {276address = calctut.pages[0];277}278for(var i = -1; i < calctut.pages.length; i ++) {279if(calctut.pages[i] == address) {280title = calctut.titles[i];281}282}283document.write("<br /><br />Redirecting to <em>"+title+"<\/em>");284calctut.redir = address;285},286287redirect: function() {288document.location.href = calctut.redir;289}290};291292293294