/* pesrankings Object */
var pesrankings = new Object();

pesrankings.loadTable = function(url, target)
{
  document.getElementById(target).innerHTML = "<div class=\"loader\"><div><img src=\"/images/loading.gif\"/></div></div>";
  this.loader = new net.getContent(url, target, this.tableProcessor);

}

pesrankings.submitOrder = function(query, url)
{
  document.getElementById(this.target).innerHTML = "<div class=\"loader\"><div><img src=\"/images/loading.gif\"/></div></div>";
  var loader = new net.getContent(url + '?' + query, field.quickResponse);
}

pesrankings.tableProcessor = function()
{
  if (this.req.responseXML == null)
  {
    var error = document.createElement("div");
    error.className = 'error';
    error.innerHTML = "There was an error with your request, please try again. If this problem persists, please contact us.";

    var theDiv = document.getElementById(this.target);
    while (theDiv.firstChild)
      theDiv.removeChild(theDiv.firstChild);

    theDiv.appendChild(error);
    return;
  }

  var response = this.req.responseXML.documentElement;

  var newTable = document.createElement("table");
      newTable.setAttribute('cellSpacing','0');

  var tableHead = document.createElement('thead');

  var html = response.getElementsByTagName('html');
  if (html.length == 1)
  {
    var theHtml = field.getContent(html[0])
  }
  else
  {
    var Headers = response.getElementsByTagName('Headers');

    var clickTest = response.getElementsByTagName('clickable');
    if (clickTest.length == 1)
      var clickable = false;
    else
      var clickable = true;

    var headerURL = response.getElementsByTagName('headerURL');

    if (headerURL.length == 1)
      var theURL = field.getContent(headerURL[0]);
    else
      var theURL = '';

    if (Headers.length == 1)
    {

      var headerRow = document.createElement("tr");
      var Cells = Headers[0].childNodes;

      var k=0;
      for (var j = 0; j < Cells.length; j++)
      {
        if (Cells[j].nodeType == 1)
        {
          var element = document.createElement("th")
          element.innerHTML = field.getContent(Cells[j]);

          if (clickable)
          {
            element.setAttribute('rel', theURL + Cells[j].nodeName);
            element.setAttribute('rel2', this.target);
            element.onclick = function () { pesrankings.loadTable(this.getAttribute('rel'), this.getAttribute('rel2')); };
            element.style.cursor = "pointer";
          }
          headerRow.appendChild(element);
          k++;
        }
      }
      tableHead.appendChild(headerRow)
    }

  newTable.appendChild(tableHead);

  var tableBody = document.createElement("tbody");

    var Rows = response.getElementsByTagName('Data');
    for (var i = 0; i < Rows.length; i++)
    {
      var newRow = document.createElement("tr");
      var colSpan = 0;
      var Cells = Rows[i].childNodes;

      var c = 0; //Columns counter.

      for (var j = 0; j < Cells.length; j++)
      {
        if (Cells[j].nodeType == 1)
        {
          if(Cells[j].nodeName == 'colspan')
          {
            colSpan = field.getContent(Cells[j]);
          }
          else if(Cells[j].nodeName != 'RowClass')
          {
            var element = document.createElement("td")
            element.className = 'Col'+Cells[j].nodeName
            element.innerHTML = field.getContent(Cells[j]);
            if (colSpan)
              element.colSpan = colSpan;
            newRow.appendChild(element);
          }
          else
          {
            newRow.className = field.getContent(Cells[j]);
          }

        }

      }

      tableBody.appendChild(newRow)
    }
    newTable.appendChild(tableBody);
  }

  var theDiv = document.getElementById(this.target);
  while (theDiv.firstChild)
    theDiv.removeChild(theDiv.firstChild);

  if (newTable)
    theDiv.appendChild(newTable);
  if (theHtml)
    theDiv.innerHTML = theHtml;

  var script = response.getElementsByTagName('script');
  if (script.length > 0)
    eval(field.getContent(script[0]));
}


/* UI functions */

var pesrankingsUI = new Object();

pesrankingsUI.tabReset = function()
{
  this.eventTabSelect('EventTabs4',0);
  this.eventTabSelect('EventTabs3',0);
  this.eventTabSelect('EventTabs2',0);
}

pesrankingsUI.tabClear = function(tabset,num,style)
{
  for(var i=0;i<num;i++)
    if(document.getElementById(tabset+'_'+i)) (document.getElementById(tabset+'_'+i)).className = style;

}

pesrankingsUI.eventTabSelect = function(tabset,tab)
{
  switch(tabset)
  {

    case 'EventTabs4':
      if(document.getElementById('EventTabs4_0') && document.getElementById('EventTabs4_1') && document.getElementById('EventTabs4_2'))
      if(tab==0)
      {
        (document.getElementById('EventTabs4_0')).className = 'Link Selected';
        (document.getElementById('EventTabs4_1')).className = 'Link';
        (document.getElementById('EventTabs4_2')).className = 'Link';
        (document.getElementById('EventTabs4_3')).className = 'Link';
      }
      else if(tab==1)
      {
        (document.getElementById('EventTabs4_0')).className = 'Link';
        (document.getElementById('EventTabs4_1')).className = 'Link Selected';
        (document.getElementById('EventTabs4_2')).className = 'Link';
        (document.getElementById('EventTabs4_3')).className = 'Link';
      }
      else if(tab==2)
      {
        (document.getElementById('EventTabs4_0')).className = 'Link';
        (document.getElementById('EventTabs4_1')).className = 'Link';
        (document.getElementById('EventTabs4_2')).className = 'Link Selected';
        (document.getElementById('EventTabs4_3')).className = 'Link';
      }
      else if(tab==3)
      {
        (document.getElementById('EventTabs4_0')).className = 'Link';
        (document.getElementById('EventTabs4_1')).className = 'Link';
        (document.getElementById('EventTabs4_2')).className = 'Link';
        (document.getElementById('EventTabs4_3')).className = 'Link';
      }
      break;

    case 'EventTabs3':
    case 'EventTabs2':
      this.tabClear(tabset,8,'Button');
      (document.getElementById(tabset+'_'+tab)).className = 'Button Selected';
      break;

  }
}

pesrankingsUI.toggleElement = function(elt)
{
  if((document.getElementById(elt)).className == 'Show')
  {
    (document.getElementById(elt)).className = 'Hide';
  }
  else
  {
    (document.getElementById(elt)).className = 'Show';
  }
}
pesrankingsUI.toggleEventFilter = function ()
{
  if(document.getElementById('EventFilterLink').innerHTML.search(/Show/) >= 0)
    document.getElementById('EventFilterLink').innerHTML = '<img src="/images/sml_arrow_dn.gif" width="8" height="6"> Hide Event Filter';
  else
    document.getElementById('EventFilterLink').innerHTML = '<img src="/images/sml_arrow_up.gif" width="8" height="6"> Show Event Filter';

}
pesrankingsUI.applyFilter = function(formname,mode)
{

  qs = "";
  formref = document.forms[formname];
  elts = formref.elements;
  for(var i=0;i<elts.length;i++)
  {
      if(elts[i].checked==1) qs += '&' + elts[i].name + '=1';
  }
  pesrankings.loadTable('/event/getdata/?mode='+mode+'&a=Filter'+qs,'EventTable');

}
pesrankingsUI.resetAll = function()
{
  pesrankings.loadTable('/event/getdata/?reset=1&mode=Wide','EventTable');
  pesrankingsUI.eventTabSelect('EventTabs3',0);
  pesrankingsUI.eventTabSelect('EventTabs2',0);
}
pesrankingsUI.eventTableHeader = function(title)
{
  if(document.getElementById('eventTableHeader'))
  {
    (document.getElementById('eventTableHeader')).innerHTML = title;
  }
}

/* update filter checkboxes */
pesrankingsUI.filterSelect = function(tournament,knockout,league,winner,casual,inprogress,completed,old,cancelled,upcoming,comingsoon,registering)
{

  document.getElementById('Tournament').checked = (tournament!=0?true:false);
  document.getElementById('Knockout').checked = (knockout!=0?true:false);
  document.getElementById('League').checked = (league!=0?true:false);
  document.getElementById('Winner').checked = (winner!=0?true:false);
  document.getElementById('Casual').checked = (casual!=0?true:false);
  document.getElementById('ShowInProgress').checked = (inprogress!=0?true:false);
  document.getElementById('ShowCompleted').checked = (completed!=0?true:false);
  document.getElementById('ShowOld').checked = (old!=0?true:false);
  document.getElementById('ShowCancelled').checked = (cancelled!=0?true:false);
  document.getElementById('ShowUpcoming').checked = (upcoming!=0?true:false);
  document.getElementById('ShowComingSoon').checked = (comingsoon!=0?true:false);
  document.getElementById('ShowRegistering').checked = (registering!=0?true:false);

}

/************

Calendar stuff

************/
pesrankingsUI.calendarHeader = function(prev,cur,next,head)
{
  if(document.getElementById('Calendar'))
  {
    (document.getElementById('prevMonth')).onclick = function() {pesrankings.loadTable('/calendar/getdata/?d='+prev,'CalendarTable');return false;};
    (document.getElementById('nextMonth')).onclick = function() {pesrankings.loadTable('/calendar/getdata/?d='+next,'CalendarTable');return false;};
    (document.getElementById('curMonth')).onclick = function() {pesrankingsUI.showEventMonth(cur);return false;};
    (document.getElementById('curMonth')).innerHTML = head;
  }
}
pesrankingsUI.calendarFooter = function(cur)
{
  if(document.getElementById('Calendar'))
  {
    (document.getElementById('todayEvents')).href='#';
    (document.getElementById('todayEvents')).onclick = function() {pesrankings.loadTable('/calendar/getdata/?d='+cur,'CalendarTable');pesrankingsUI.showEventDay(cur);return false;};
  }
}
pesrankingsUI.showEventDay = function(day)
{
  if(document.getElementById('EventTable'))
  {
    pesrankings.loadTable('/event/getdata/?StartDate='+day+'&ShowUpcoming=1&ShowOld=1','EventTable');return false;
  }
  else
  {
    location.href='/event/bydate/'+day;
  }
}
pesrankingsUI.showEventMonth = function(month)
{
  if(document.getElementById('EventTable'))
  {
    pesrankings.loadTable('/event/getdata/?StartDate='+month+'&ShowUpcoming=1&ShowOld=1','EventTable');
  }
  else
  {
    location.href='/event/bydate/'+month;
  }
}
pesrankingsUI.dayFilter = function(month,day)
{
  if(document.getElementById('EventTable'))
  {
    if(document.getElementById('Calendar'))
      pesrankings.loadTable('/event/getdata/?StartDate='+month+'&Weekday='+day+'&ShowUpcoming=1&ShowOld=1','EventTable');return false;
  }
  else
  {
    if(document.getElementById('Calendar'))
      location.href='/event/bydate/'+month+'/day/'+day;

   }

}
pesrankingsUI.weekFilter = function(month,week)
{
  if(document.getElementById('EventTable'))
  {
    if(document.getElementById('Calendar'))
      pesrankings.loadTable('/event/getdata/?StartDate='+month+'&Week='+week+'&ShowUpcoming=1&ShowOld=1','EventTable');return false;
  }
  else
  {
    if(document.getElementById('Calendar'))
      location.href='/event/bydate/'+month+'/week/'+week;

   }

}
pesrankingsUI.ifexists = function(elmt,op1,op2)
{
  if(document.getElementById(elmt))
    eval(op1);
  else
    eval(op2);
}

pesrankingsUI.showGroup = function(id)
{
  if(document.getElementById('EventTable'))
    pesrankings.loadTable('/event/getdata/?ShowOld=1&ShowUpcoming=1&ShowGroup='+id,'EventTable');
  else
    location.href='/event/bygroup/'+id;

}

pesrankingsUI.selectTab = function(tabBar, tab)
{
  switch (tab)
  {
    case 'global':
      (document.getElementById('globalTab')).className = 'Link Selected';
      (document.getElementById('aboutTab')).className = 'Link SelectedRight';
      (document.getElementById('friendsTab')).className = 'Link';
      (document.getElementById('resetTab')).className = 'Link';
      break;
    case 'about':
      (document.getElementById('globalTab')).className = 'Link';
      (document.getElementById('aboutTab')).className = 'Link Selected';
      (document.getElementById('friendsTab')).className = 'Link SelectedRight';
      (document.getElementById('resetTab')).className = 'Link';
      break;
    case 'friends':
      (document.getElementById('globalTab')).className = 'Link';
      (document.getElementById('aboutTab')).className = 'Link';
      (document.getElementById('friendsTab')).className = 'Link Selected';
      (document.getElementById('resetTab')).className = 'Link SelectedRight';
      break;
  }
}

pesrankingsUI.popup = function(location,image)
{
  // Create the dialog window
  var dialog = document.createElement("div");
  dialog.className = 'dialog';
  dialog.id = 'popUpWindow';

  // Create close button
  var closeButton = document.createElement("div");
  closeButton.dialog = dialog;
  closeButton.onclick = pesrankingsUI.hideDialog;
  closeButton.className = 'close';
  dialog.appendChild(closeButton);

  var graphic = document.createElement("div");
  graphic.innerHTML = '<a href="' + location + '"><img src="' + image + '"></a>'
  dialog.appendChild(graphic);

  // Create modal layer
  dialog.modal = document.createElement("div");
  dialog.modal.className = 'modal';
  dialog.modal.appendChild(dialog);

  document.body.appendChild(dialog.modal);

  return dialog;
}

pesrankingsUI.hideDialog = function()
{
  if (this.dialog)
    this.dialog.modal.style.display = 'none';
}