<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
  <head>
    <title>Core JavaScript Tests</title>

    <script language="JavaScript">
      function selectAll (suite, testDir)
      {
	  if (typeof suite == "undefined")
	      for (var suite in suites)
		  setAllDirs (suite, true);
	  else if (typeof testDir == "undefined")
	      setAllDirs (suite, true);
	  else
	      setAllTests (suite, testDir, true);
	  updateTotals();
      }

      function selectNone (suite, testDir)
      {
	  
	  if (typeof suite == "undefined")
	      for (var suite in suites)
		  setAllDirs (suite, false);
	  else if (typeof testDir == "undefined")
	      setAllDirs (suite, false);
	  else
	      setAllTests (suite, testDir, false);
	  updateTotals();	
      }

      function setAllDirs (suite, value)
      {
	  var dir;
	  for (dir in suites[suite].testDirs)
	      setAllTests (suite, dir, value);

      }

      function setAllTests (suite, testDir, value)
      {
	  var test, radioName;
	  
	  for (test in suites[suite].testDirs[testDir].tests)
	  {
	      radioName = suites[suite].testDirs[testDir].tests[test];
	      document.forms["testCases"].elements[radioName].checked = value;
	  }

      }

      function createList ()
      {
	  var suite, testDir, test, radioName;
	  var elements = document.forms["testCases"].elements;

	  var win = window.open ("about:blank", "other_window");
	  win.document.open();
	  win.document.write ("<pre>\n");
	  
	  win.document.write ("# Created " + new Date() + "\n");

	  for (suite in suites)
	      win.document.write ("# " + suite + ": " + 
				  elements["SUMMARY_" + suite].value + "\n");
	  win.document.write ("# TOTAL: " + elements["TOTAL"].value + "\n");

	  for (suite in suites)
	      for (testDir in suites[suite].testDirs)
		  for (test in suites[suite].testDirs[testDir].tests)
		  {  
		      radioName = suites[suite].testDirs[testDir].tests[test];
		      if (elements[radioName].checked)
			  win.document.write (suite + "/" + testDir + "/" + 
					      elements[radioName].value + "\n");
		  }
	  
	  win.document.close();

      }

      function onRadioClick (name)
      {
	  var radio = document.forms["testCases"].elements[name];
	  radio.checked = !radio.checked;
	  setTimeout ("updateTotals();", 100);
	  return false;
      }
    
      function updateTotals()
      {
	  var suite, testDir, test, radioName, selected, available, pct;
	  var totalAvailable = 0, totalSelected = 0;
	  
	  var elements = document.forms["testCases"].elements;

	  for (suite in suites)
	  {
	      selected = available = 0;
	      for (testDir in suites[suite].testDirs)
		  for (test in suites[suite].testDirs[testDir].tests)
		  {  
		      available++
		      radioName = suites[suite].testDirs[testDir].tests[test];
		      if (elements[radioName].checked)
			  selected++;
		  }
	      totalSelected += selected;
	      totalAvailable += available;
	      pct = parseInt((selected / available) * 100);
	      if (isNaN(pct))
		  pct = 0;
	      
	      elements["SUMMARY_" + suite].value = selected + "/" + available +
                  " (" + pct + "%) selected";
	  }

	  pct = parseInt((totalSelected / totalAvailable) * 100);
	  if (isNaN(pct))
	      pct = 0;
	      
	  elements["TOTAL"].value = totalSelected + "/" + totalAvailable + " (" +
	      pct + "%) selected";

      }
    
    </script>

  </head>

  <body bgcolor="white" onLoad="updateTotals()">
    <a name='top_of_page'></a>
    <h1>Core JavaScript Tests</h1>

    <form name="testCases">
    <input type='button' value='Export Test List' onClick='createList();'>
    <input type='button' value='Import Test List' 
      onClick='window.open("importList.html", "other_window");'>