

var value_array = new Array();
var race_array = new Array();
var race_string = new String();
race_array.pop();
race_array['White'] = true;
race_array['Black/AA'] = true;
race_array['Hispanic'] = true;
race_array['AI/AN'] = true;
race_array['Multiracial'] = true;
race_array['NH/PI'] = true;
race_array['Asian'] = true;

for(race in race_array){
	if(race_array[race])
	race_string += race + ','; 
}

value_array['Race'] = race_string;
value_array['Location'] = 'NULL';
value_array['Department'] = 'NULL';
value_array['Gender'] = 'NULL';
value_array['Age'] = 'NULL';
value_array['Rating'] = 'NULL';

var summary_string = window.location.hash;
summary_string  = summary_string.replace(/#/, '')
var summary_array = summary_string.split('|');
var throwaway = summary_array.pop();
var x;

for (x in summary_array){
	var local_string = summary_array[x];
	var init_array = local_string.split('*');
	setArrayValue(init_array[0], init_array[1]);
	
}

// holds an instance of XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();
// creates an XMLHttpRequest instance
function createXmlHttpRequestObject() 
{
  // will store the reference to the XMLHttpRequest object
  var xmlHttp;
  // this should work for all browsers except IE6 and older
  try
  {
    // try to create XMLHttpRequest object
    xmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    // assume IE6 or older
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                    "MSXML2.XMLHTTP.5.0",
                                    "MSXML2.XMLHTTP.4.0",
                                    "MSXML2.XMLHTTP.3.0",
                                    "MSXML2.XMLHTTP",
                                    "Microsoft.XMLHTTP");
    // try every prog id until one works
    for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++) 
    {
      try 
      { 
        // try to create XMLHttpRequest object
        xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } 
      catch (e) {}
    }
  }
  // return the created object or display an error message
  if (!xmlHttp)
    alert("Error creating the XMLHttpRequest object.");
  else 
    return xmlHttp;
}
// read a file from the server

function setRaceParams(race, checked){
	race_string = '';
	race_array[race] = checked;
	for(race in race_array){
	if(race_array[race])
		race_string += race + ','; 
	}
	setArrayValue('Race', race_string);
	getNumbers('Race', race_string);
}


function getNumbers(key, value)
{
	document.getElementById("chart_loader").style.display = "block";
	setArrayValue(key, value);
	var string = new String();
	
	for(x in value_array){
		string += x + '=' + value_array[x] + '&';	
	}
	
  // only continue if xmlHttp isn't void
  if (xmlHttp)
  {
    // try to connect to the server
    try
    {
      // initiate reading a file from the server
	  
      xmlHttp.open("GET", "includes/chart_builder.php?"+ string, true);
      xmlHttp.onreadystatechange = handleRequestStateChange;
      xmlHttp.send(null);
    }
    // display the error in case of failure
    catch (e)
    {
      alert("Can't connect to server:\n" + e.toString());
    }
  }
}
// function called when the state of the HTTP request changes
function handleRequestStateChange() 
{
  // when readyState is 4, we are ready to read the server response
  
  
  
  if (xmlHttp.readyState == 4) 
  {
		
    // continue only if HTTP status is "OK"
    if (xmlHttp.status == 200) 
    {
      try
      {
        // do something with the response from the server
        handleServerResponse();
      }
      catch(e)
      {
        // display error message
        alert("Error reading the response: " + e.toString());
      }
    } 
    else
    {
      // display status message
      alert("There was a problem retrieving the data:\n" + 
            xmlHttp.statusText);
    }
  }
}
// handles the response received from the server
function handleServerResponse()
{
	
	document.getElementById("chart_loader").style.display = "none";
	var response = xmlHttp.responseText;
	document.getElementById("dot_container").innerHTML = "";
	/*document.getElementById("dot_container").innerHTML = response;*/
	var response_array = response.split('^');
	 window.location.hash = response_array[2];
	 button_string = response_array[2];
	 button_array = button_string.split('|')
	 button_array.pop();
	 for(y in button_array){
	 	single_button = button_array[y];
		single_button = single_button.split('*');
		if(single_button[0] != 'Race'){
			checkButton(single_button[0], single_button[1]);
		}else {
			var race_buttons_string = single_button[1];
			var race_buttons_array = race_buttons_string.split(',');
			race_buttons_array.pop();
			for(z in race_array){
				race_array[z] = false;
				
			}
			for(z in race_buttons_array){
				race_array[race_buttons_array[z]] = true;
				
				
			}
			for(z in race_array){
				document.getElementById('Race_' + z).checked = race_array[z];
			}
			
															   
		}
	 }
	 
 	document.getElementById("dot_container").innerHTML = "";
	document.getElementById("dot_container").innerHTML = response_array[0];
	var analysis_string = response_array[1];
	var analysis_array = analysis_string.split(',');
	var avrate = new Number(analysis_array[1]);
	var avraise = new Number(analysis_array[2]);
	var avbonus = new Number(analysis_array[3]);
	var avtotal = new Number(parseFloat(analysis_array[3]) + parseFloat(analysis_array[2]));
	document.getElementById("total_employees").innerHTML = analysis_array[0];
	document.getElementById("average_rating").innerHTML = avrate.toPrecision(3);
	document.getElementById("average_raise").innerHTML = avraise.toPrecision(3);
	document.getElementById("average_bonus").innerHTML = avbonus.toPrecision(3);
	document.getElementById("average_total").innerHTML = avtotal.toPrecision(3);
	

}
function setArrayValue(key, value){
	value_array[key] = value; 
}

function checkButton(cat, val){
	
	if(document.getElementById(cat + '_' + val).className != 'Location'){
		document.getElementById(cat + '_' + val).checked = true;
	} else {
		document.getElementById(cat + '_' + val).selected=true;
	}
}
