	//http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference	
	//Javascript Speed Test -- Build 2

function RunTest() {
	var timeArray, timeDate, timeError, timeMath, timeRegEx, timeString, timeDOM, timeAjax;
	timeArray = Test_Array(); timeDate = Test_Date(); timeError = Test_Error(); 
	timeMath = Test_Math(); timeRegEx = Test_RegEx(); timeString = Test_String();
	timeDOM = Test_DOM(); timeAjax = Test_Ajax();
	var timeTotal = timeArray + timeDate + timeError + timeMath + timeRegEx + timeString + timeDOM + timeAjax;
	
	/*document.getElementById('timeArray').innerHTML = timeArray;
	document.getElementById('timeDate').innerHTML = timeDate;
	document.getElementById('timeError').innerHTML = timeError;
	document.getElementById('timeMath').innerHTML = timeMath;
	document.getElementById('timeRegEx').innerHTML = timeRegEx;
	document.getElementById('timeString').innerHTML = timeString;
	document.getElementById('timeDOM').innerHTML = timeDOM;
	document.getElementById('timeAjax').innerHTML = timeAjax;
	document.getElementById('timeTotal').innerHTML = timeTotal;*/
	
	return timeTotal;
}

function Test_Array() {
	var startTime = new Date() ;
	var arr = new Array();
	for(var i=0; i<=94; i++)
		{	arr.push(i);}
	for(var i=0; i<=arr.length; i++)
	{
		arr.push( arr.pop());
		arr.reverse(arr.sort());
		arr.push(arr.splice(0,1));
	}
	arr = arr.join();
	return (new Date() - startTime);
}
		
function Test_Date() {
	var startTime = new Date() ;
	var pharbor = new Date('December 7, 1941 07:48:00');
	for(var i=500;i<=2000;i++)
	{
		var dtDate = Date.parse('December 7, '+i+' 07:48:00');
		var diff = dtDate - pharbor;
	}
	return (new Date() - startTime);
}

function Test_Error() {
	var startTime = new Date() ;
    for( var i = 0; i <= 50; i++ ) {
		try {
			throw new Error("Ungraceful Error");
		}
		catch (e) {
			try { 
				throw new Error("Graceful Error"); 
			} 
			catch (e)  { 
				Test_Error_isPrime(147457); //Do something CPU-intensive
			}
			finally	{
				Test_Error_isPrime(147457); //Do something CPU-intensive
			}
		}
    }
	return (new Date() - startTime);
}
	function Test_Error_isPrime(PrimeTest) {
		for(i=2;i<=Math.sqrt(PrimeTest)+1;i++) {
			if (PrimeTest % i == 0) {
				return false;
			}
		}
		return true;
	}

function Test_Math() {
	var startTime = new Date() ;
	var a = 147457;
	for (i=0; i<10000; i++) {
		var angle = (Math.tan(Math.sin(Math.cos(Math.random()))));
		var x = (Math.sqrt(Math.abs(Math.log(Math.pow(angle,2)))));
	}
	return (new Date() - startTime);
}

function Test_RegEx() {
	var startTime = new Date() ;
	var str = 'cdbbdbsbzcdbbdbsbzcdbbdbsbzcdbbdbsbzcdbbdbsbzcdbbdbsbzcdbbdbsbzcdbbdbsbzcdbbdbsbzcdbbdbsbzcdbbdbsbzcdbbdbsbzcdbbdbsbz';
	for (i=0; i<=20000; i++) {
		myRe = /d(b+)d/g; 
		myArray = myRe.exec(str);
	}
	return (new Date() - startTime);
}

function Test_String() {
	var startTime = new Date() ;
	var str = "Do good? I? No! Evil anon I deliver. I maim nine more hero-men in Saginaw, sanitary sword a-tuck, Carol, I -- lo! -- rack, cut a drowsy rat in Aswan. I gas nine more hero-men in Miami. Reviled, I (Nona) live on. I do, O God!"; //http://www.rinkworks.com/words/palindromes.shtml
	for (i=0; i<=20; i++) {
		var strStrip = str;
		do {
			strStrip = strStrip.replace('?','');
			strStrip = strStrip.replace('!','');
			strStrip = strStrip.replace(',','');
			strStrip = strStrip.replace('.','');
			strStrip = strStrip.replace('(','');
			strStrip = strStrip.replace(')','');
			strStrip = strStrip.replace('-','');
			strStrip = strStrip.replace(' ','');
		} while (!(strStrip.indexOf('?') == -1 && strStrip.indexOf('!') == -1 && strStrip.indexOf(',') == -1 && strStrip.indexOf('.') == -1 && strStrip.indexOf('(') == -1 && strStrip.indexOf(')') == -1 && strStrip.indexOf('-') == -1 && strStrip.indexOf(' ') == -1))
		strStrip = strStrip.toLowerCase();

		for (c=0;c<=strStrip.length;c++) {
			strStrip = strStrip.substr(0,c) + strStrip.substr(c,strStrip.length);
		}
		
		strStripRev = strStrip.split();
		strStripRev = strStripRev.reverse();
		strStripRev= strStripRev.join();
		var isPalindrome = (strStrip == strStripRev);
	}
	return (new Date() - startTime);
}

function Test_DOM() {
	var startTime = new Date() ;
	var elem = document.getElementById('layer1');
	for (i=0;i<=400;i++) {
		elem.style.top = i + 'px';
		elem.style.left = i + 'px';
		elem.innerHTML = elem.innerHTML + '..' + i;
	}
	elem.innerHTML = '';
	return (new Date() - startTime);
}

function Test_Ajax() {
	var startTime = new Date() ;
	for (var i = 0; i <= 10000; i++) {
		var ao_featured = new AjaxObject101();
    }
	return (new Date() - startTime);
}


