var xmlHttp;
var elementID;
var errorStyle = "red solid 2px";

function isWithinBOTenPtSpread()
{
  var numberOfJudges = 2;
  var subTotals = new Array();

  buildPrototypes();

  for(var i = 1; i <= numberOfJudges; i++)
  {
    subTotal = document.getElementById("J"+i+"Total");
    subTotals.push(parseInt(subTotal.innerText));
  }

  if((parseInt(Array.max(subTotals)) - parseInt(Array.min(subTotals))) <= 10)
    return true;
  else
    return false;
}

function isWithinTenPtSpread()
{
  var numberOfJudges = parseInt(document.getElementById("numberOfJudges").value);
  var subTotals = new Array();

  buildPrototypes();

  for(var i = 1; i <= numberOfJudges; i++)
  {
    subTotal = document.getElementById("J"+i+"Total");
    subTotals.push(parseInt(subTotal.innerText));
  }

  if((parseInt(Array.max(subTotals)) - parseInt(Array.min(subTotals))) <= 10)
    return true;
  else
    return false;
}

function addBOScoresPerc()
{
  var form = document.studentScoreForm;
  var numberOfCriteria = 9;
  var numberOfJudges = parseInt(document.getElementById("numberOfJudges").value);
  var sum = 0;
  var totalSum = 0;
  var subTotal;
  var grandTotal;

  //clearScoringErrors();
  buildPrototypes();

  for(var i = 1; i <= 2; i++)
  {
    for(var j = 1; j <= numberOfCriteria; j++)
    {
      score = document.getElementById("J"+i+"S"+j);
      sum += (!isNaN(parseInt(score.value)) ? parseInt(score.value) : 0);
    }
    subTotal = document.getElementById("J"+i+"Total");
    subTotal.innerText = sum;
    totalSum += sum;
    sum = 0;
  }

  grandTotal = document.getElementById("grandTotal");
  grandTotal.innerText = totalSum;
}


function addBOScores()
{
  var numberOfCriteria = 5;
  var numberOfJudges = 2; //parseInt(document.getElementById("numberOfJudges").value);
  var sum = 0;
  var totalSum = 0;
  var subTotal;
  var grandTotal;
  var i;
  var j;

  clearBOScoringErrors();
  buildPrototypes();

  for(i = 1; i <= 2; i++)
  {
    for(j = 1; j <= 5; j++)
    {
      score = document.getElementById("J"+i+"S"+j);
      if(score == null)
      {
	alert(i+" "+j);
	break;
      }
      sum += (!isNaN(parseInt(score.value)) ? parseInt(score.value) : 0);
    }
    subTotal = document.getElementById("J"+i+"Total");
    subTotal.innerText = sum;
    totalSum += sum;
    sum = 0;
  }

  for(i = 3; i <= 4; i++)
  {
    for(j = 1; j <= 4; j++)
    {
      score = document.getElementById("J"+i+"S"+j);
      if(score == null)
      {
	alert(i+" "+j);
	break;
      }
      sum += (!isNaN(parseInt(score.value)) ? parseInt(score.value) : 0);
    }
    subTotal = document.getElementById("J"+i+"Total");
    subTotal.innerText = sum;
    totalSum += sum;
    sum = 0;
  }

  grandTotal = document.getElementById("grandTotal");
  grandTotal.innerText = totalSum;
}

function addScores()
{
  var form = document.studentScoreForm;
  var numberOfCriteria = 6;
  var numberOfJudges = parseInt(document.getElementById("numberOfJudges").value);
  var sum = 0;
  var totalSum = 0;
  var subTotal;
  var grandTotal;

  clearScoringErrors();
  buildPrototypes();

  for(var i = 1; i <= numberOfJudges; i++)
  {
    for(var j = 1; j <= numberOfCriteria; j++)
    {
      score = document.getElementById("J"+i+"S"+j);
      sum += (!isNaN(parseInt(score.value)) ? parseInt(score.value) : 0);
    }
    subTotal = document.getElementById("J"+i+"Total");
    subTotal.innerText = sum;
    totalSum += sum;
    sum = 0;
  }
  grandTotal = document.getElementById("grandTotal");
  grandTotal.innerText = totalSum;
}

function clearBOScoringErrors()
{
  var form = document.studentScoreForm;
  var numberOfCriteria = 6;
  var numberOfJudges = parseInt(document.getElementById("numberOfJudges").value);
  var scoreErrors = document.getElementById("scoreErrors");
  var i;
  var j;
  buildPrototypes();

  scoreErrors.innerText = "";
  form.submit.disabled = false;

  for(i = 1; i <= 2; i++)
  {
    for(j = 1; j <= 5; j++)
    {
      score = document.getElementById("J"+i+"S"+j);
      score.style.outline = 0;
    }
  }

  for(i = 3; i <= 4; i++)
  {
    for(j = 1; j <= 4; j++)
    {
      score = document.getElementById("J"+i+"S"+j);
      score.style.outline = 0;
    }
  }
}

function clearScoringErrors()
{
  var form = document.studentScoreForm;
  var numberOfCriteria = 6;
  var numberOfJudges = parseInt(document.getElementById("numberOfJudges").value);
  var scoreErrors = document.getElementById("scoreErrors");
  buildPrototypes();

  scoreErrors.innerText = "";
  form.submit.disabled = false;

  for(var i = 1; i <= numberOfJudges; i++)
  {
    for(var j = 1; j <= numberOfCriteria; j++)
    {
      score = document.getElementById("J"+i+"S"+j);
      score.style.outline = 0;
    }
  }
}

function validateBOScoringForm()
{
  var form = document.studentScoreForm;
  var numberOfCriteria = 5;
  var numberOfJudges = 2;
  var validScore = /^([1-9]|10)$/;
  var score;
  var score1;
  var score2;
  var scoreErrors = document.getElementById("scoreErrors");

  clearBOScoringErrors();
  buildPrototypes();
  /*
   for(var i = 1; i <= 2; i++)
   {
   for(var j = 1; j <= 5; j++)
   {
   score = document.getElementById("J"+i+"S"+j);
   if(/^0[0-9]$/.test(score.value))
   {
   score.value = score.value.substring(1);
   }


   if(score.value == "")
   {
   scoreErrors.innerText = "All scores must be entered."; //'
   score.style.outline = errorStyle;
   score.focus();
   form.submit.disabled = false;
   return false;
   }


   if(!validScore.test(score.value))
   {
   scoreErrors.innerText = "Scores must be between 0 and 10 inclusive."; //'
   score.style.outline = errorStyle;
   score.focus();
   form.submit.disabled = false;
   return false;
   }
   }
   }
   */

  for(var j = 1; j <= 5; j++)
  {
    score1 = document.getElementById("J1S"+j);
    score2 = document.getElementById("J2S"+j);
    //alert(score1.value+" "+score2.value);
    if(Math.abs(score1.value - score2.value) > 3)
    {
      scoreErrors.innerText = "Scores must be within 3 points of each other.";
      score1.style.outline = errorStyle;
      score2.style.outline = errorStyle;
      score2.focus();
      form.submit.disabled = false;
      return false;
    }
  }

  /*
   validScore = /^[1-5]$/;

   for(var i = 3; i <= 4; i++)
   {
   for(var j = 1; j <= 4; j++)
   {
   score = document.getElementById("J"+i+"S"+j);
   if(/^0[0-9]$/.test(score.value))
   {
   score.value = score.value.substring(1);
   }


   if(score.value == "")
   {
   scoreErrors.innerText = "All scores must be entered.";
   score.style.outline = errorStyle;
   score.focus();
   form.submit.disabled = false;
   return false;
   }


   if(j == 4)
   { validScore = /^([1-9]|10)$/; }

   if(!validScore.test(score.value))
   {
   if(j == 4)
   {
   scoreErrors.innerText = "Scores must be between 0 and 10 inclusive.";
   }
   else
   {
   scoreErrors.innerText = "Scores must be between 0 and 5 inclusive.";
   }
   score.style.outline = errorStyle;
   score.focus();
   form.submit.disabled = false;
   return false;
   }
   }
   }
   */

  if(!isWithinBOTenPtSpread())
  {
    scoreErrors.innerText = "Scores violate 10 point spread rule.";
    form.submit.disabled = false;
    return false;
  }

  return true;
}

function validateScoringForm()
{
  var form = document.studentScoreForm;
  var numberOfCriteria = 6;
  var numberOfJudges = parseInt(document.getElementById("numberOfJudges").value);
  var validScore = /^([0-9]|10)$/;
  var score;
  var scoreErrors = document.getElementById("scoreErrors");

  clearScoringErrors();
  buildPrototypes();

  for(var i = 1; i <= numberOfJudges; i++)
  {
    for(var j = 1; j <= numberOfCriteria; j++)
    {
      score = document.getElementById("J"+i+"S"+j);
      if(/^0[0-9]$/.test(score.value))
      {
	score.value = score.value.substring(1);
      }

      if(score.value == "")
      {
	scoreErrors.innerText = "All scores must be entered.";
	score.style.outline = errorStyle;
	score.focus();
	form.submit.disabled = false;
	return false;
      }

      if(!validScore.test(score.value))
      {
	scoreErrors.innerText = "Scores must be between 0 and 10 inclusive.";
	score.style.outline = errorStyle;
	score.focus();
	form.submit.disabled = false;
	return false;
      }
    }
  }

  if(!isWithinTenPtSpread())
  {
    scoreErrors.innerText = "Scores violate 10 point spread rule.";
    form.submit.disabled = false;
    return false;
  }

  return true;
}

function hideCloseButton() {
  var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;
  if (ie7)
  {
    document.getElementsByName("closeLink").item(0).style.display = "none";
    document.getElementsByName("closeLink").item(1).style.display = "none";
  }
}

function closeWindow() {
  //window.open('','_self','');
  //this.window.close();
  var ie7 = (document.all && !window.opera && window.XMLHttpRequest) ? true : false;
  if (ie7)
  {
    //This method is required to close a window without any prompt for IE7
    //window.open('','_parent','');
    window.open('','_self','');
    window.close();
  }
  else
  {
    //This method is required to close a window without any prompt for IE6
    this.focus();
    self.opener = this;
    self.close();
  }
}

function popupWindow(url) {
  window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=730,height=600,screenX=100,screenY=100,top=100,left=100');
}

function comparePreferences(a, b)
{
  var compare = a.ensemble.value - b.ensemble.value;
  if(compare == 0)
  {
    return a.prefToValue() - b.prefToValue();
  }
  return compare;
}

function compareInstruments(a, b)
{
  return a.instrument.value - b.instrument.value;
}

function Tuple(ensemble, instrument, preference)
{
  this.ensemble = ensemble;
  this.instrument = instrument;
  this.preference = preference;
}

Tuple.prototype.toString = function()
{
  with (this) return "("+ensemble.value+", "+instrument.value+", "+prefToValue()+")";
};

Tuple.prototype.prefToValue = function ()
{
  var val;
  for(var j = 0; j < 4; j++)
  {
    if(this.preference.item(j).checked == true)
    {
      val = this.preference.item(j).value;
      return val;
    }
  }
  return 0;
};



function resizeDiv(offset, start, tag)
{
  var isIE = (window.navigator.userAgent.indexOf("MSIE") > 0);
  var numberOfEnsembles = parseInt(document.getElementById("numberOfEnsembles").value) - offset;

  if(numberOfEnsembles < 0)
  {
    numberOfEnsembles = 0;
  }

  if(isIE)
  {
    document.getElementById(tag).style.height = parseInt(start) + (parseInt(numberOfEnsembles) * 20);
  }
}

function buildPrototypes()
{
  var isIE = (window.navigator.userAgent.indexOf("MSIE") > 0);

  if (! isIE) {
    HTMLElement.prototype.__defineGetter__("innerText",
					   function () { return(this.textContent); });
    HTMLElement.prototype.__defineSetter__("innerText",
					   function (txt) { this.textContent = txt; });
  }

  Array.max = function( array ){
    return Math.max.apply( Math, array );
  };


  Array.min = function( array ){
    return Math.min.apply( Math, array );
  };
}

function addEnsemble(str, url, id, handler, counter)
{
  var form = document.registrationForm;
  var ensembleCount = document.getElementById("ensembleCount").value;
  var ensembleErrors = document.getElementById("ensembleErrors");
  var ensemble;
  var instrument;
  var isNinthGrade = form.Grade9.checked;
  var maxEnsembles = (isNinthGrade == true) ? 4 : 10;

  buildPrototypes();
  clearErrors();

  for(var i = 0; i < ensembleCount; i++)
  {
    ensemble = document.getElementById("ensemble"+i+"_select");
    instrument = document.getElementById("instrument"+i+"_select");
    if((ensemble.value == 0 || instrument.value == 0) && ensemble.disabled != true)
    {
      if(ensemble.value == 0)
      {
	ensemble.style.outline = errorStyle;
      }
      else //instrument.value == 0
      {
	instrument.style.outline = errorStyle;
      }
      ensembleErrors.innerText = "You must select an ensemble, instrument, and preference for each row shown before you may add an ensemble.";

      return;
    }
  }

  if (form.activeEnsembleCount.value < maxEnsembles)
  {
    form.activeEnsembleCount.value = parseInt(form.activeEnsembleCount.value) + 1;
    updatePage(str, url, id, handler, counter);
  }
  else
  {
    alert("You currently have "+form.activeEnsembleCount.value+" active ensembles.\nYou may not add more than "+maxEnsembles+" ensembles"+
	  (isNinthGrade ? " for ninth grade students.\nIf there are already more than "+maxEnsembles+" ensembles added, you must delete\nthe extraneous ensembles before submitting.":".\n"));
  }
}

function delEnsemble(number)
{
  var form = document.registrationForm;
  var numberOfRows;
  var e = document.getElementById('ensemble'+number+'_select');
  var i = document.getElementById('instrument'+number+'_select');
  var l = document.getElementById('preference'+number+'_label');
  var p = document.getElementsByName('preference'+number);
  var pfs = document.getElementById('preference'+number+'_fieldset');
  var a = document.getElementById('anchor'+number);
  var isIE = (window.navigator.userAgent.indexOf("MSIE") > 0);

  e.value=0;
  i.value=0;

  e.disabled = true;
  i.disabled = true;
  for(var j = 0; j < 4; j++)
  {
    p[j].checked = false;
    p[j].disabled = true;
  }

  form.activeEnsembleCount.value = parseInt(form.activeEnsembleCount.value) - 1;

  e.style.display="none";
  i.style.display="none";
  l.style.display="none";
  pfs.style.display="none";
  a.style.display="none";

  numberOfRows = parseInt(form.activeEnsembleCount.value) - 3;

  if(numberOfRows < 0)
  {
    numberOfRows = 0;
  }

  if(isIE)
  {
    document.getElementById("mainContent").style.height = 490 + (parseInt(numberOfRows) * 20);
  }
}

function clearErrors()
{
  var form = document.registrationForm;
  var ensemble;
  var instrument;
  var ensembleCount = document.getElementById("ensembleCount").value;
  var studentErrors = document.getElementById("studentErrors");
  var ensembleErrors = document.getElementById("ensembleErrors");

  buildPrototypes();

  form.LastName.style.outline = 0;
  form.FirstName.style.outline = 0;
  form.GenderM.style.outline = 0;
  form.GenderF.style.outline = 0;
  form.Grade9.style.outline = 0;
  form.Grade10.style.outline = 0;
  form.Grade11.style.outline = 0;
  form.Grade12.style.outline = 0;

  for(var i = 0; i < ensembleCount; i++)
  {
    ensemble = document.getElementById("ensemble"+i+"_select");
    instrument = document.getElementById("instrument"+i+"_select");
    ensemble.style.outline = 0;
    instrument.style.outline = 0;
    //ensemble.setStyle({outline: 0});
    //instrument.setStyle({outline: 0});
  }

  studentErrors.innerText = "";
  ensembleErrors.innerText = "";
}

function validateForm()
{
  var form = document.registrationForm;
  var validName = /^[A-Za-z'\- ]+$/;
  var studentErrors = document.getElementById("studentErrors");
  var ensembleErrors = document.getElementById("ensembleErrors");
  var isNinthGrade = form.Grade9.checked;
  var maxEnsembles = (isNinthGrade == true) ? 4 : 10;
  var ensembleCount = document.getElementById("ensembleCount").value;
  var activeEnsembleCount = form.activeEnsembleCount.value;
  var atLeastOneEnsemble = false;
  var eachEnsembleHasInstrument = true;
  var Chorus = 2;
  var ChorusRange = [20, 27];
  var Orchestra = 4;
  var OrchestraRange = [38, 41];
  var Jazz = 3;
  var JazzChoir = 5;
  var ensemble;
  var instrument;
  var preference;
  var tuples = new Array();

  buildPrototypes();

  //Student Information Tests
  if(form.FirstName.value == "")
  {
    studentErrors.innerText = "First Name must not be blank.";
    form.FirstName.style.outline = errorStyle;
    form.FirstName.focus();
    form.submit.disabled = false;
    return false;
  }

  if(form.FirstName.value.length > 32)
  {
    studentErrors.innerText = "First Name must not be more than 32 characters.";
    form.FirstName.style.outline = errorStyle;
    form.FirstName.focus();
    form.submit.disabled = false;
    return false;
  }

  if(!validName.test(form.FirstName.value))
  {
    studentErrors.innerText = "First Name may only contain characters a-z, A-Z, -, ', and spaces.";
    form.FirstName.style.outline = errorStyle;
    form.FirstName.focus();
    form.submit.disabled = false;
    return false;
  }

  if(form.LastName.value == "")
  {
    studentErrors.innerText = "Last Name must not be blank.";
    form.LastName.style.outline = errorStyle;
    form.LastName.focus();
    form.submit.disabled = false;
    return false;
  }

  if(form.LastName.value.length > 32)
  {
    studentErrors.innerText = "Last Name must not be more than 32 characters.";
    form.LastName.style.outline = errorStyle;
    form.LastName.focus();
    form.submit.disabled = false;
    return false;
  }

  if(!validName.test(form.LastName.value))
  {
    studentErrors.innerText = "Last Name may only contain characters a-z, A-Z, -, ', and spaces.";
    form.LastName.style.outline = errorStyle;
    form.LastName.focus();
    form.submit.disabled = false;
    return false;
  }

  if(!form.GenderM.checked && !form.GenderF.checked)
  {
    studentErrors.innerText = "Gender must be selected.";
    form.GenderM.style.outline = errorStyle;
    form.GenderF.style.outline = errorStyle;
    form.GenderM.focus();
    form.submit.disabled = false;
    return false;
  }

  if(!form.Grade9.checked && !form.Grade10.checked &&
     !form.Grade11.checked && !form.Grade12.checked)
  {
    studentErrors.innerText = "Grade must be selected.";
    form.Grade9.style.outline = errorStyle;
    form.Grade10.style.outline = errorStyle;
    form.Grade11.style.outline = errorStyle;
    form.Grade12.style.outline = errorStyle;
    form.Grade9.focus();
    form.submit.disabled = false;
    return false;
  }

  //Ensemble Validations
  if(activeEnsembleCount > maxEnsembles)
  {
    ensembleErrors.innerText = "You may not submit more than "+maxEnsembles+" ensembles"+((isNinthGrade) ? " for ninth grade students.":".");
    form.Grade9.focus();
    form.submit.disabled = false;
    return false;
  }

  for(var i = 0; i < ensembleCount; i++)
  {
    ensemble = document.getElementById("ensemble"+i+"_select");
    instrument = document.getElementById("instrument"+i+"_select");
    preference = document.getElementsByName("preference"+i);
    /*
     for(var j = 0; j < 4; j++)
     {
     if(preference.item(j).checked == true)
     {
     preference = preference.item(j);
     break;
     }
     }
     */
    if(ensemble.value > 0) //Note that in order for this to work you have a precondition that says
    {
      atLeastOneEnsemble = true;
      //Check if each ensemble has an instrument
      if(!(instrument.value > 0)) //Note that in order for this to work you have a precondition that says
      {									 //when you hide an instrument it's value must be set to 0.
	instrument.style.outline = errorStyle;
	instrument.focus();
	ensembleErrors.innerText = "Part must be selected for each ensemble.";
	form.submit.disabled = false;
	return false;
      }

      tuples.push(new Tuple(ensemble, instrument, preference));

      //Check if Ninth grade and orchestra with right instruments
      if(isNinthGrade)
      {
	if(ensemble.value != Jazz && ensemble.value != JazzChoir && (ensemble.value != Orchestra || !(instrument.value >= OrchestraRange[0] && instrument.value <= OrchestraRange[1])))
	{
	  ensembleErrors.innerText = "Students in ninth grade may only be registered for the Jazz ensemble, Jazz Choir ensemble, or Violin, Viola, Cello, or String Bass in the Orchestra ensemble.";
	  ensemble.style.outline = errorStyle;
	  instrument.style.outline = errorStyle;
	  form.submit.disabled = false;
	  ensemble.focus();
	  return false;
	}
      }
    }
  }

  if(!atLeastOneEnsemble)
  {
    ensembleErrors.innerText = "At least one ensemble must be selected.";
    form.submit.disabled = false;
    return false;
  }

  tuples.sort(compareInstruments);
  for(var k = 1; k < tuples.length; k++)
  {
    if(tuples[k-1].instrument.value == tuples[k].instrument.value)
    {
      ensembleErrors.innerText = "You may not select the same ensemble and part combination more than once.";
      form.submit.disabled = false;
      return false;
    }

    if(tuples[k-1].instrument.value >= ChorusRange[0] && tuples[k-1].instrument.value <= ChorusRange[1] &&
       tuples[k].instrument.value >= ChorusRange[0] && tuples[k].instrument.value <= ChorusRange[1])
    {
      ensembleErrors.innerText = "You may not submit more than one chorus voice part per student.";
      form.submit.disabled = false;
      return false;
    }
  }

  tuples.sort(comparePreferences);
  for(var m = 1; m < tuples.length; m++)
  {
    //2 == Chorus
    if(tuples[m].ensemble.value != Chorus && tuples[m-1].ensemble.value == tuples[m].ensemble.value && tuples[m-1].prefToValue() == tuples[m].prefToValue())
    {
      ensembleErrors.innerText = "You may not select the same preference more than once for a given ensemble.";
      form.submit.disabled = false;
      return false;
    }
  }

  var currEnsemble = 1;
  var prefNum = 0; //indexed by 0
  for(var p = 0; p < tuples.length; p++)
  {
    if(tuples[p].ensemble.value != currEnsemble)
    {
      prefNum = 0;
    }
    if(tuples[p].ensemble.value != Chorus) //If not Chorus
    {
      tuples[p].preference.item(prefNum).checked = true;
      prefNum++;
    }
    currEnsemble = tuples[p].ensemble.value;
  }

  //var str = ""
  //for(var n = 0; n < tuples.length; n++)
  //{
  //	str += "("+tuples[n].ensemble.value+", "+tuples[n].instrument.value+", "+tuples[n].prefToValue()+")\n";
  //}
  //alert(str);

  //alert("You currently have "+form.activeEnsembleCount.value+" active ensembles.\n");
  //form.submit.disabled = false;
  //return false;
  return true;
}

function toggle_disability(toggle, name)
{
  var e = new Array();
  e = document.getElementsByName(name);
  if(toggle == 2 || toggle == 0) //Chorus or Nothing
  {
    for(var i = 0; i < e.length; i++)
    {
      e.item(i).disabled = true;
      if (i == 0)
       	e.item(i).checked = true;
    }
  }
  else
  {
    for(var i = 0; i < e.length; i++)
      e.item(i).disabled = false;
  }
}

function updatePage(str, url, id, handler, counter)
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp==null)
  {
    alert ("Browser does not support HTTP Request");
    return;
  }

  counter = parseInt(counter) + 1;
  elementID = id;

  url=url+"?q="+escape(str);
  url=url+"&sid="+Math.random();
  url=url+"&counter="+counter;
  xmlHttp.onreadystatechange=handler; //directoryStateChanged for directory, festStateChanged for fests
  xmlHttp.open("GET",url,true);
  xmlHttp.send(null);
}

function instrumentStateChanged()
{
  var isIE = (window.navigator.userAgent.indexOf("MSIE") > 0);
  var form = document.registrationForm;
  var numberOfRows = parseInt(form.activeEnsembleCount.value) - 3;

  if(numberOfRows < 0)
  {
    numberOfRows = 0;
  }

  clearErrors();
  if (elementID != "" && (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"))
  {
    document.getElementById(elementID).innerHTML=xmlHttp.responseText;

    if(isIE)
    {
      document.getElementById("mainContent").style.height = 490 + (parseInt(numberOfRows) * 20);
    }
  }
}

function festStateChanged()
{
  if (elementID != "" && (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"))
  {
    document.getElementById(elementID).innerHTML=xmlHttp.responseText;
  }
}

function directoryStateChanged()
{
  var newHeight;
  var isIE = (window.navigator.userAgent.indexOf("MSIE") > 0);
  var rows;

  if (elementID != "" && (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"))
  {
    document.getElementById(elementID).innerHTML=xmlHttp.responseText;

    document.getElementById("mainContent").style.height = "450px";
    rows = numRows("directors");

    if (rows >= 8)
    {
      newHeight = 500 + ((rows / 4) - 2) * 80;
    }
    else
    {
      newHeight = 450;
    }
    document.getElementById("mainContent").style.height = newHeight + "px";
    //alert("rows is "+rows+". newHeight is "+newHeight+".");
  }
}

function numRows(t)
{
  t = document.getElementById(t);
  if (t != null)
  {
    return t.rows.length;
  }
  else
  {
    return 0;
  }
}

function stateChanged()
{
  if (elementID != "" && (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"))
  {
    document.getElementById(elementID).innerHTML=xmlHttp.responseText;
  }
}

function GetXmlHttpObject()
{
  var xmlHttp=null;

  try
  {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
  }
  catch (e)
  {
    // Internet Explorer
    try
    {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return xmlHttp;
}

