var gamesbyscore = new Array();
var gamesbysize = new Array();
var gamesbydiff = new Array();
var gamesbyalign = new Array();
var gamesbyoutcome = new Array();
var gamesbyday = new Array();
var gamesbyfulldate = new Array();
var gamesbyalt = new Array();
var gamesbyclass = new Array();
var gamestitles = new Array();
var gamesbycharname = new Array();

var gameids = new Array();

var plotYaxis = "score";
var plotColor = "score";

var colortable = new Array();
colortable['score'] = new Array('01','02','03','04','05','06','07','08','09','10');
colortable['size'] = new Array('01','03','06','09','10','11','13');
//colortable['size'] = new Array('04','06','07','08','09','10');
colortable['diff'] = new Array('12','01','02','03','04','05','06','07','08','09','10','11');
colortable['align'] = new Array('10','06','03');
colortable['outcome'] = new Array('12','03','06','09','10','13');
colortable['class'] = new Array('11','10','09','06','03','01');

var keytable = new Array();
keytable['score'] = '<span><img src="/keybox.gif" class="key01" />&lt;10% of Best</span><span><img src="/keybox.gif" class="key02" />10-20%</span><span><img src="/keybox.gif" class="key03" />20-30%</span><span><img src="/keybox.gif" class="key04" />30-40%</span><span><img src="/keybox.gif" class="key05" />40-50%</span><span><img src="/keybox.gif" class="key06" />50-60%</span><span><img src="/keybox.gif" class="key07" />60-70%</span><span><img src="/keybox.gif" class="key08" />70-80%</span><span><img src="/keybox.gif" class="key09" />80-90%</span><span><img src="/keybox.gif" class="key10" />&gt;90% of Best</span>';
keytable['size'] = '<span><img src="/keybox.gif" class="key01" />Tiny</span><span><img src="/keybox.gif" class="key03" />Small</span><span><img src="/keybox.gif" class="key06" />Medium</span><span><img src="/keybox.gif" class="key09" />Large</span><span><img src="/keybox.gif" class="key10" />Huge</span><span><img src="/keybox.gif" class="key11" />Gigantic</span><span><img src="/keybox.gif" class="key13" />Immense</span>';
keytable['diff'] = '<span><img src="/keybox.gif" class="key12" />Cakewalk</span><span><img src="/keybox.gif" class="key01" />Easy</span><span><img src="/keybox.gif" class="key02" />Simple</span><span><img src="/keybox.gif" class="key03" />Beginner</span><span><img src="/keybox.gif" class="key04" />Normal</span><span><img src="/keybox.gif" class="key05" />Challenging</span><span><img src="/keybox.gif" class="key06" />Tough</span><span><img src="/keybox.gif" class="key07" />Painful</span><span><img src="/keybox.gif" class="key08" />Crippling</span><span><img src="/keybox.gif" class="key09" />Masochistic</span><span><img src="/keybox.gif" class="key10" />Obscene</span><span><img src="/keybox.gif" class="key11" />Suicidal</span>';
keytable['align'] = '<span><img src="/keybox.gif" class="key03" />Good</span><span><img src="/keybox.gif" class="key06" />Neutral</span><span><img src="/keybox.gif" class="key10" />Evil</span>';
keytable['outcome'] = '<span><img src="/keybox.gif" class="key12" />Resigned/Defeated</span><span><img src="/keybox.gif" class="key03" />Beyond Mortality</span><span><img src="/keybox.gif" class="key06" />Cultural Dominance</span><span><img src="/keybox.gif" class="key09" />Alliance Victory</span><span><img src="/keybox.gif" class="key10" />Total Conquest</span><span><img src="/keybox.gif" class="key13" />Ascension</span>';
keytable['class'] = '<span><img src="/keybox.gif" class="key01" />Civil Solar</span><span><img src="/keybox.gif" class="key03" />Civil Galactic</span><span><img src="/keybox.gif" class="key06" />Civil Universal</span><span><img src="/keybox.gif" class="key09" />Military Solar</span><span><img src="/keybox.gif" class="key10" />Military Galactic</span><span><img src="/keybox.gif" class="key11" />All Universal</span>';

var liststrings = new Array();
liststrings['size'] = new Array('Tiny','Small','Medium','Large','Huge','Gigantic','Immense');
liststrings['diff'] = new Array('Cakewalk','Easy','Simple','Beginner','Normal','Challenging','Tough','Painful','Crippling','Masochistic','Obscene','Suicidal');
liststrings['outcome'] = new Array('Defeat','Research','Cultural','Diplomatic','Conquest','Ascension');
liststrings['align'] = new Array('Evil','Neutral','Good');
liststrings['class'] = new Array('A.Universal','M.Galactic','M.Solar','C.Universal','C.Galactic','C.Solar');

function unSerializeData()
{
   for(var i=0; i<gamedata.length; i++)
   {
      var temp = gamedata[i].split("@@");

      gameids[i] = temp[0];
      gamesbyscore[temp[0]] = temp[1];
      gamesbysize[temp[0]] = temp[2];
      gamesbydiff[temp[0]] = temp[3];
      gamesbyalign[temp[0]] = temp[4];
      gamesbyoutcome[temp[0]] = temp[5];
      gamesbyday[temp[0]] = temp[6];
      gamestitles[temp[0]] = temp[7];
      gamesbyfulldate[temp[0]] = temp[8];
      gamesbyalt[temp[0]] = temp[9];
      gamesbyclass[temp[0]] = temp[10];
      
      if(page == 'emp'){ gamesbycharname[temp[0]] = temp[11]; }
   }


   switch(page)
   {
      case "emp":
         doPlot();
         //doList();
         //document.getElementById('dateh').className = "desc";
         break;
      case "char":
         doPlot();
         doList();
         document.getElementById('dateh').className = "desc";
         break;
   }
}

function rePlot()
{
	plotYaxis = document.forms[0].plotyaxis.options[document.forms[0].plotyaxis.selectedIndex].value;
	plotColor = document.forms[0].plotcolor.options[document.forms[0].plotcolor.selectedIndex].value;
   xAxisMax = document.forms[0].plotlength.options[document.forms[0].plotlength.selectedIndex].value;

   doPlot();
}

function doPlot()
{
   var plot = document.getElementById('plotbox');
   var newplot = new Array();

   var yAxisPct = new Array();
   var plotColorArr = new Array();

   switch(plotYaxis)
   {
      case "score":
         var yAxisMax = 0;
         for (var i in gamesbyscore){ if((gamesbyscore[i]*1) > (yAxisMax*1)){ yAxisMax = gamesbyscore[i]*1 } }
         //yAxisMax = 508000.0;
         for (var i in gamesbyscore){ yAxisPct[i] = (gamesbyscore[i]*1) / yAxisMax * 100; }
         break;
      case "size":
         for (var i in gamesbysize){ yAxisPct[i] = (gamesbysize[i]*1) / 6 * 100; }
         break;
      case "diff":
         for (var i in gamesbydiff){ yAxisPct[i] = (gamesbydiff[i]*1) / 11 * 100; }
         break;
      case "align":
         for (var i in gamesbyalign){ yAxisPct[i] = (((gamesbyalign[i]*1)-2)*-1) / 2 * 100; }
         break;
      case "outcome":
         for (var i in gamesbyoutcome){ yAxisPct[i] = (gamesbyoutcome[i]*1) / 5 * 100; }
         break;
      case "class":
         for (var i in gamesbyclass){ yAxisPct[i] = (((gamesbyclass[i]*1)-5)*-1) / 5 * 100; }
         break;
   }

   switch(plotColor)
   {
      case "score":
         var yAxisMax = 0;
         for (var i in gamesbyscore){ if((gamesbyscore[i]*1) > (yAxisMax*1)){ yAxisMax = gamesbyscore[i]*1 } }
         //yAxisMax = 508000.0;
         for (var i in gamesbyscore){ plotColorArr[i] = colortable['score'][ (Math.ceil((gamesbyscore[i]*1) / yAxisMax * 10)-1) ]; }
         break;
      case "size":
         for (var i in gamesbysize){ plotColorArr[i] = colortable['size'][ (gamesbysize[i]*1) ]; }
         break;
      case "diff":
         for (var i in gamesbydiff){ plotColorArr[i] = colortable['diff'][ (gamesbydiff[i]*1) ]; }
         break;
      case "align":
         for (var i in gamesbyalign){ plotColorArr[i] = colortable['align'][ (gamesbyalign[i]*1) ]; }
         break;
      case "outcome":
         for (var i in gamesbyoutcome){ plotColorArr[i] = colortable['outcome'][ (gamesbyoutcome[i]*1) ]; }
         break;
      case "class":
         for (var i in gamesbyclass){ plotColorArr[i] = colortable['class'][ (gamesbyclass[i]*1) ]; }
         break;
   }

   for (var i in yAxisPct){
      if((gamesbyday[i]*1) > (xAxisMax*1)){ continue; }
      var xAxisPct = (gamesbyday[i]*1) / (xAxisMax*1) * 100;
      newplot.push("<img src=\"/box.gif\" class=\"key"+plotColorArr[i]+"\" title=\""+gamestitles[i]+"\" style=\"bottom:"+yAxisPct[i]+"%;right:"+xAxisPct+"%;\" />");
   }

   plot.innerHTML = newplot.join('');
   document.getElementById('keybox').innerHTML = keytable[plotColor];
}

function doList()
{
   var list = document.getElementById('listbox');

   if(page == 'emp'){
      var newlist = new Array('<table class="listtable" cellspacing="0" style="margin-bottom:0px" id="listbody"><tr><th id="charh">Character</th><th id="dateh"><a href="javascript:null(0);" onclick="changeSort(\'date\');">Date Posted</a></th><th id="sizeh"><a href="javascript:null(0);" onclick="changeSort(\'size\');">Galaxy Size</a></th><th id="diffh"><a href="javascript:null(0);" onclick="changeSort(\'diff\');">Difficulty</a></th><th id="alignh"><a href="javascript:null(0);" onclick="changeSort(\'align\');">Alignment</a></th><th id="outcomeh"><a href="javascript:null(0);" onclick="changeSort(\'outcome\');">Outcome</a></th><th id="scoreh"><a href="javascript:null(0);" onclick="changeSort(\'score\');">Score</a></th><th id="alth"><a href="javascript:null(0);" onclick="changeSort(\'alt\');">AltScore</a></th><th id="classh"><a href="javascript:null(0);" onclick="changeSort(\'class\');">AM Class</a></th></tr>');
   }else{
      var newlist = new Array('<table class="listtable" cellspacing="0" style="margin-bottom:0px" id="listbody"><tr><th>Game No.</th><th id="dateh"><a href="javascript:null(0);" onclick="changeSort(\'date\');">Date Posted</a></th><th id="sizeh"><a href="javascript:null(0);" onclick="changeSort(\'size\');">Galaxy Size</a></th><th id="diffh"><a href="javascript:null(0);" onclick="changeSort(\'diff\');">Difficulty</a></th><th id="alignh"><a href="javascript:null(0);" onclick="changeSort(\'align\');">Alignment</a></th><th id="outcomeh"><a href="javascript:null(0);" onclick="changeSort(\'outcome\');">Outcome</a></th><th id="scoreh"><a href="javascript:null(0);" onclick="changeSort(\'score\');">Score</a></th><th id="alth"><a href="javascript:null(0);" onclick="changeSort(\'alt\');">AltScore</a></th><th id="classh"><a href="javascript:null(0);" onclick="changeSort(\'class\');">AM Class</a></th></tr>');
   }


   var h = 1;
   var tempstr = '';

   gameids.sort(sortGames);

   for (var j=0; j<gameids.length; j++){
      var i = gameids[j];
      if((gamesbyday[i] > 180) || (page == 'emp' && j > 19)){ continue; }
      if(h%2==0){ tempstr = ' class="even"'; }else{ tempstr = ''; }
      h = h+1;

      if(page == 'emp'){
         newlist.push("<tr"+tempstr+"><td>"+gamesbycharname[i]+"</td><td>"+gamesbyfulldate[i]+"</td><td><img src=\"/box.gif\" class=\"key"+colortable['size'][gamesbysize[i]]+"\" />"+liststrings['size'][gamesbysize[i]]+"</td><td><img src=\"/box.gif\" class=\"key"+colortable['diff'][gamesbydiff[i]]+"\" />"+liststrings['diff'][gamesbydiff[i]]+"</td><td><img src=\"/box.gif\" class=\"key"+colortable['align'][gamesbyalign[i]]+"\" />"+liststrings['align'][gamesbyalign[i]]+"</td><td><img src=\"/box.gif\" class=\"key"+colortable['outcome'][gamesbyoutcome[i]]+"\" />"+liststrings['outcome'][gamesbyoutcome[i]]+"</td><td>"+gamesbyscore[i]+"</td><td>"+gamesbyalt[i]+"</td><td><img src=\"/box.gif\" class=\"key"+colortable['class'][gamesbyclass[i]]+"\" />"+liststrings['class'][gamesbyclass[i]]+"</td>");
      }else{
         newlist.push("<tr"+tempstr+"><td>"+i.replace('g','#')+"</td><td>"+gamesbyfulldate[i]+"</td><td><img src=\"/box.gif\" class=\"key"+colortable['size'][gamesbysize[i]]+"\" />"+liststrings['size'][gamesbysize[i]]+"</td><td><img src=\"/box.gif\" class=\"key"+colortable['diff'][gamesbydiff[i]]+"\" />"+liststrings['diff'][gamesbydiff[i]]+"</td><td><img src=\"/box.gif\" class=\"key"+colortable['align'][gamesbyalign[i]]+"\" />"+liststrings['align'][gamesbyalign[i]]+"</td><td><img src=\"/box.gif\" class=\"key"+colortable['outcome'][gamesbyoutcome[i]]+"\" />"+liststrings['outcome'][gamesbyoutcome[i]]+"</td><td>"+gamesbyscore[i]+"</td><td>"+gamesbyalt[i]+"</td><td><img src=\"/box.gif\" class=\"key"+colortable['class'][gamesbyclass[i]]+"\" />"+liststrings['class'][gamesbyclass[i]]+"</td>");
      }

   }

   list.innerHTML = newlist.join('')+'</table>';
}

var primarysort = "date";
var primarydir = "desc";
var secondarysort = "score";
var secondarydir = "desc";

function changeSort(column){
   var savesecond = '';

   if(primarysort != column){
      savesecond = secondarysort;
      secondarysort = primarysort;
      secondarydir = primarydir;
      primarysort = column;
      primarydir = "desc";
   }else{
      if(primarydir == "asc"){
         primarydir = "desc";
      }else{
         primarydir = "asc";
      }
   }

   doList();

   document.getElementById(primarysort+'h').className = primarydir;
   document.getElementById(secondarysort+'h').className = secondarydir+'2';

}

function sortGames(a,b){
   var result = 0

   switch(primarysort){
      case "gameid":
      case "date":
         result = (a.replace('g','')*1)-(b.replace('g','')*1);
         break;
      case "score":
         result = gamesbyscore[a]-gamesbyscore[b];
         break;
      case "alt":
         result = gamesbyalt[a]-gamesbyalt[b];
         break;
      case "size":
         result = gamesbysize[a]-gamesbysize[b];
         break;
      case "diff":
         result = gamesbydiff[a]-gamesbydiff[b];
         break;
      case "align":
         result = gamesbyalign[b]-gamesbyalign[a];
         break;
      case "outcome":
         result = gamesbyoutcome[a]-gamesbyoutcome[b];
         break;
      case "class":
         result = gamesbyclass[b]-gamesbyclass[a];
         break;
      case "char":
         result = gamesbycharname[b]-gamesbycharname[a];
         break;
   }
   if(primarydir == "desc") { result *= -1; }

   if(result == 0){
      switch(secondarysort){
         case "gameid":
         case "date":
            result = (a.replace('g','')*1)-(b.replace('g','')*1);
            break;
         case "score":
            result = gamesbyscore[a]-gamesbyscore[b];
            break;
         case "alt":
            result = gamesbyalt[a]-gamesbyalt[b];
            break;
         case "size":
            result = gamesbysize[a]-gamesbysize[b];
            break;
         case "diff":
            result = gamesbydiff[a]-gamesbydiff[b];
            break;
         case "align":
            result = gamesbyalign[b]-gamesbyalign[a];
            break;
         case "outcome":
            result = gamesbyoutcome[a]-gamesbyoutcome[b];
            break;
         case "class":
            result = gamesbyclass[b]-gamesbyclass[a];
            break;
         case "char":
            result = gamesbycharname[b]-gamesbycharname[a];
            break;
      }
      if(secondarydir == "desc") { result *= -1; }
   }

   return result;

}

function sigPop(id) {
   popupWin = window.open('/sig.php?id='+id, 'altsigpop', 'width=430,height=160,scrollbars=no,resizable=yes')
}

window.onload = unSerializeData;