
function getCPUTestResults() {
	time      = new Date();
	starttime = time.getTime();
	endtime = starttime;
	y=0;
	x=0;
	if (navigator.userAgent.indexOf("Chrome")!=-1 ) {
		var largeloopsize = 20000;
	} else {
		var largeloopsize = 2000;
	}
	
	var smallloopsize = 100;
	var rawbenchmark;		//Raw bench back without browser calibration.
	
	for(j = 0; j <= 256; j++) { //Main loop itterations
		
		time          = new Date();
		endtime       = time.getTime();
		downloadtime  = (endtime - starttime)/1000;
		
		if ( downloadtime > 1) {
			
			for(i = 1; i <= smallloopsize; i++) { 	// fast loop
				kbytes_of_data = 50; // data file size
				datamoved      = kbytes_of_data/downloadtime;
				CPUbenchmark   = (((datamoved*8)*10*1.02))/10;
				CPUspeed       = (((kbytes_of_data*10)/downloadtime))/10;
				dltime_add10   = ((kbytes_of_data*1.15)/CPUspeed);
				dltime_sub10   = ((kbytes_of_data*0.85)/CPUspeed);
			}
			y++;	// small loop counter
		
		} else {
			
			for(i = 1; i <= largeloopsize; i++) { 	// slow loop
				kbytes_of_data = 50; // data file size
				datamoved      = kbytes_of_data/downloadtime;
				CPUbenchmark   = (((datamoved*8)*10*1.02))/10;
				CPUspeed       = (((kbytes_of_data*10)/downloadtime))/10;
				dltime_add10   = ((kbytes_of_data*1.15)/CPUspeed);
				dltime_sub10   = ((kbytes_of_data*0.85)/CPUspeed);
			}
			x++;	// large loop counter
			
		}
		
		rawbenchmark = Math.round( CPUbenchmark*100 );//Raw bench back without browser calibration.
	
	}
	
	
	var browserName   = navigator.appName;
	var appVersion	  = navigator.userAgent;
	var fudgefactor   = 3;
	var IEbenchfactor = 249;		// Microsoft Internet Explorer
	var benchfactor   = 14350;			// Netscape
	var P1factor      = 890;			// OTHERS
	var FlatBench	  = 3000;		// flat bench over time
		if (navigator.userAgent.indexOf("Safari")!=-1 && navigator.userAgent.indexOf("Windows")!=-1)
			browserName   = "Safari";
		if (navigator.userAgent.indexOf("Firefox/2")!=-1 )
			browserName   = "Firefox2";
		if (navigator.userAgent.indexOf("Firefox/3")!=-1 )
			browserName   = "Firefox3";
		if (navigator.userAgent.indexOf("Opera")!=-1 )
			browserName   = "Opera";
		if (navigator.userAgent.indexOf("Chrome")!=-1 )
			browserName   = "Chrome";
	
		downloadtime   = (endtime - starttime)/1000;		// time to run
		kbytes_of_data = (x*largeloopsize)+(y*smallloopsize);	// data moved through iterations
		datamoved      = kbytes_of_data/downloadtime;		// moves per unit of time
	
		if (browserName=="Safari")
		{
			CPUbenchmark   = Math.round(datamoved/IEbenchfactor);	// benchmark
		}
		else
		if (browserName=="Netscape")
		{
			CPUbenchmark   = Math.round(datamoved/benchfactor);	// benchmark
			if( CPUbenchmark <= 120 )
			{
				CPUbenchmark = Math.round(CPUbenchmark*1.75);
			}
		}
		else
		{
		if (browserName=="Microsoft Internet Explorer")
		{
			CPUbenchmark   = Math.round(datamoved/IEbenchfactor);	// benchmark
		}
		else
		{
			CPUbenchmark   = Math.round(datamoved/P1factor);	// benchmark
			if( CPUbenchmark <= 120 )
			{
				CPUbenchmark = Math.round(CPUbenchmark*1.05);
			}
	
		}
		}
		flatspeed   = Math.round(FlatBench/downloadtime);		// compensate for various browsers
		CPUspeed    = Math.round(CPUbenchmark*fudgefactor);
		if ( CPUspeed > flatspeed )
		{
			CPUspeed = flatspeed;
			CPUbenchmark = Math.round(CPUspeed/3);
		}
		CPUbenchmark = Math.round(CPUbenchmark*0.7);			// True Benchmark liniar lifting capacity
		if ( CPUspeed > 1000 )
		CPUspeed = Math.round(Math.round((CPUspeed*Math.log(CPUbenchmark))/5.8)/100)*100;	// CPU ~MHz magic scale
		else
		{
			if ( CPUspeed > 400 )
			CPUspeed = Math.round(Math.round((CPUspeed*Math.log(CPUbenchmark))/5.7)/10)*10;
			else
			CPUspeed = Math.round((CPUspeed*Math.log(CPUbenchmark))/5.7);	// CPU ~MHz magic scale
		}
		if ( CPUbenchmark > 596 )
		{
			cpuspeed = Math.round((CPUbenchmark*4.9346879)/100)*100;
			if ( (kbytes_of_data/1000) > 140 )				// very fast CPUs
			{
				CPUbenchmark   = Math.round( CPUbenchmark*((kbytes_of_data/1000)/100)/downloadtime);
				CPUspeed = Math.round( CPUspeed*((kbytes_of_data/1000)/110)/downloadtime);
				if (browserName=="Microsoft Internet Explorer")
				{
					CPUbenchmark   = Math.round( CPUbenchmark/2.15);
					CPUspeed    = Math.round( CPUspeed/2.15);
				}
				if (browserName=="Safari")
				{
					CPUbenchmark   = Math.round( CPUbenchmark/2.05);
					CPUspeed    = Math.round( CPUspeed/2.05);
				}
	
			}
		}
		
		if (browserName=="Microsoft Internet Explorer" && navigator.userAgent.indexOf("MSIE 7")) {
			CPUbenchmark	= Math.round(CPUbenchmark*1.85);	// fIREfOX HAS A REALLY SLOW benchmark
			CPUspeed    	= Math.round(CPUspeed*2.05);		// fIREfOX HAS A REALLY SLOW benchmark
			kbytes_of_data	= Math.round((kbytes_of_data)*2.85);		// fake data moved for AH
		}
		if (browserName=="Firefox1")
		{
			CPUbenchmark	= Math.round(CPUbenchmark*2.85);	// fIREfOX HAS A REALLY SLOW benchmark
			CPUspeed    	= Math.round(CPUspeed*3.05);		// fIREfOX HAS A REALLY SLOW benchmark
			kbytes_of_data	= Math.round((kbytes_of_data)*2.85);		// fake data moved for AH
	
		}
		if (browserName=="Firefox2")
		{
			CPUbenchmark	= Math.round(CPUbenchmark*2);	// fIREfOX HAS A REALLY SLOW benchmark
			CPUspeed    	= Math.round(CPUspeed);		// fIREfOX HAS A REALLY SLOW benchmark
			kbytes_of_data	= Math.round(kbytes_of_data);		// fake data moved for AH
	
		}
		if (browserName=="Firefox3")
		{
			CPUbenchmark	= Math.round(CPUbenchmark/3.3252);	// fIREfOX HAS A REALLY SLOW benchmark
			CPUspeed    	= Math.round(CPUspeed/3.3252);		// fIREfOX HAS A REALLY SLOW benchmark
			kbytes_of_data	= Math.round(kbytes_of_data);		// fake data moved for AH
	
		}
		if (browserName=="Opera")
		{
			CPUbenchmark	= Math.round(CPUbenchmark/3.93);	// Adjust for Opera HAS A REALLY vast benchmark
			CPUspeed    	= Math.round(CPUspeed/3.83);
		}
		if (browserName=="Chrome")
		{
			CPUbenchmark	= Math.round(CPUbenchmark/17.7252);	// Adjust for Chrome weirdly fast benchmark
			CPUspeed    	= Math.round(CPUspeed/17.7252);
		}
			
		return {"cpuspeed" : CPUspeed, "benchmark" : Math.round(CPUbenchmark + (CPUbenchmark * 0.25))};
		//var resultado = {"cpuspeed" : CPUspeed, "benchmark" : CPUbenchmark};
	
}
