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