sawine@61: var QUOTES_NUMBER = 39; sawine@0: sawine@0: function load_page(html, params) sawine@0: { sawine@0: if (params != "") sawine@0: html += "?"; sawine@0: window.location = html + params; sawine@0: //window.location.reload(); sawine@0: } sawine@0: sawine@0: function google_an1() sawine@0: { sawine@0: var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); sawine@0: document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); sawine@0: } sawine@0: sawine@0: function google_an2() sawine@0: { sawine@0: var pageTracker = _gat._getTracker("UA-2137333-1"); sawine@0: pageTracker._initData(); sawine@0: pageTracker._trackPageview(); sawine@0: } sawine@0: sawine@0: function google_an() sawine@0: { sawine@0: google_an1(); sawine@0: if (typeof(_gat) == "object") sawine@0: google_an2(); sawine@0: } sawine@0: sawine@0: function http_request_object() sawine@0: { sawine@0: var xmlHttpObject = null; sawine@0: sawine@0: if (typeof(XMLHttpRequest) != "undefined") sawine@0: { sawine@0: xmlHttpObject = new XMLHttpRequest(); sawine@0: } sawine@0: sawine@0: //For IE6 and IE5 sawine@0: if (xmlHttpObject == null) sawine@0: { sawine@0: try sawine@0: { sawine@0: xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP"); sawine@0: } sawine@0: catch(e) sawine@0: { sawine@0: try sawine@0: { sawine@0: xmlHttpObject = new ActiveXObject("Msxml2.XMLHTTP"); sawine@0: } sawine@0: catch(e) sawine@0: { sawine@0: xmlHttpObject = null; sawine@0: } sawine@0: } sawine@0: } sawine@0: return xmlHttpObject; sawine@0: } sawine@0: sawine@0: function load_header(current) sawine@0: { sawine@0: var file; sawine@0: if (current == "home") sawine@0: file = "/homenav.html"; sawine@0: else if (current == "resume") sawine@0: file = "/resumenav.html"; sawine@0: else if (current == "howiwork") sawine@0: file = "/howiworknav.html"; sawine@0: else if (current == "personalwork") sawine@0: file = "/personalworknav.html"; sawine@0: else if (current == "tutorials") sawine@0: file = "/tutorialsnav.html"; sawine@0: else if (current == "contact") sawine@0: file = "/contactnav.html"; sawine@0: sawine@0: var currentFile = self.location.hostname + self.location.pathname; sawine@0: var request = http_request_object(); sawine@0: var url = "http://" + self.location.hostname + file; sawine@0: request.open("GET", url, false); sawine@0: request.setRequestHeader("User-Agent", navigator.userAgent); sawine@0: request.send(null) sawine@0: // if (oRequest.status == 200) alert(oRequest.responseText); sawine@0: // else alert("Error executing XMLHttpRequest call!"); sawine@0: //document.write(url); sawine@0: document.getElementById('header').innerHTML = request.responseText; sawine@0: //document.write(request.responseText); sawine@0: sawine@0: //alert(request.responseText); sawine@0: } sawine@0: sawine@0: function load_sidebar() sawine@0: { sawine@0: var file = "/sidebar.html"; sawine@0: var currentFile = self.location.hostname + self.location.pathname; sawine@0: var request = http_request_object(); sawine@0: var url = "http://" + self.location.hostname + file; sawine@0: request.open("GET", url, false); sawine@0: request.setRequestHeader("User-Agent", navigator.userAgent); sawine@0: request.send(null) sawine@0: // if (oRequest.status == 200) alert(oRequest.responseText); sawine@0: // else alert("Error executing XMLHttpRequest call!"); sawine@0: //document.write(url); sawine@0: //document.write(request.responseText); sawine@0: document.getElementById('sidebar').innerHTML = request.responseText; sawine@0: } sawine@0: sawine@0: function load_random_quote() sawine@0: { sawine@0: var file = "/quotes/quote" + Math.floor(Math.random() * QUOTES_NUMBER + 1) + ".html"; sawine@0: var currentFile = self.location.hostname + self.location.pathname; sawine@0: var request = http_request_object(); sawine@0: var url = "http://" + self.location.hostname + file; sawine@0: request.open("GET", url, false); sawine@0: request.setRequestHeader("User-Agent", navigator.userAgent); sawine@0: request.send(null) sawine@52: sawine@0: // if (oRequest.status == 200) alert(oRequest.responseText); sawine@0: // else alert("Error executing XMLHttpRequest call!"); sawine@0: //document.write(url); sawine@0: //document.write(request.responseText); sawine@0: document.getElementById('random_quote').innerHTML = request.responseText; sawine@0: } sawine@0: sawine@0: function load_footer() sawine@0: { sawine@0: var file = "/footer.html"; sawine@0: var currentFile = self.location.hostname + self.location.pathname; sawine@0: var request = http_request_object(); sawine@0: var url = "http://" + self.location.hostname + file; sawine@0: request.open("GET", url, false); sawine@0: request.setRequestHeader("User-Agent", navigator.userAgent); sawine@0: request.send(null) sawine@0: // if (oRequest.status == 200) alert(oRequest.responseText); sawine@0: // else alert("Error executing XMLHttpRequest call!"); sawine@0: //document.write(url); sawine@0: //document.write(request.responseText); sawine@0: document.getElementById('footer').innerHTML = request.responseText; sawine@0: } sawine@7: sawine@20: sawine@20: sawine@7: // Mandelbrot functions sawine@7: function Complex(real, imag) sawine@7: { sawine@7: this.real = real; sawine@7: this.imag = imag; sawine@7: } sawine@7: sawine@7: var MIN_C = new Complex(-2.2, -1.4); sawine@7: var MAX_C = new Complex(1.0, 1.4); sawine@7: var min_c = MIN_C; sawine@7: var max_c = MAX_C; sawine@20: var MIN_ITER = 100; sawine@20: var max_iter = MIN_ITER; sawine@10: var zoom = 1.0; sawine@17: var resolution = 3; sawine@17: var bailout = 4.0; sawine@7: sawine@7: function Result(z, iter) sawine@7: { sawine@7: this.z = z; sawine@7: this.iter = iter; sawine@7: } sawine@7: sawine@7: function complex_quad(c) sawine@7: { sawine@7: return new Complex(Math.pow(c.real, 2) - Math.pow(c.imag, 2), sawine@7: 2.0 * c.real * c.imag); sawine@7: } sawine@7: sawine@7: function complex_quad_value(c) sawine@7: { sawine@7: return Math.pow(c.real, 2) + Math.pow(c.imag, 2); sawine@7: } sawine@7: sawine@7: function complex_add(c1, c2) sawine@7: { sawine@7: return new Complex(c1.real + c2.real, c1.imag + c2.imag); sawine@7: } sawine@7: sawine@17: function complex_equal(c1, c2) sawine@17: { sawine@17: return (c1.real == c2.real) && (c1.imag == c2.imag); sawine@17: } sawine@17: sawine@7: function iterate(z, c) sawine@7: { sawine@7: z_quad = complex_quad(z); sawine@7: return new Complex(z_quad.real + c.real, z_quad.imag + c.imag); sawine@7: } sawine@7: sawine@7: function test(c, max_iter) sawine@7: { sawine@7: var iter = 0; sawine@7: var z = new Complex(0.0, 0.0); sawine@17: var last_z = new Complex(-1.0, 0.0); sawine@17: var quad_z = complex_quad_value(z); sawine@17: sawine@17: while (iter < max_iter sawine@17: && !complex_equal(z, last_z) sawine@17: && quad_z <= bailout) sawine@7: { sawine@17: last_z = z; sawine@7: z = iterate(z, c); sawine@17: quad_z = complex_quad_value(z); sawine@7: iter++; sawine@7: } sawine@17: return new Result(quad_z, iter); sawine@7: } sawine@7: sawine@20: function draw(diter, dx, dy, dz, dres) sawine@7: { sawine@17: var canvas = document.getElementById('mandelbrot'); sawine@17: sawine@7: if (canvas.getContext) sawine@7: { sawine@17: zoom += dz; sawine@12: var ctx = canvas.getContext('2d'); sawine@17: sawine@17: if (dres != 0) sawine@17: { sawine@17: resolution = Math.max(1, resolution + dres); sawine@17: } sawine@20: sawine@20: if (diter != 0) sawine@20: { sawine@20: max_iter = Math.max(MIN_ITER, max_iter + diter); sawine@20: } sawine@17: sawine@20: var red = "rgb(255, 0, 0)"; sawine@20: var white = "rgb(255, 255, 255)"; sawine@17: var width = canvas.width; sawine@17: var height = canvas.height; sawine@17: var dim = Math.max(width, height); sawine@17: var dim_ratio = Math.round(width / height); sawine@17: var diff_c = new Complex(max_c.real - min_c.real, sawine@17: max_c.imag - min_c.imag); sawine@17: dx_min = diff_c.real / 100 * (dx + dz); sawine@17: dx_max = diff_c.real / 100 * (dx - dz); sawine@17: sawine@17: dy_min = diff_c.imag / 100 * (dy + dz); sawine@17: dy_max = diff_c.imag / 100 * (dy - dz); sawine@17: sawine@17: var min_inc = new Complex(dx_min * dim_ratio / 2.0, dy_min); sawine@17: var max_inc = new Complex(dx_max * dim_ratio / 2.0, dy_max); sawine@7: min_c = complex_add(min_c, min_inc); sawine@7: max_c = complex_add(max_c, max_inc); sawine@17: diff_c = new Complex(max_c.real - min_c.real, sawine@7: max_c.imag - min_c.imag); sawine@7: sawine@22: for (var y = 0; y < height; y += resolution) sawine@7: { sawine@17: for (var x = 0; x < width; x += resolution) sawine@17: { sawine@17: var c = new Complex(min_c.real + diff_c.real / dim * x, sawine@17: min_c.imag + diff_c.imag / dim * y); sawine@17: var result = test(c, max_iter); sawine@17: var r = Math.min(255, Math.pow(Math.max(0, sawine@17: (result.iter - max_iter / 20.0)), 2)); sawine@17: var g = Math.min(255, Math.pow(Math.max(0, sawine@17: (result.iter - max_iter / 25.0)), 2)); sawine@17: var b = Math.min(255, Math.pow(Math.max(0, sawine@17: (result.iter - max_iter / 20.0)), 2)); sawine@25: var colour = "rgb(" + r + "," + g + "," + b + ")"; sawine@25: ctx.fillStyle = colour; sawine@20: ctx.fillRect(x, y, resolution, resolution); sawine@7: } sawine@7: } sawine@7: } sawine@30: } sawine@30: sawine@30: function getEventOffsetX(evt) sawine@30: { sawine@30: if (evt.offsetX != null) sawine@30: return evt.offsetX; sawine@30: sawine@30: var obj = evt.target || evt.srcElement; sawine@30: setPageTopLeft(obj); sawine@30: return (evt.clientX - obj.pageLeft); sawine@30: } sawine@30: sawine@30: function getEventOffsetY(evt) sawine@30: { sawine@30: if (evt.offsetY != null) sawine@30: return evt.offsetY; sawine@30: sawine@30: var obj = evt.target || evt.srcElement; sawine@30: setPageTopLeft(obj); sawine@30: return (evt.clientY - obj.pageTop); sawine@30: } sawine@30: sawine@30: function setPageTopLeft( o ) sawine@30: { sawine@30: var top = 0, sawine@30: left = 0, sawine@30: obj = o; sawine@30: sawine@30: while (o.offsetParent) sawine@30: { sawine@30: left += o.offsetLeft ; sawine@30: top += o.offsetTop ; sawine@30: o = o.offsetParent ; sawine@30: }; sawine@30: sawine@30: obj.pageTop = top; sawine@30: obj.pageLeft = left; sawine@30: } sawine@30: sawine@30: function draw2(evt) sawine@30: { sawine@30: var iter = 0; sawine@30: var res = 0; sawine@30: var x = (getEventOffsetX(evt) - 335) / 167.5; sawine@30: var y = (getEventOffsetY(evt) - 140) / 70; sawine@30: var z = 0; sawine@30: draw(iter, x, y, z, res); sawine@30: }