var xmlHttp;

function GetXmlHttpObject()
{
  var xmlHttp=null;
  try
  {
    // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
  }
  catch (e1)
  {
    // Internet Explorer
    try
    {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e2)
    {
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  return xmlHttp;
}

function stateChanged()
{
  if (xmlHttp.readyState==4)
  {
    document.getElementById("results").innerHTML=xmlHttp.responseText;
  }
}

function getPastRank()
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp===null)
  {
    document.getElementById("results").innerHTML="<p>Your browser does not support AJAX!</p>";
    return;
  }
  document.getElementById("button").innerHTML="";
  var url="http://www.squaregear.net/football/ranks.php";
  var sel=document.getElementById("year");
  url=url+"?year="+sel.options[sel.selectedIndex].value;
  var sel2=document.getElementById("which");
  url=url+"&which="+sel2.options[sel2.selectedIndex].value;
  //document.getElementById("results").innerHTML=url;
  xmlHttp.onreadystatechange=stateChanged;
  xmlHttp.open("GET",url);
  xmlHttp.send(null);
}

/////////////////////////////////////////////////////////////
// Team Rank
/////////////////////////////////////////////////////////////

function receivedTeamRank()
{
  if (xmlHttp.readyState==4)
  {
    var JSON = JSON || {};
    parse = JSON.parse || function (str) {
	if (str === "") str = '""';
	eval("var p=" + str + ";"); // zzz this seems a little dangerous to me
	return p;
    };
    var data=parse(xmlHttp.responseText);
    teamid=data.teamid;
    years=data.years;
    srank=data.srank;
    srate=data.srate;
    frank=data.frank;
    frate=data.frate;
    sortTeamRankTable();
    doTeamRankChart();
  }
}

function getTeamRank()
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp===null)
  {
    document.getElementById("results").innerHTML="<p>Your browser does not support AJAX!</p>";
    return;
  }
  document.getElementById("button").innerHTML="";
  var url="http://www.squaregear.net/football/teamranktable.php";
  var sel=document.getElementById("team");
  url=url+"?team="+sel.options[sel.selectedIndex].value;
  //document.getElementById("results").innerHTML=url;
  xmlHttp.onreadystatechange=receivedTeamRank;
  xmlHttp.open("GET",url);
  xmlHttp.send(null);
}

function doTeamRankChart() {
	r.clear();
	var opts={
		axis:"0 0 1 1",
		axisxstep:(years.length>2?years.length-1:1),
		//nostroke:true,
		symbol:"o"
	}
	var yvals;
	switch(document.getElementById("chartselect").selectedIndex) {
		case 0: yvals=srank;break;
		case 1: yvals=srate;break;
		case 2: yvals=frank;break;
		case 3: yvals=frate;break;
	}
	var lc=r.g.linechart(30,0,500,200,years,yvals,opts);
	lc.symbols.attr({r:3});
	lc.hover(function () {
		this.tag=this.tag || r.g.tag(this.x,this.y,this.axis.toString()+": "+this.value,0,5).insertBefore(this);
		this.tag.show();
	}, function () {
		this.tag && this.tag.hide();
	});
}

function compareSRank(pos1,pos2) 
{
	if(srank[pos1]!=srank[pos2])
		return srank[pos1]-srank[pos2];
	if(srate[pos1]!=srate[pos2])
		return srate[pos2]-srate[pos1];
	return years[pos2]-years[pos1];
}

function compareFRank(pos1,pos2) 
{
	if(frank[pos1]!=frank[pos2])
		return frank[pos1]-frank[pos2];
	if(frate[pos1]!=frate[pos2])
		return frate[pos2]-frate[pos1];
	return years[pos2]-years[pos1];
}

function compareYear(pos1,pos2) 
{
	return years[pos2]-years[pos1];
}

function teamRankHeapSort(func) {
	sortord=[];
	for(var i=0;i<years.length;i++) {
		var at=sortord.push(i)-1;
		var father=Math.floor((at-1)/2);
		while(at>0 && func(sortord[father],sortord[at])<0) {
			var bubble=sortord[at];
			sortord[at]=sortord[father];
			sortord[father]=bubble;
			at=father;
			father=Math.floor((at-1)/2);
		}
	}
	for(var i=sortord.length-1;i>1;i--) {
		var bubble=sortord[0];
		sortord[0]=sortord[i];
		sortord[i]=bubble;
		var at=0
		if(2==i || func(sortord[1],sortord[2])>0)
			var child=1;
		else
			var child=2;
		while(child<i && func(sortord[child],sortord[at])>0) {
			bubble=sortord[child];
			sortord[child]=sortord[at];
			sortord[at]=bubble;
			at=child;
			if(at*2+1>=i) break;
			if(at*2+2==i || func(sortord[at*2+1],sortord[at*2+2])>0)
				var child=at*2+1;
			else
				var child=at*2+2;
		}
	}
	var bubble=sortord[0];
	sortord[0]=sortord[i];
	sortord[i]=bubble;
	//alert(sortord);
}

function sortTeamRankTable() {
	switch(document.getElementById("sort").selectedIndex) {
		case 0: teamRankHeapSort(compareYear);break;
		case 1: teamRankHeapSort(compareSRank);break;
		case 2: teamRankHeapSort(compareFRank);break;
	}
	// Clear out the table
	var tab=document.getElementById("table");
	while(tab.rows.length>0)
		tab.deleteRow(0);
	for(var i=0;i<sortord.length;i++) {
		var row=document.createElement("tr");
		if(i%2)
			row.className="alt";
		// add the year
		var cell=document.createElement("td");
		var anchor=document.createElement("a");
		anchor.setAttribute("href","gameyear.php?team="+teamid+"&year="+years[sortord[i]]);
		anchor.appendChild(document.createTextNode(years[sortord[i]]));
		cell.appendChild(anchor);
		row.appendChild(cell);
		// add the season rank
		cell=document.createElement("td");
		anchor=document.createElement("a");
		anchor.setAttribute("href","pastrank.php?year="+years[sortord[i]]+"&which=season");
		anchor.appendChild(document.createTextNode(srank[sortord[i]]));
		cell.appendChild(anchor);
		row.appendChild(cell);
		tab.appendChild(row);
		// add the season rating
		cell=document.createElement("td");
		cell.appendChild(document.createTextNode(srate[sortord[i]]));
		row.appendChild(cell);
		// add the final rank
		cell=document.createElement("td");
		anchor=document.createElement("a");
		anchor.setAttribute("href","pastrank.php?year="+years[sortord[i]]+"&which=final");
		anchor.appendChild(document.createTextNode(frank[sortord[i]]));
		cell.appendChild(anchor);
		row.appendChild(cell);
		tab.appendChild(row);
		// add the final rating
		cell=document.createElement("td");
		cell.appendChild(document.createTextNode(frate[sortord[i]]));
		row.appendChild(cell);
		// add the row
		tab.appendChild(row);
	}
}

/////////////////////////////////////////////////////////////
// Game Year
/////////////////////////////////////////////////////////////

function getGameYear()
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp===null)
  {
    document.getElementById("results").innerHTML="<p>Your browser does not support AJAX!</p>";
    return;
  }
  document.getElementById("button").innerHTML="";
  var url="http://www.squaregear.net/football/gameyeartable.php";
  var sel=document.getElementById("team");
  url=url+"?team="+sel.options[sel.selectedIndex].value;
  var sel2=document.getElementById("year");
  url=url+"&year="+sel2.options[sel2.selectedIndex].value;
  //document.getElementById("results").innerHTML=url;
  xmlHttp.onreadystatechange=stateChanged;
  xmlHttp.open("GET",url);
  xmlHttp.send(null);
}

function getGameVs()
{
  xmlHttp=GetXmlHttpObject();
  if (xmlHttp===null)
  {
    document.getElementById("results").innerHTML="<p>Your browser does not support AJAX!</p>";
    return;
  }
  document.getElementById("button").innerHTML="";
  var url="http://www.squaregear.net/football/gamevstable.php";
  var sel=document.getElementById("teama");
  url=url+"?teama="+sel.options[sel.selectedIndex].value;
  var sel2=document.getElementById("teamb");
  url=url+"&teamb="+sel2.options[sel2.selectedIndex].value;
  //document.getElementById("gametable").innerHTML=url;
  xmlHttp.onreadystatechange=stateChanged;
  xmlHttp.open("GET",url);
  xmlHttp.send(null);
}

