﻿var reverse = true; var graphical = false; var precision = ""; var accuracy = ""; var angle = ""; var sid = ""; var saved = false; $(document).ready(function() { $(".focus:last").focus(); $(".select:last").click(function() { this.select() }); $("a.newWin").live("click", function() { window.open(this.href); return false }); $(".back").click(function() { history.back(); return false }); $("#logout").click(function() { if (!confirm("Would you like to log out?")) return false }); sid = jQuery.trim($("#sid").text()); $("#enter").bind("click", Enter); $("#clear").click(function() { $("#i").focus(); HideCA() }); $("#calcButtons .insert a").click(function() { $("#i").focus(); $("#i").val(this.title); return false }); $("#i").keypress(function(e) { if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which; if (code == 13) { Enter(); return false } }); $("#new").click(function() { if (confirm("Would you like to create a new file?")) { $.post("/file/new", {}, function(data) { sid = data.s; saved = false }, "json"); $("#solutions").text(""); $("#i").focus() } return false }); $("#save").click(function() { if ($("#saveDialog").css("display") == "none") { $(".optionsBox").css("display", "none"); $(".toolbar a.selected").attr("class", ""); if (saved) $("#saveDialog").show("fast"); else $("#saveDialog").show("fast", function() { $("#fileName").select() }); $("#save").attr("class", "selected"); if (saved) { $("#fileName").attr("readonly", "readonly"); $("#saveFile").text("Save Updated File") } else { $("#fileName").removeAttr("readonly"); $("#saveFile").text("Save File") } } else { $("#save").attr("class", ""); $(".optionsBox").hide("fast"); $("#i").focus() } return false }); $("#fileName").keypress(function(e) { if (e.keyCode) code = e.keyCode; else if (e.which) code = e.which; if (code == 13) { SaveFile(); return false } }); $("#saveFile").bind("click", SaveFile); $("#export").click(function() { window.open("/file/csv?type=session&s=" + sid); return false }); $("#print").click(function() { window.open("/file/print?type=session&s=" + sid + "&g=" + graphical); return false }); $("#options").click(function() { if ($("#optionsDialog").css("display") == "none") { $(".optionsBox").css("display", "none"); $(".toolbar a.selected").attr("class", ""); $("#options").attr("class", "selected"); $("#optionsDialog").show("fast"); $("#precision a").click(function() { precision = "&p=" + $(this).text(); $("#precision a.selected").attr("class", ""); $(this).attr("class", "selected"); $("#i").focus(); return false }); $("#accuracy a").click(function() { accuracy = "&a=" + this.title; $("#accuracy a.selected").attr("class", ""); $(this).attr("class", "selected"); $("#i").focus(); return false }); $("#angle a").click(function() { angle = "&ang=" + this.title; $("#angle a.selected").attr("class", ""); $(this).attr("class", "selected"); $("#i").focus(); return false }) } else { $("#options").attr("class", ""); $(".optionsBox").hide("fast"); $("#i").focus() } return false }); $("#reverse").click(function() { if (reverse) { reverse = false; Reverse() } else { reverse = true; Reverse() } $("#i").focus(); return false }); $("#graphical").click(function() { if (graphical) { $("#graphical").text("Turn On Graphical Display"); graphical = false } else { $("#graphical").text("Turn Off Graphical Display"); graphical = true } $("#i").focus(); return false }) }); $(window).bind("resize", ResizeSolutions); function Enter() { if ($("#i").val().length > 0) { var eq = $("#i").val(); eq = ReplaceAll(eq, "+", "%2B"); $("#progress").show(); $.getJSON("/engine/?i=" + escape(eq) + "&s=" + sid + "&g=" + graphical + precision + accuracy + angle, function(data) { var solution = $("<div/>").attr("class", "solution"); $("<div/>").attr("class", "question").html(data.q).appendTo(solution); $("<div/>").attr("class", "answer").html(data.a).appendTo(solution); if (!reverse) { $(solution).appendTo("#solutions"); $("#solutions").scrollTop($("#solutions")[0].scrollHeight) } else $(solution).prependTo("#solutions"); ResizeSolutions(); $("#progress").hide(); $("#intro").css("display", "none") }); $("#i").val(""); $("#i").focus() } return false } function SaveFile() { $.post("/file/save", { s: sid, name: escape($("#fileName").val()) }, function(data) { if (data.status == "success") { $("#save").attr("class", ""); $(".optionsBox").css("display", "none"); saved = true; ShowCalcStatus(data.status, data.message) } else if (data.status == "error") { ShowCalcStatus(data.status, data.message) } }, "json"); $("#i").focus(); return false } function ResizeSolutions() { var solnH = $("#solutions").height(); var otherH = $("#header").height() + $("#topToolbar").height() + $("#btmToolbar").height() + 60; var winH = $(window).height(); $(".solution").each(function() { solnH += $(this).height() }); if (solnH > winH - otherH) { $("#solutions").css("overflow", "auto"); $("#solutions").css("height", winH - otherH + "px"); ScrollTotop() } } function Reverse() { $(".solution").each(function() { $(this).prependTo("#solutions") }); ScrollTotop() } function ScrollTotop() { if (!reverse) $("#solutions").scrollTop($("#solutions")[0].scrollHeight); else $("#solutions").scrollTop(0) } function ReplaceAll(input, match, replacement) { var index = input.indexOf(match); while (index != -1) { input = input.replace(match, replacement); index = input.indexOf(match) } return input } function ShowCalcStatus(status, message) { if (status == "error") $("#calcStatus").attr("class", "error"); else $("#calcStatus").attr("class", ""); $("#calcStatus").text(message); $("#calcStatus").fadeIn("def"); setTimeout(HideCalcStatus, 5000) } function HideCalcStatus() { $("#calcStatus").fadeOut("slow") }