remove datatable unit tests
remove datatable unit tests

--- a/displayBubbletree.php
+++ b/displayBubbletree.php
@@ -19,11 +19,17 @@
 		$(function() {
 		<?php
 include_once ("lib/common.inc.php");
+
+include("lib/Color.php");
+$color = new Lux_Color();
+
+
 $unspscresult = mysql_query("select * from UNSPSCcategories;");
 while ($row = mysql_fetch_assoc($unspscresult)) {
 	$unspsc[$row['UNSPSC']] = $row['Title'];
 }
 $total = 0;
+$cats = 0;
 $catsresult = mysql_query("SELECT LEFT( categoryUNSPSC, 1 ) as cat ,
 SUM( value ) as value
 FROM `contractnotice`
@@ -31,6 +37,8 @@
 GROUP BY cat ;");
 $nodes = Array();
 while ($row = mysql_fetch_assoc($catsresult)) {
+$cats++;
+$catColor = $color->hsl2hex(Array($cats/10, .7, .5));
 	$catName = $unspsc[$row['cat'] . "0000000"] . $row['cat'];
 	if ($row['cat'] == "") $catName = "null";
 	$subnodes = Array();
@@ -48,26 +56,27 @@
 FROM `contractnotice`
 WHERE childCN = 0 and LEFT( categoryUNSPSC, 2 ) = '{$tworow['cat']}'
 GROUP BY cat ;");
+		$subCatColor = $color->hsl2hex(Array($cats/10, rand(1,10)/10, .5));
 		while ($threerow = mysql_fetch_assoc($catthreesresult)) {
 			$subsubcatName = $unspsc[$threerow['cat'] . "00000"] . $threerow['cat'];
 			if ($threerow['cat'] == "") $subsubcatName = "null";
 			$subsubnodes[] = Array(
 				"label" => $subsubcatName,
 				"amount" => $threerow['value'],
-				"color" => "#000000"
+				"color" => "#".$subCatColor
 			);
 		}
 		$subnodes[] = Array(
 			"label" => $subcatName,
 			"amount" => $tworow['value'],
-			"color" => "#000000",
+			"color" => "#".$subCatColor,
 			"children" => $subsubnodes
 		);
 	}
 	$nodes[] = Array(
 		"label" => $catName,
 		"amount" => $row['value'],
-		"color" => "#000000",
+		"color" => "#".$catColor,
 		"children" => $subnodes
 	);
 	$total+= $row['value'];

--- a/heuristics/heuristics.inc.php
+++ b/heuristics/heuristics.inc.php
@@ -3,13 +3,13 @@
 $heuristics = Array();
 //each heuristic adds self to description array
 include ("dateHeuristics.php");
-//include ("historyHeuristics.php");
+include ("historyHeuristics.php");
 //include ("metadataHeuristics.php");
 //include ("valueHeuristics.php");
 function runHeuristic($heuristicName, $cn)
 {
 	// check  if already ran
-	$query = "select count(*) from heuristic_results where heuristic_name = '$heuristicName' and CNID = '{$CN['CNID']}";
+	$query = "select count(*) from heuristic_results where heuristic_name = '$heuristicName' and CNID = '{$cn['CNID']}'";
 	$result = mysql_query($query);
 	$r = mysql_fetch_array($result);
 	if ($r[0] == 0) {
@@ -37,3 +37,4 @@
 	}
 }
 ?>
+

file:b/lib/Color.php (new)
--- /dev/null
+++ b/lib/Color.php
@@ -1,1 +1,502 @@
-
+<?php

+/**

+ *

+ * Color values manipulation utilities. Provides methods to convert from and to

+ * Hex, RGB, HSV and HSL color representattions.

+ *

+ * Several color conversion logic are based on pseudo-code from

+ * http://www.easyrgb.com/math.php

+ *

+ * @category Lux

+ *

+ * @package Lux_Color

+ *

+ * @author Rodrigo Moraes <rodrigo.moraes@gmail.com>

+ *

+ * @license http://www.opensource.org/licenses/bsd-license.php BSD License

+ *

+ * @version $Id$

+ *

+ */

+class Lux_Color

+{

+    /**

+     *

+     * Converts hexadecimal colors to RGB.

+     *

+     * @param string $hex Hexadecimal value. Accepts values with 3 or 6 numbers,

+     * with or without #, e.g., CCC, #CCC, CCCCCC or #CCCCCC.

+     *

+     * @return array RGB values: 0 => R, 1 => G, 2 => B

+     *

+     */

+    public function hex2rgb($hex)

+    {

+        // Remove #.

+        if (strpos($hex, '#') === 0) {

+            $hex = substr($hex, 1);

+        }

+

+        if (strlen($hex) == 3) {

+            $hex .= $hex;

+        }

+

+        if (strlen($hex) != 6) {

+            return false;

+        }

+

+        // Convert each tuple to decimal.

+        $r = hexdec(substr($hex, 0, 2));

+        $g = hexdec(substr($hex, 2, 2));

+        $b = hexdec(substr($hex, 4, 2));

+

+        return array($r, $g, $b);

+    }

+

+    /**

+     *

+     * Converts hexadecimal colors to HSV.

+     *

+     * @param string $hex Hexadecimal value. Accepts values with 3 or 6 numbers,

+     * with or without #, e.g., CCC, #CCC, CCCCCC or #CCCCCC.

+     *

+     * @return array HSV values: 0 => H, 1 => S, 2 => V

+     *

+     */

+    public function hex2hsv($hex)

+    {

+        return $this->rgb2hsv($this->hex2rgb($hex));

+    }

+

+    /**

+     *

+     * Converts hexadecimal colors to HSL.

+     *

+     * @param string $hex Hexadecimal value. Accepts values with 3 or 6 numbers,

+     * with or without #, e.g., CCC, #CCC, CCCCCC or #CCCCCC.

+     *

+     * @return array HSL values: 0 => H, 1 => S, 2 => L

+     *

+     */

+    public function hex2hsl($hex)

+    {

+        return $this->rgb2hsl($this->hex2rgb($hex));

+    }

+

+    /**

+     *

+     * Converts RGB colors to hexadecimal.

+     *

+     * @param array $rgb RGB values: 0 => R, 1 => G, 2 => B

+     *

+     * @return string Hexadecimal value with six digits, e.g., CCCCCC.

+     *

+     */

+    public function rgb2hex($rgb)

+    {

+        if(count($rgb) < 3) {

+            return false;

+        }

+

+        list($r, $g, $b) = $rgb;

+

+        // From php.net.

+        $r = 0x10000 * max(0, min(255, $r));

+        $g = 0x100 * max(0, min(255, $g));

+        $b = max(0, min(255, $b));

+

+        return strtoupper(str_pad(dechex($r + $g + $b), 6, 0, STR_PAD_LEFT));

+    }

+

+    /**

+     *

+     * Converts RGB to HSV.

+     *

+     * @param array $rgb RGB values: 0 => R, 1 => G, 2 => B

+     *

+     * @return array HSV values: 0 => H, 1 => S, 2 => V

+     *

+     */

+    public function rgb2hsv($rgb)

+    {

+        // RGB values = 0 ÷ 255

+        $var_R = ($rgb[0] / 255);

+        $var_G = ($rgb[1] / 255);

+        $var_B = ($rgb[2] / 255);

+

+        // Min. value of RGB

+        $var_Min = min($var_R, $var_G, $var_B);

+

+        // Max. value of RGB

+        $var_Max = max($var_R, $var_G, $var_B);

+

+        // Delta RGB value

+        $del_Max = $var_Max - $var_Min;

+

+        $V = $var_Max;

+

+        // This is a gray, no chroma...

+        if ( $del_Max == 0 ) {

+           // HSV results = 0 ÷ 1

+           $H = 0;

+           $S = 0;

+        } else {

+           // Chromatic data...

+           $S = $del_Max / $var_Max;

+

+           $del_R = ((($var_Max - $var_R) / 6) + ($del_Max / 2)) / $del_Max;

+           $del_G = ((($var_Max - $var_G) / 6) + ($del_Max / 2)) / $del_Max;

+           $del_B = ((($var_Max - $var_B) / 6) + ($del_Max / 2)) / $del_Max;

+

+           if ($var_R == $var_Max) {

+               $H = $del_B - $del_G;

+           } else if ($var_G == $var_Max) {

+               $H = (1 / 3) + $del_R - $del_B;

+           } else if ($var_B == $var_Max) {

+               $H = (2 / 3) + $del_G - $del_R;

+           }

+

+           if ($H < 0) {

+               $H += 1;

+           }

+           if ($H > 1) {

+               $H -= 1;

+           }

+        }

+

+        // Returns agnostic values.

+        // Range will depend on the application: e.g. $H*360, $S*100, $V*100.

+        return array($H, $S, $V);

+    }

+

+    /**

+     *

+     * Converts RGB to HSL.

+     *

+     * @param array $rgb RGB values: 0 => R, 1 => G, 2 => B

+     *

+     * @return array HSL values: 0 => H, 1 => S, 2 => L

+     *

+     */

+    public function rgb2hsl($rgb)

+    {

+        // Where RGB values = 0 ÷ 255.

+        $var_R = $rgb[0] / 255;

+        $var_G = $rgb[1] / 255;

+        $var_B = $rgb[2] / 255;

+

+        // Min. value of RGB

+        $var_Min = min($var_R, $var_G, $var_B);

+        // Max. value of RGB

+        $var_Max = max($var_R, $var_G, $var_B);

+        // Delta RGB value

+        $del_Max = $var_Max - $var_Min;

+

+        $L = ($var_Max + $var_Min) / 2;

+

+        if ( $del_Max == 0 ) {

+            // This is a gray, no chroma...

+            // HSL results = 0 ÷ 1

+            $H = 0;

+            $S = 0;

+        } else {

+            // Chromatic data...

+            if ($L < 0.5) {

+                $S = $del_Max / ($var_Max + $var_Min);

+            } else {

+                $S = $del_Max / ( 2 - $var_Max - $var_Min );

+            }

+

+            $del_R = ((($var_Max - $var_R) / 6) + ($del_Max / 2)) / $del_Max;

+            $del_G = ((($var_Max - $var_G) / 6) + ($del_Max / 2)) / $del_Max;

+            $del_B = ((($var_Max - $var_B) / 6) + ($del_Max / 2)) / $del_Max;

+

+            if ($var_R == $var_Max) {

+                $H = $del_B - $del_G;

+            } else if ($var_G == $var_Max) {

+                $H = ( 1 / 3 ) + $del_R - $del_B;

+            } else if ($var_B == $var_Max) {

+                $H = ( 2 / 3 ) + $del_G - $del_R;

+            }

+

+            if ($H < 0) {

+                $H += 1;

+            }

+            if ($H > 1) {

+                $H -= 1;

+            }

+        }

+

+        return array($H, $S, $L);

+    }

+

+    /**

+     *

+     * Converts HSV colors to hexadecimal.

+     *

+     * @param array $hsv HSV values: 0 => H, 1 => S, 2 => V

+     *

+     * @return string Hexadecimal value with six digits, e.g., CCCCCC.

+     *

+     */

+    public function hsv2hex($hsv)

+    {

+        return $this->rgb2hex($this->hsv2rgb($hsv));

+    }

+

+    /**

+     *

+     * Converts HSV to RGB.

+     *

+     * @param array $hsv HSV values: 0 => H, 1 => S, 2 => V

+     *

+     * @return array RGB values: 0 => R, 1 => G, 2 => B

+     *

+     */

+    public function hsv2rgb($hsv)

+    {

+        $H = $hsv[0];

+        $S = $hsv[1];

+        $V = $hsv[2];

+

+        // HSV values = 0 ÷ 1

+        if ($S == 0) {

+            $R = $V * 255;

+            $G = $V * 255;

+            $B = $V * 255;

+        } else {

+            $var_h = $H * 6;

+            // H must be < 1

+            if ( $var_h == 6 ) {

+                $var_h = 0;

+            }

+            // Or ... $var_i = floor( $var_h )

+            $var_i = floor( $var_h );

+            $var_1 = $V * ( 1 - $S );

+            $var_2 = $V * ( 1 - $S * ( $var_h - $var_i ) );

+            $var_3 = $V * ( 1 - $S * ( 1 - ( $var_h - $var_i ) ) );

+

+            switch($var_i) {

+                case 0:

+                    $var_r = $V;

+                    $var_g = $var_3;

+                    $var_b = $var_1;

+                    break;

+                case 1:

+                    $var_r = $var_2;

+                    $var_g = $V;

+                    $var_b = $var_1;

+                    break;

+                case 2:

+                    $var_r = $var_1;

+                    $var_g = $V;

+                    $var_b = $var_3;

+                    break;

+                case 3:

+                    $var_r = $var_1;

+                    $var_g = $var_2;

+                    $var_b = $V;

+                    break;

+                case 4:

+                    $var_r = $var_3;

+                    $var_g = $var_1;

+                    $var_b = $V;

+                    break;

+                default:

+                    $var_r = $V;

+                    $var_g = $var_1;

+                    $var_b = $var_2;

+            }

+

+            //RGB results = 0 ÷ 255

+            $R = $var_r * 255;

+            $G = $var_g * 255;

+            $B = $var_b * 255;

+        }

+

+        return array($R, $G, $B);

+    }

+

+    /**

+     *

+     * Converts HSV colors to HSL.

+     *

+     * @param array $hsv HSV values: 0 => H, 1 => S, 2 => V

+     *

+     * @return array HSL values: 0 => H, 1 => S, 2 => L

+     *

+     */

+    public function hsv2hsl($hsv)

+    {

+        return $this->rgb2hsl($this->hsv2rgb($hsv));

+    }

+

+    /**

+     *

+     * Converts hexadecimal colors to HSL.

+     *

+     * @param array $hsl HSL values: 0 => H, 1 => S, 2 => L

+     *

+     * @return string Hexadecimal value. Accepts values with 3 or 6 numbers,

+     * with or without #, e.g., CCC, #CCC, CCCCCC or #CCCCCC.

+     *

+     */

+    public function hsl2hex($hsl)

+    {

+        return $this->rgb2hex($this->hsl2rgb($hsl));

+    }

+

+    /**

+     *

+     * Converts HSL to RGB.

+     *

+     * @param array $hsv HSL values: 0 => H, 1 => S, 2 => L

+     *

+     * @return array RGB values: 0 => R, 1 => G, 2 => B

+     *

+     */

+    public function hsl2rgb($hsl)

+    {

+        list($H, $S, $L) = $hsl;

+

+        if ($S == 0) {

+            // HSL values = 0 ÷ 1

+            // RGB results = 0 ÷ 255

+            $R = $L * 255;

+            $G = $L * 255;

+            $B = $L * 255;

+        } else {

+            if ($L < 0.5) {

+                $var_2 = $L * (1 + $S);

+            } else {

+                $var_2 = ($L + $S) - ($S * $L);

+            }

+

+            $var_1 = 2 * $L - $var_2;

+

+            $R = 255 * $this->_hue2rgb($var_1, $var_2, $H + (1 / 3));

+            $G = 255 * $this->_hue2rgb($var_1, $var_2, $H);

+            $B = 255 * $this->_hue2rgb($var_1, $var_2, $H - (1 / 3));

+        }

+

+        return array($R, $G, $B);

+    }

+

+    /**

+     *

+     * Support method for hsl2rgb(): converts hue ro RGB.

+     *

+     * @param

+     *

+     * @param

+     *

+     * @param

+     *

+     * @return int

+     *

+     */

+    protected function _hue2rgb($v1, $v2, $vH)

+    {

+        if ($vH < 0) {

+            $vH += 1;

+        }

+

+        if ($vH > 1) {

+            $vH -= 1;

+        }

+

+        if ((6 * $vH) < 1) {

+            return ($v1 + ($v2 - $v1) * 6 * $vH);

+        }

+

+        if ((2 * $vH) < 1) {

+            return $v2;

+        }

+

+        if ((3 * $vH) < 2) {

+            return ($v1 + ($v2 - $v1) * (( 2 / 3) - $vH) * 6);

+        }

+

+        return $v1;

+    }

+

+    /**

+     *

+     * Converts hexadecimal colors to HSL.

+     *

+     * @param array $hsl HSL values: 0 => H, 1 => S, 2 => L

+     *

+     * @return array HSV values: 0 => H, 1 => S, 2 => V

+     *

+     */

+    public function hsl2hsv($hsl)

+    {

+        return $this->rgb2hsv($this->hsl2rgb($hsl));

+    }

+

+    /**

+     *

+     * Updates HSV values.

+     *

+     * @param array $hsv HSV values: 0 => H, 1 => S, 2 => V

+     *

+     * @param array $values Values to update: 0 => value to add to H (0 to 360),

+     * 1 and 2 => values to multiply S and V (0 to 100). Example:

+     *

+     * {{{code:php

+     *     // Update saturation to 80% in the provided HSV.

+     *     $hsv = array(120, 0.75, 0.75);

+     *     $new_hsv = $color->updateHsv($hsv, array(null, 80, null));

+     * }}}

+     *

+     */

+    public function updateHsv($hsv, $values)

+    {

+        if (isset($values[0])) {

+            $hsv[0] = max(0, min(360, ($hsv[0] + $values[0])));

+        }

+

+        if (isset($values[1])) {

+            $hsv[1] = max(0, min(1, ($hsv[1] * ($values[1] / 100))));

+        }

+

+        if (isset($values[2])) {

+            $hsv[2] = max(0, min(1, ($hsv[2] * ($values[2] / 100))));

+        }

+

+        return $hsv;

+    }

+

+    /**

+     *

+     * Updates HSL values.

+     *

+     * @param array $hsl HSL values: 0 => H, 1 => S, 2 => L

+     *

+     * @param array $values Values to update: 0 => value to add to H (0 to 360),

+     * 1 and 2 => values to multiply S and V (0 to 100). Example:

+     *

+     * {{{code:php

+     *     // Update saturation to 80% in the provided HSL.

+     *     $hsl = array(120, 0.75, 0.75);

+     *     $new_hsl = $color->updateHsl($hsl, array(null, 80, null));

+     * }}}

+     *

+     */

+    public function updateHsl($hsl, $values)

+    {

+        if (isset($values[0])) {

+            $hsl[0] = max(0, min(360, ($hsl[0] + $values[0])));

+        }

+

+        if (isset($values[1])) {

+            $hsl[1] = max(0, min(1, ($hsl[1] * ($values[1] / 100))));

+        }

+

+        if (isset($values[2])) {

+            $hsl[2] = max(0, min(1, ($hsl[2] * ($values[2] / 100))));

+        }

+

+        return $hsl;

+    }

+}

--- a/media/unit_testing/controller.js
+++ /dev/null
@@ -1,94 +1,1 @@
-var giTotalTestCount = 0;
-var giActiveModule = 0;
-var giModuleTests;
-var giStartTime;
-var giTest;
-var gbStop = false;
-var gtoTest;
 
-function fnTestStart ( sTestInfo )
-{
-	gaoTest[ giActiveModule ].iTests++;
-	document.getElementById('test_info').innerHTML += 
-		(giActiveModule+1)+'.'+(giModuleTests+1)+'. '+sTestInfo+'... ';
-	document.getElementById('test_number').innerHTML = giTotalTestCount+1;
-	giModuleTests++;
-	giTotalTestCount++;
-	
-	/* Set a timer to catch stalled script */
-	gtoTest = setTimeout( function () {
-		fnMessage( '<span class="error">WARNING - test script stalled. Likely a JS error</span>' );
-		gbStop = true;
-	}, 3000 );
-}
-
-function fnTestResult ( bResult )
-{
-	clearTimeout( gtoTest );
-	if ( bResult )
-	{
-		fnMessage( 'Passed' );
-	}
-	else
-	{
-		fnMessage( '<span class="error">FAILED</span>' );
-		gbStop = true;
-		fnEnd( false );
-	}
-}
-
-function fnUnitStart( iTest )
-{
-	if ( !gbStop )
-	{
-		giModuleTests = 0;
-		window.parent.test_arena.location.href = 
-			(iTest==0?"":"../")+'templates/'+gaoTest[iTest].sTemplate+'.php?scripts='+gaoTest[iTest].sTest;
-		giTest = iTest;
-	}
-}
-
-function fnStartMessage( sMessage )
-{
-	fnMessage( '<br><b>'+gaoTest[giTest].sGroup+' - '+sMessage+'</b>' );
-}
-
-function fnMessage( sMessage )
-{
-	var nInfo = document.getElementById('test_info');
-	nInfo.innerHTML += sMessage+'<br>';
-	nInfo.scrollTop = nInfo.scrollHeight;
-}
-
-function fnUnitComplete()
-{
-	if ( giActiveModule < gaoTest.length - 1 )
-	{
-		fnUnitStart( ++giActiveModule );
-	}
-	else
-	{
-		fnEnd( true );
-	}
-}
-
-function fnEnd( bSuccess )
-{ 
-	var iEndTime = new Date().getTime();
-	var sTime = '<br>This test run took '+parseInt((iEndTime-giStartTime)/1000, 10)+
-			' second(s) to complete.';
-	
-	if ( bSuccess )
-	{
-		$('#test_running').html( 'Tests complete. '+giTotalTestCount+' tests were run.'+sTime );
-	}
-	else
-	{
-		$('#test_running').html( 'Unit tests failed at test '+giTotalTestCount+'.'+sTime );
-	}
-}
-
-$(document).ready( function () {
-	giStartTime = new Date().getTime();
-	fnUnitStart( giActiveModule );
-} );

--- a/media/unit_testing/controller.php
+++ /dev/null
@@ -1,100 +1,1 @@
-<?php
-	header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); 
-	header( 'Last-Modified: ' . gmdate( 'D, d M Y H:i:s' ) . ' GMT' ); 
-	header( 'Cache-Control: no-store, no-cache, must-revalidate' ); 
-	header( 'Cache-Control: post-check=0, pre-check=0', false ); 
-	header( 'Pragma: no-cache' ); 
-?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-	"http://www.w3.org/TR/html4/strict.dtd">
-<html>
-	<head>
-		<meta http-equiv="Content-type" content="text/html; charset=utf-8">
-		<title>DataTables unit test controller</title>
-		
-		<style type="text/css" media="screen">
-			#controller {
-				font: 12px/1.45em "Lucida Grande", Verdana, Arial, Helvetica, sans-serif;
-				margin: 0;
-				padding: 0 0 0 0.5em;
-				color: #333;
-				background-color: #fff;
-			}
-			
-			#test_info {
-				position: absolute;
-				top: 0;
-				right: 0;
-				width: 50%;
-				height: 100%;
-				font-size: 11px;
-				overflow: auto;
-			}
-			
-			.error {
-				color: red;
-			}
-			
-			#controller h1 {
-				color: #4E6CA3;
-				font-size: 18px;
-			}
-		</style>
-		
-		<script type="text/javascript" language="javascript" src="../js/jquery.js"></script>
-		<script type="text/javascript" charset="utf-8">
-			var gaoTest = [
-			<?php
-				function fnReadDir( &$aReturn, $path )
-				{
-					$rDir = opendir( $path );
-        	while ( ($file = readdir($rDir)) !== false )
-					{
-						if ( $file == "." || $file == ".." || $file == ".DS_Store" )
-						{
-							continue;
-						}
-						else if ( is_dir( $path.'/'.$file ) )
-						{
-							fnReadDir( $aReturn, $path.'/'.$file );
-						}
-						else
-						{
-							array_push( $aReturn, $path.'/'.$file );
-						}
-					}
-					closedir($rDir);
-				}
-				
-				/* Get the tests dynamically from the 'tests' directory, and their templates */
-				$aFiles = array();
-				fnReadDir( &$aFiles, "tests" );
-				
-				for ( $i=0 ; $i<count($aFiles) ; $i++ )
-				{
-					$sTemplate;
-					$fp = fopen( $aFiles[$i], "r" );
-					fscanf( $fp, "// DATA_TEMPLATE: %s", &$sTemplate );
-					fclose( $fp );
-					
-					$aPath = split('/', $aFiles[$i]);
-					
-					echo '{ '.
-						'"sTemplate": "'.$sTemplate.'", '.
-						'"sTest": "'.$aFiles[$i].'", '.
-						'"sGroup": "'.$aPath[1].'"},'."\n";
-				}
-				
-			?>
-			null ];
-			gaoTest.pop(); /* No interest in the null */
-		</script>
-		<script type="text/javascript" language="javascript" src="controller.js"></script>
-	</head>
-	<body id="controller">
-		<h1>DataTables unit testing</h1>
-		<div id="test_running">Running test: <span id="test_number"></span></div>
-		<div id="test_info">
-			<b>Test information:</b><br>
-		</div>
-	</body>
-</html>
+

--- a/media/unit_testing/index.html
+++ /dev/null
@@ -1,7 +1,1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
-<html>
-	<frameset rows="20%,80%">
-		<frame name="controller" id="controller" src="controller.php">
-		<frame name="test_arena" id="test_arena">
-	</frameset>
-</html>
+

--- a/media/unit_testing/performance/draw.html
+++ /dev/null
@@ -1,482 +1,1 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html>
-	<head>
-		<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-		<link rel="shortcut icon" type="image/ico" href="http://www.datatables.net/favicon.ico" />
-		
-		<title>DataTables example</title>
-		<style type="text/css" title="currentStyle">
-			@import "../../css/demo_page.css";
-			@import "../../css/demo_table.css";
-		</style>
-		<script type="text/javascript" language="javascript" src="../../js/jquery.js"></script>
-		<script type="text/javascript" language="javascript" src="../../js/jquery.dataTables.js"></script>
-		<script type="text/javascript" charset="utf-8">
-			$(document).ready(function() {
-				var oTable = $('#example').dataTable();
-				var oSettings = oTable.fnSettings();
-				var iStart = new Date().getTime();
-				
-				//console.profile();
-				//for ( var i=0, iLen=1000 ; i<iLen ; i++ )
-				//{
-				//	oSettings._iDisplayLength = 100;
-				//	oTable.oApi._fnCalculateEnd( oSettings );
-				//	oTable.oApi._fnDraw( oSettings );
-				//	
-				//	oSettings._iDisplayLength = 10;
-				//	oTable.oApi._fnCalculateEnd( oSettings );
-				//	oTable.oApi._fnDraw( oSettings );
-				//}
-				//console.profileEnd();
-				
-				var iEnd = new Date().getTime();
-				document.getElementById('output').innerHTML = "Test took "+(iEnd-iStart)+"mS";
-			} );
-		</script>
-	</head>
-	<body id="dt_example">
-		<div id="container">
-			<div class="full_width big">
-				<i>DataTables</i> performance test - draw
-			</div>
-			<div id="output"></div>
-			
-			<div id="demo">
-<table cellpadding="0" cellspacing="0" border="0" class="display" id="example">
-	<thead>
-		<tr>
-			<th>Rendering engine</th>
-			<th>Browser</th>
-			<th>Platform(s)</th>
-			<th>Engine version</th>
-			<th>CSS grade</th>
-		</tr>
-	</thead>
-	<tbody>
-		<tr class="gradeX">
-			<td>Trident</td>
-			<td>Internet
-				 Explorer 4.0</td>
-			<td>Win 95+</td>
-			<td class="center">4</td>
-			<td class="center">X</td>
-		</tr>
-		<tr class="gradeC">
-			<td>Trident</td>
-			<td>Internet
-				 Explorer 5.0</td>
-			<td>Win 95+</td>
-			<td class="center">5</td>
-			<td class="center">C</td>
-		</tr>
-		<tr class="gradeA">
-			<td>Trident</td>
-			<td>Internet
-				 Explorer 5.5</td>
-			<td>Win 95+</td>
-			<td class="center">5.5</td>
-			<td class="center">A</td>
-		</tr>
-		<tr class="gradeA">
-			<td>Trident</td>
-			<td>Internet
-				 Explorer 6</td>
-			<td>Win 98+</td>
-			<td class="center">6</td>
-			<td class="center">A</td>
-		</tr>
-		<tr class="gradeA">
-			<td>Trident</td>
-			<td>Internet Explorer 7</td>
-			<td>Win XP SP2+</td>
-			<td class="center">7</td>
-			<td class="center">A</td>
-		</tr>
-		<tr class="gradeA">
-			<td>Trident</td>
-			<td>AOL browser (AOL desktop)</td>
-			<td>Win XP</td>
-			<td class="center">6</td>
-			<td class="center">A</td>
-		</tr>
-		<tr class="gradeA">
-			<td>Gecko</td>
-			<td>Firefox 1.0</td>
-			<td>Win 98+ / OSX.2+</td>
-			<td class="center">1.7</td>
-			<td class="center">A</td>
-		</tr>
-		<tr class="gradeA">
-			<td>Gecko</td>
-			<td>Firefox 1.5</td>
-			<td>Win 98+ / OSX.2+</td>
-			<td class="center">1.8</td>
-			<td class="center">A</td>
-		</tr>
-		<tr class="gradeA">
-			<td>Gecko</td>
-			<td>Firefox 2.0</td>
-			<td>Win 98+ / OSX.2+</td>
-			<td class="center">1.8</td>
-			<td class="center">A</td>
-		</tr>
-		<tr class="gradeA">
-			<td>Gecko</td>
-			<td>Firefox 3.0</td>
-			<td>Win 2k+ / OSX.3+</td>
-			<td class="center">1.9</td>