g_status = "All";
g_div = "All";
g_divChampionship = "All";
g_town = "All";
g_team = "999";
g_Fn = "schedArrDumpAll()";

statusArr = new Array();
divArr = new Array();
townArr = new Array();
teamArr = new Array();
schedArr = new Array();

function newStatusArr(p_name)
{
   l_Obj = new Object();
   l_Obj.Name = p_name;
   return l_Obj;
}
function newDivArr(p_name,p_championship,p_numberofgames)
{
   l_Obj = new Object();
   l_Obj.Name = p_name;
   l_Obj.ChampionshipDivision = p_championship;
   l_Obj.FinalSchedID = -1;
//   l_Obj.NumberOfGames = p_numberofgames;
//   l_Obj.MaxNumberOfGames = 0;
   return l_Obj;
}
function newTownArr(p_name)
{
   l_Obj = new Object();
   l_Obj.Name = p_name;
   return l_Obj;
}
function getDivisionID(p_division)
  {
  l_cnt = 0;
  while ((l_cnt < divArr.length) && (divArr[l_cnt].Name != p_division))
    {
    l_cnt++;
    }
  if (l_cnt >= divArr.length)
    {
    l_cnt = -1;
    }
  return l_cnt;  
  }
function newTeamArr(p_division,p_town,p_team)
{
   l_Obj = new Object();
   l_Obj.Division = p_division;
   l_Obj.DivisionID = getDivisionID(p_division);
   l_Obj.Town = p_town;
   l_Obj.Team = p_team;
   l_Obj.Name = p_town + ' ' + p_team;
   l_Obj.PtsArray = new Array();
   l_Obj.DetailArray = new Array();
   l_Obj.PtsTotal = 0;
   return l_Obj;
}
function newSchedArr(p_date,p_time,p_championship,p_division,p_hometown,p_hometeam,p_awaytown,p_awayteam,p_rink,p_status,p_homescore,p_awayscore,p_gametype)
{
   l_Obj = new Object();
   l_Obj.Date = p_date;
   l_Obj.Time = p_time;
   l_Obj.ChampionshipDivision = p_championship;
   l_Obj.Division = p_division;
   l_Obj.HomeTown = p_hometown;
   l_Obj.HomeTeam = p_hometeam;
   l_Obj.AwayTown = p_awaytown;
   l_Obj.AwayTeam = p_awayteam;
   l_Obj.Rink = p_rink;
   l_Obj.Status = p_status;
   l_Obj.HomeScore = p_homescore;
   l_Obj.AwayScore = p_awayscore;
   l_Obj.GameType = p_gametype;
   l_Obj.HomePts = 0;
   l_Obj.AwayPts = 0;
   if (l_Obj.Status == "Completed")
     {
     if (l_Obj.HomeScore == l_Obj.AwayScore)
       {
       l_Obj.HomePts = 1;
       l_Obj.AwayPts = 1;
       }
     else if (l_Obj.HomeScore > l_Obj.AwayScore)
       {
       l_Obj.HomePts = 2;
       }
     else if (l_Obj.HomeScore < l_Obj.AwayScore)
       {
       l_Obj.AwayPts = 2;
       }
     }

   return l_Obj;
}
/*
function updateDivisionMaxNumberOfGames(p_division,p_max)
{
  l_cnt = getDivisionID(p_division);
  if (l_cnt >= 0)
    {
    if (divArr[l_cnt].MaxNumberOfGames < p_max)
      {
      divArr[l_cnt].MaxNumberOfGames = p_max;
      }
    }
}
*/
function updateTeamPtsArray(p_division,p_town,p_team,p_pts,p_detail)
{
  l_cnt = 0;
  while ((l_cnt < teamArr.length) && ((teamArr[l_cnt].Division != p_division) || (teamArr[l_cnt].Town != p_town) || (teamArr[l_cnt].Team != p_team)))
    {
    l_cnt++;
    }
  if (l_cnt < teamArr.length)
    {
    teamArr[l_cnt].PtsArray[teamArr[l_cnt].PtsArray.length] = p_pts;
    teamArr[l_cnt].PtsTotal += p_pts;
    teamArr[l_cnt].DetailArray[teamArr[l_cnt].DetailArray.length] = p_detail;
//    updateDivisionMaxNumberOfGames(p_division,teamArr[l_cnt].PtsArray.length);
    }
}
function updateDivisionFinalSchedID(p_division,p_schedid)
{
  l_DivID = getDivisionID(p_division);
  if (l_DivID >= 0)
    {
    divArr[l_DivID].FinalSchedID = p_schedid;
    }
}
function udpateStandingsData()
{
  for (ii = 0; ii < schedArr.length; ii++)
    {
    if (schedArr[ii].GameType == "Regular")
      {
      l_detail = "";
      if (schedArr[ii].Status == "Completed")
        {
        l_detail += schedArr[ii].HomePts + "-" + schedArr[ii].AwayPts;
        }
      l_detail += "&nbsp;vs.&nbsp;" + schedArr[ii].AwayTown + "&nbsp;" + schedArr[ii].AwayTeam;
      updateTeamPtsArray(schedArr[ii].Division, schedArr[ii].HomeTown, schedArr[ii].HomeTeam, schedArr[ii].HomePts, l_detail);     
      l_detail = "";
      if (schedArr[ii].Status == "Completed")
        {
        l_detail += schedArr[ii].AwayPts + "-" + schedArr[ii].HomePts;
        }
      l_detail += "&nbsp;vs.&nbsp;" + schedArr[ii].HomeTown + "&nbsp;" + schedArr[ii].HomeTeam;
      updateTeamPtsArray(schedArr[ii].Division, schedArr[ii].AwayTown, schedArr[ii].AwayTeam, schedArr[ii].AwayPts, l_detail);     
      }
    else if (schedArr[ii].GameType == "Final")
      {
      updateDivisionFinalSchedID(schedArr[ii].Division,ii);
      }
    }
}     

ii = 0;
statusArr[ii++] = newStatusArr("Completed");
statusArr[ii++] = newStatusArr("Scheduled");
statusArr[ii++] = newStatusArr("Cancelled");

function schedArrDumpOne(p_Arr,p_cnt)
{
  p_Arr[0]+=schedArr[p_cnt].Date;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].Time;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].Division;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].HomeTown;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].HomeTeam;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].AwayTown;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].AwayTeam;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].Rink;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].Status;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].HomeScore;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].AwayScore;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].HomePts;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].AwayPts;
  p_Arr[0]+='</td><td>';
  p_Arr[0]+=schedArr[p_cnt].GameType;
}

function schedArrDumpAll ()
{
  l_Arr = new Array();
  l_Arr[0] = '<table>';
  for (ii = 0;ii<schedArr.length;ii++)
    {
    if (((g_div == "All") || (schedArr[ii].Division == g_div) || (schedArr[ii].Division == g_divChampionship)) && ((g_status == "All") || (schedArr[ii].Status == g_status)) && ((g_town == "All") || ((schedArr[ii].HomeTown == g_town) ||(schedArr[ii].AwayTown == g_town))))
      {
      l_Arr[0]+='<tr><td>';
      schedArrDumpOne(l_Arr,ii);
      l_Arr[0]+='</td></tr>';
      }
    }
  l_Arr[0]+='</table>';
  htmlWrite(l_Arr[0],"list");
}
function writeOptions(p_Arr,p_Select,p_Criteria)
{
  l_Selected = -1;
  l_Criteria = p_Criteria;
  for (ii = 0; ii < p_Arr.length; ii++)
    {
    if (eval(l_Criteria))
      {
      document.write('<option value="'+p_Arr[ii].Name+'"');
      if (p_Arr[ii].Name == p_Select)
        {
        document.write(' SELECTED');
        l_Selected = ii;
        }
      document.write('>'+p_Arr[ii].Name);
      }
    }

  document.write('<option value="All"');
  if (l_Selected < 0)
    {
    document.write(' SELECTED');
    }
  document.write('>All');
}
function writeTeamOptions()
{
  l_Selected = -1;
  for (ii = 0; ii < teamArr.length; ii++)
    {
    if ((teamArr[ii].Team != "First Place Team") && (teamArr[ii].Team != "Second Place Team"))
      {
      document.write('<option value="'+ii+'"');
      if (ii == g_team)
        {
        document.write(' SELECTED');
        l_Selected = ii;
        }
      document.write('>'+teamArr[ii].Name);
      }
    }
  document.write('<option value="999"');
  if (l_Selected < 0)
    {
    document.write(' SELECTED');
    }
  document.write('>All');
}

// helper function to make fader cross browser compatible
function htmlWrite(html,id)
{
	var obj;
	if (document.getElementById) // IE 5+ & Netscape 6+
	{
		obj = document.getElementById(id);
		obj.innerHTML = html;
	}
	else if (document.all) // IE 4+
	{
		obj = document.all[id];
		obj.innerHTML = html;
	}
	else if (document.layers) // Netscape 4+
	{
		obj = document.layers[id];
		obj.document.open();
		obj.document.write(html);
		obj.document.close();
	}
}

function setDivChampionship()
{
g_divChampionship = "All";
for (ii = 0; ii < divArr.length; ii++)
  {
  if (divArr[ii].Name == g_div)
    {
    g_divChampionship = divArr[ii].ChampionshipDivision;
    }
  }
}
function selectDivisionChange()
{
g_div = document.form1.selectDiv.value;
setDivChampionship();
g_team = "999";
setDropDown(document.form1.selectTeam,g_team);
//schedArrDumpAll();
eval(g_Fn);
}

function selectTownChange()
{
g_town = document.form1.selectTown.value;
g_team = "999";
setDropDown(document.form1.selectTeam,g_team);
//schedArrDumpAll();
eval(g_Fn);
}

function selectTeamChange()
{
g_team = document.form1.selectTeam.value;
if (g_team != "999")
  {
  g_div = teamArr[g_team].Division;
  setDivChampionship();
  g_town = teamArr[g_team].Town;
  }
else
  {
  g_div = "All";
  setDivChampionship();
  g_town = "All";
  }
setDropDown(document.form1.selectDiv,g_div);
setDropDown(document.form1.selectTown,g_town);
//schedArrDumpAll();
eval(g_Fn);
}

function selectStatusChange()
{
g_status = document.form1.selectStatus.value;
//schedArrDumpAll();
eval(g_Fn);
}

function setDropDown(p_Obj,p_Value)
{
  if (p_Obj.type != "hidden")
    {
  	for (optionCounter = 0; optionCounter < p_Obj.options.length ; optionCounter++)
	    {
		  if (p_Obj.options[optionCounter].value == p_Value)
		    {
  			p_Obj.options[optionCounter].selected = true;
	  	  }
		  else
		    {
  			p_Obj.options[optionCounter].selected = false;
	  	  }
	    }
	  }
}

function writeForm(p_option)
{
l_option = new String(p_option);

document.write('<form name=form1 METHOD="POST" action="#">');
document.write('<table class=grid>');
document.write('  <tr>');
document.write('    <th>Division</th>');
if (l_option != "STANDINGS")
  {
  document.write('    <th>Town</th>');
  document.write('    <th>Team</th>');
  document.write('    <th>Status</th>');
  }
document.write('  </tr>');
document.write('  <tr>');
document.write('    <td>');
document.write('      <select NAME="selectDiv" onchange="return selectDivisionChange()" size="1" tabindex="1">');
if (l_option != "STANDINGS")
  {
  writeOptions(divArr,g_div,"(1==1)");
  }
else
  {
  writeOptions(divArr,g_div,"(p_Arr[ii].Name == p_Arr[ii].ChampionshipDivision)");
  }
document.write('      </select>');
document.write('    </td>');
if (l_option != "STANDINGS")
  {
  document.write('    <td>');
  document.write('      <select NAME="selectTown" onchange="return selectTownChange()" size="1" tabindex="2">');
  writeOptions(townArr,g_town,"(1==1)");
  document.write('      </select>');
  document.write('    </td>');
  document.write('    <td>');
  document.write('      <select NAME="selectTeam" onchange="return selectTeamChange()" size="1" tabindex="3">');
  writeTeamOptions();
  document.write('      </select>');
  document.write('    </td>');
  document.write('    <td>');
  document.write('      <select NAME="selectStatus" onchange="return selectStatusChange()" size="1" tabindex="4">');
  writeOptions(statusArr,g_status,"(1==1)");
  document.write('      </select>');
  document.write('    </td>');
  }
else
  {
  document.write('<input type="hidden" name="selectTown">');
  document.write('<input type="hidden" name="selectTeam">');
  document.write('<input type="hidden" name="selectStatus">');
  }
document.write('  </tr>');
document.write('</table>');
document.write('</form>');
document.write('<div id="list"></div>');
}

function scheduleInit(p_Fn)
{
g_Fn = p_Fn;
}
