sawine@0
|
1 |
var QUOTES_NUMBER = 32;
|
sawine@0
|
2 |
|
sawine@0
|
3 |
function load_page(html, params)
|
sawine@0
|
4 |
{
|
sawine@0
|
5 |
if (params != "")
|
sawine@0
|
6 |
html += "?";
|
sawine@0
|
7 |
window.location = html + params;
|
sawine@0
|
8 |
//window.location.reload();
|
sawine@0
|
9 |
}
|
sawine@0
|
10 |
|
sawine@0
|
11 |
function google_an1()
|
sawine@0
|
12 |
{
|
sawine@0
|
13 |
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
|
sawine@0
|
14 |
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
|
sawine@0
|
15 |
}
|
sawine@0
|
16 |
|
sawine@0
|
17 |
function google_an2()
|
sawine@0
|
18 |
{
|
sawine@0
|
19 |
var pageTracker = _gat._getTracker("UA-2137333-1");
|
sawine@0
|
20 |
pageTracker._initData();
|
sawine@0
|
21 |
pageTracker._trackPageview();
|
sawine@0
|
22 |
}
|
sawine@0
|
23 |
|
sawine@0
|
24 |
function google_an()
|
sawine@0
|
25 |
{
|
sawine@0
|
26 |
google_an1();
|
sawine@0
|
27 |
if (typeof(_gat) == "object")
|
sawine@0
|
28 |
google_an2();
|
sawine@0
|
29 |
}
|
sawine@0
|
30 |
|
sawine@0
|
31 |
function http_request_object()
|
sawine@0
|
32 |
{
|
sawine@0
|
33 |
var xmlHttpObject = null;
|
sawine@0
|
34 |
|
sawine@0
|
35 |
if (typeof(XMLHttpRequest) != "undefined")
|
sawine@0
|
36 |
{
|
sawine@0
|
37 |
xmlHttpObject = new XMLHttpRequest();
|
sawine@0
|
38 |
}
|
sawine@0
|
39 |
|
sawine@0
|
40 |
//For IE6 and IE5
|
sawine@0
|
41 |
if (xmlHttpObject == null)
|
sawine@0
|
42 |
{
|
sawine@0
|
43 |
try
|
sawine@0
|
44 |
{
|
sawine@0
|
45 |
xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
|
sawine@0
|
46 |
}
|
sawine@0
|
47 |
catch(e)
|
sawine@0
|
48 |
{
|
sawine@0
|
49 |
try
|
sawine@0
|
50 |
{
|
sawine@0
|
51 |
xmlHttpObject = new ActiveXObject("Msxml2.XMLHTTP");
|
sawine@0
|
52 |
}
|
sawine@0
|
53 |
catch(e)
|
sawine@0
|
54 |
{
|
sawine@0
|
55 |
xmlHttpObject = null;
|
sawine@0
|
56 |
}
|
sawine@0
|
57 |
}
|
sawine@0
|
58 |
}
|
sawine@0
|
59 |
return xmlHttpObject;
|
sawine@0
|
60 |
}
|
sawine@0
|
61 |
|
sawine@0
|
62 |
function load_header(current)
|
sawine@0
|
63 |
{
|
sawine@0
|
64 |
var file;
|
sawine@0
|
65 |
if (current == "home")
|
sawine@0
|
66 |
file = "/homenav.html";
|
sawine@0
|
67 |
else if (current == "resume")
|
sawine@0
|
68 |
file = "/resumenav.html";
|
sawine@0
|
69 |
else if (current == "howiwork")
|
sawine@0
|
70 |
file = "/howiworknav.html";
|
sawine@0
|
71 |
else if (current == "personalwork")
|
sawine@0
|
72 |
file = "/personalworknav.html";
|
sawine@0
|
73 |
else if (current == "tutorials")
|
sawine@0
|
74 |
file = "/tutorialsnav.html";
|
sawine@0
|
75 |
else if (current == "contact")
|
sawine@0
|
76 |
file = "/contactnav.html";
|
sawine@0
|
77 |
|
sawine@0
|
78 |
var currentFile = self.location.hostname + self.location.pathname;
|
sawine@0
|
79 |
var request = http_request_object();
|
sawine@0
|
80 |
var url = "http://" + self.location.hostname + file;
|
sawine@0
|
81 |
request.open("GET", url, false);
|
sawine@0
|
82 |
request.setRequestHeader("User-Agent", navigator.userAgent);
|
sawine@0
|
83 |
request.send(null)
|
sawine@0
|
84 |
// if (oRequest.status == 200) alert(oRequest.responseText);
|
sawine@0
|
85 |
// else alert("Error executing XMLHttpRequest call!");
|
sawine@0
|
86 |
//document.write(url);
|
sawine@0
|
87 |
document.getElementById('header').innerHTML = request.responseText;
|
sawine@0
|
88 |
//document.write(request.responseText);
|
sawine@0
|
89 |
|
sawine@0
|
90 |
//alert(request.responseText);
|
sawine@0
|
91 |
}
|
sawine@0
|
92 |
|
sawine@0
|
93 |
function load_sidebar()
|
sawine@0
|
94 |
{
|
sawine@0
|
95 |
var file = "/sidebar.html";
|
sawine@0
|
96 |
var currentFile = self.location.hostname + self.location.pathname;
|
sawine@0
|
97 |
var request = http_request_object();
|
sawine@0
|
98 |
var url = "http://" + self.location.hostname + file;
|
sawine@0
|
99 |
request.open("GET", url, false);
|
sawine@0
|
100 |
request.setRequestHeader("User-Agent", navigator.userAgent);
|
sawine@0
|
101 |
request.send(null)
|
sawine@0
|
102 |
// if (oRequest.status == 200) alert(oRequest.responseText);
|
sawine@0
|
103 |
// else alert("Error executing XMLHttpRequest call!");
|
sawine@0
|
104 |
//document.write(url);
|
sawine@0
|
105 |
//document.write(request.responseText);
|
sawine@0
|
106 |
document.getElementById('sidebar').innerHTML = request.responseText;
|
sawine@0
|
107 |
}
|
sawine@0
|
108 |
|
sawine@0
|
109 |
function load_random_quote()
|
sawine@0
|
110 |
{
|
sawine@0
|
111 |
var file = "/quotes/quote" + Math.floor(Math.random() * QUOTES_NUMBER + 1) + ".html";
|
sawine@0
|
112 |
var currentFile = self.location.hostname + self.location.pathname;
|
sawine@0
|
113 |
var request = http_request_object();
|
sawine@0
|
114 |
var url = "http://" + self.location.hostname + file;
|
sawine@0
|
115 |
request.open("GET", url, false);
|
sawine@0
|
116 |
request.setRequestHeader("User-Agent", navigator.userAgent);
|
sawine@0
|
117 |
request.send(null)
|
sawine@0
|
118 |
// if (oRequest.status == 200) alert(oRequest.responseText);
|
sawine@0
|
119 |
// else alert("Error executing XMLHttpRequest call!");
|
sawine@0
|
120 |
//document.write(url);
|
sawine@0
|
121 |
//document.write(request.responseText);
|
sawine@0
|
122 |
document.getElementById('random_quote').innerHTML = request.responseText;
|
sawine@0
|
123 |
}
|
sawine@0
|
124 |
|
sawine@0
|
125 |
function load_footer()
|
sawine@0
|
126 |
{
|
sawine@0
|
127 |
var file = "/footer.html";
|
sawine@0
|
128 |
var currentFile = self.location.hostname + self.location.pathname;
|
sawine@0
|
129 |
var request = http_request_object();
|
sawine@0
|
130 |
var url = "http://" + self.location.hostname + file;
|
sawine@0
|
131 |
request.open("GET", url, false);
|
sawine@0
|
132 |
request.setRequestHeader("User-Agent", navigator.userAgent);
|
sawine@0
|
133 |
request.send(null)
|
sawine@0
|
134 |
// if (oRequest.status == 200) alert(oRequest.responseText);
|
sawine@0
|
135 |
// else alert("Error executing XMLHttpRequest call!");
|
sawine@0
|
136 |
//document.write(url);
|
sawine@0
|
137 |
//document.write(request.responseText);
|
sawine@0
|
138 |
document.getElementById('footer').innerHTML = request.responseText;
|
sawine@0
|
139 |
}
|
sawine@7
|
140 |
|
sawine@7
|
141 |
// Mandelbrot functions
|
sawine@7
|
142 |
function Complex(real, imag)
|
sawine@7
|
143 |
{
|
sawine@7
|
144 |
this.real = real;
|
sawine@7
|
145 |
this.imag = imag;
|
sawine@7
|
146 |
}
|
sawine@7
|
147 |
|
sawine@7
|
148 |
var MIN_C = new Complex(-2.2, -1.4);
|
sawine@7
|
149 |
var MAX_C = new Complex(1.0, 1.4);
|
sawine@7
|
150 |
var min_c = MIN_C;
|
sawine@7
|
151 |
var max_c = MAX_C;
|
sawine@7
|
152 |
var max_iter = 100;
|
sawine@10
|
153 |
var zoom = 1.0;
|
sawine@7
|
154 |
|
sawine@7
|
155 |
function Result(z, iter)
|
sawine@7
|
156 |
{
|
sawine@7
|
157 |
this.z = z;
|
sawine@7
|
158 |
this.iter = iter;
|
sawine@7
|
159 |
}
|
sawine@7
|
160 |
|
sawine@7
|
161 |
function complex_quad(c)
|
sawine@7
|
162 |
{
|
sawine@7
|
163 |
return new Complex(Math.pow(c.real, 2) - Math.pow(c.imag, 2),
|
sawine@7
|
164 |
2.0 * c.real * c.imag);
|
sawine@7
|
165 |
}
|
sawine@7
|
166 |
|
sawine@7
|
167 |
function complex_quad_value(c)
|
sawine@7
|
168 |
{
|
sawine@7
|
169 |
return Math.pow(c.real, 2) + Math.pow(c.imag, 2);
|
sawine@7
|
170 |
}
|
sawine@7
|
171 |
|
sawine@7
|
172 |
function complex_add(c1, c2)
|
sawine@7
|
173 |
{
|
sawine@7
|
174 |
return new Complex(c1.real + c2.real, c1.imag + c2.imag);
|
sawine@7
|
175 |
}
|
sawine@7
|
176 |
|
sawine@7
|
177 |
function iterate(z, c)
|
sawine@7
|
178 |
{
|
sawine@7
|
179 |
z_quad = complex_quad(z);
|
sawine@7
|
180 |
return new Complex(z_quad.real + c.real, z_quad.imag + c.imag);
|
sawine@7
|
181 |
}
|
sawine@7
|
182 |
|
sawine@7
|
183 |
function test(c, max_iter)
|
sawine@7
|
184 |
{
|
sawine@7
|
185 |
var iter = 0;
|
sawine@7
|
186 |
var z = new Complex(0.0, 0.0);
|
sawine@7
|
187 |
while (complex_quad_value(z) <= 4.0
|
sawine@7
|
188 |
&& iter < max_iter)
|
sawine@7
|
189 |
{
|
sawine@7
|
190 |
z = iterate(z, c);
|
sawine@7
|
191 |
iter++;
|
sawine@7
|
192 |
}
|
sawine@7
|
193 |
return new Result(z, iter);
|
sawine@7
|
194 |
}
|
sawine@7
|
195 |
|
sawine@7
|
196 |
function draw(iter, x, y, z)
|
sawine@7
|
197 |
{
|
sawine@7
|
198 |
var canvas = document.getElementById('mandelbrot');
|
sawine@7
|
199 |
if (canvas.getContext)
|
sawine@7
|
200 |
{
|
sawine@10
|
201 |
z = z / 10.0;
|
sawine@10
|
202 |
zoom += z;
|
sawine@10
|
203 |
if (zoom < 1)
|
sawine@10
|
204 |
zoom = 1;
|
sawine@10
|
205 |
x = x / 10.0 / zoom;
|
sawine@10
|
206 |
y = y / 10.0 / zoom;
|
sawine@10
|
207 |
var min_inc = new Complex(x + z, y + z);
|
sawine@10
|
208 |
var max_inc = new Complex(x - z, y - z);
|
sawine@7
|
209 |
min_c = complex_add(min_c, min_inc);
|
sawine@7
|
210 |
max_c = complex_add(max_c, max_inc);
|
sawine@7
|
211 |
max_iter += iter;
|
sawine@7
|
212 |
var diff_c = new Complex(max_c.real - min_c.real,
|
sawine@7
|
213 |
max_c.imag - min_c.imag);
|
sawine@7
|
214 |
var width = canvas.width;
|
sawine@7
|
215 |
var height = canvas.height;
|
sawine@7
|
216 |
var dim = Math.max(width, height);
|
sawine@7
|
217 |
ctx.clearRect(0, 0, width, height);
|
sawine@7
|
218 |
|
sawine@7
|
219 |
for (var y = 0; y < height; y++)
|
sawine@7
|
220 |
{
|
sawine@7
|
221 |
for (var x = 0; x < width; x++)
|
sawine@7
|
222 |
{
|
sawine@7
|
223 |
if (true)
|
sawine@7
|
224 |
{
|
sawine@7
|
225 |
var c = new Complex(min_c.real + diff_c.real
|
sawine@7
|
226 |
/ dim * x,
|
sawine@7
|
227 |
min_c.imag + diff_c.imag / dim * y);
|
sawine@7
|
228 |
var result = test(c, max_iter);
|
sawine@7
|
229 |
|
sawine@7
|
230 |
if (result.iter < max_iter)
|
sawine@7
|
231 |
{
|
sawine@7
|
232 |
var r = result.iter * 3;
|
sawine@7
|
233 |
var g = result.iter * 3;
|
sawine@7
|
234 |
var b = result.iter * 3;
|
sawine@7
|
235 |
var colour = r + "," + g + "," + b;
|
sawine@7
|
236 |
ctx.fillStyle = "rgb(" + colour + ")";
|
sawine@7
|
237 |
ctx.fillRect(x, y, 1, 1);
|
sawine@7
|
238 |
}
|
sawine@7
|
239 |
}
|
sawine@7
|
240 |
}
|
sawine@7
|
241 |
}
|
sawine@7
|
242 |
}
|
sawine@7
|
243 |
}
|