script.js
author root@h1429602.stratoserver.net
Mon, 05 Jul 2010 17:19:17 +0200
changeset 16 a04897b5801e
parent 12 c0e74abb2a26
permissions -rw-r--r--
Increased photo size.
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@12
   201
		var ctx = canvas.getContext('2d');
sawine@10
   202
		z = z / 10.0;
sawine@10
   203
		zoom += z;
sawine@10
   204
		if (zoom < 1)
sawine@10
   205
			zoom = 1;
sawine@10
   206
		x = x / 10.0 / zoom;
sawine@10
   207
		y = y / 10.0 / zoom;
sawine@10
   208
		var min_inc = new Complex(x + z, y + z);
sawine@10
   209
		var max_inc = new Complex(x - z, y - z);
sawine@7
   210
		min_c = complex_add(min_c, min_inc);
sawine@7
   211
		max_c = complex_add(max_c, max_inc);
sawine@7
   212
		max_iter += iter;
sawine@7
   213
		var diff_c = new Complex(max_c.real - min_c.real,
sawine@7
   214
			max_c.imag - min_c.imag);
sawine@7
   215
		var width = canvas.width;
sawine@7
   216
		var height = canvas.height;
sawine@7
   217
		var dim = Math.max(width, height);
sawine@7
   218
		ctx.clearRect(0, 0, width, height);
sawine@7
   219
		
sawine@7
   220
		for (var y = 0; y < height; y++) 
sawine@7
   221
		{
sawine@7
   222
			for (var x = 0; x < width; x++) 
sawine@7
   223
			{        					
sawine@7
   224
				if (true) 
sawine@7
   225
				{
sawine@7
   226
					var c = new Complex(min_c.real + diff_c.real 
sawine@7
   227
						/ dim * x, 
sawine@7
   228
						min_c.imag + diff_c.imag / dim * y);  	
sawine@7
   229
				 	var result = test(c, max_iter);
sawine@7
   230
				 	
sawine@7
   231
				 	if (result.iter < max_iter) 
sawine@7
   232
				 	{
sawine@13
   233
				 		var r = Math.min(255, Math.pow(Math.max(0, 
sawine@13
   234
							(result.iter - max_iter / 20.0)), 2));
sawine@13
   235
						var g = Math.min(255, Math.pow(Math.max(0, 
sawine@13
   236
							(result.iter - max_iter / 25.0)), 2));			
sawine@13
   237
				 		var b = Math.min(255, Math.pow(Math.max(0, 
sawine@13
   238
							(result.iter - max_iter / 20.0)), 2));
sawine@7
   239
				 		var colour = r + "," + g + "," + b;
sawine@7
   240
				 		ctx.fillStyle = "rgb(" + colour + ")"; 
sawine@7
   241
						ctx.fillRect(x, y, 1, 1);
sawine@7
   242
					}
sawine@7
   243
				}  
sawine@7
   244
			}
sawine@7
   245
  		}
sawine@7
   246
	}  
sawine@7
   247
}