var NumOfPages = 3;
var CurPage = 0;
var Sort = 0;
var SortOrder = "desc";
function RatingUpdatePageNumber(num)
{
    var res = "";
    var i;
    if(NumOfPages <= 9) i = num;
    else  i = num - 5;
    if(i > NumOfPages - 10) i = NumOfPages - 10;
    if(i < 0) i = 0;
      
    for(var j = 0; j < 10 && i < NumOfPages; i++, j++)
    {
      if(i == num)
      {
        res += "<FONT COLOR='black'>" + String(i+1) + "</FONT>&nbsp;";
      }
      else
      {
        if( (j > 0 && j < 9) || i == 0 || i == NumOfPages - 1)
        {
          res += "<FONT COLOR='#3B91D3'><span onclick='RatingUpdatePageNumber(" + String(i) + 
            ");' style='cursor: pointer'><U>" + String(i+1) + "</U></span></FONT>&nbsp;"
        }
        else
        {
          res += "<FONT COLOR='#3B91D3'><span onclick='RatingUpdatePageNumber(" + String(i) + 
            ");' style='cursor: pointer'><U>...</U></span></FONT>&nbsp;"          
        }
      }
    }
    CurPage = num;
    var sort = GetSortByNumber(Sort); 
    if(sort == "errors")  SortOrder = "asc";
    alert("sort="+sort);
    RatingRequestAJAX('/rating/rating1.html?page='+String(CurPage+1)+'&sort='+sort+'&sort_order='+SortOrder);

}

function RatingUpdatePage()
{
  RatingRequestAJAX('/rating/rating1.html');
}

var IDExercise = -1;

function InitIDExercise(id)
{
   IDExercise = id;
}

var RatingUpdateTm = "";

function RatingUpdatePCrit(page, tmCrit, crit)
{
  // Update current page
  
  var script;
  var oRdAll;
  
  var pg = "";
  if(page != -1  &&  page != undefined)
    pg = "page="+String(page+1)+"&";    
  
  if(IDExercise == -1)
  {
    script = '/rating/rating1.html?';
    oRdAll = document.getElementById('radio-max_exercises-0');
  }    
  else
  {
    script = '/rating/exercise/rating.html?';
    oRdAll = document.getElementById('radio-max_exercises-0');
  }
  
  if(tmCrit != undefined  ||  parseInt(tmCrit) == -1)
  {
     RatingUpdateTm = "&period="+tmCrit;
//     pg = "";
  }
  else
  if(page == undefined  ||  parseInt(page) == -1)
  {
//    pg = "";
  }
  else
  {    
    pg = "page="+String(page+1)+"&";
    CurPage = page;
  }
    
  var oChbPaymOnly = document.getElementById('checkbox-payment-1');
  var oChbOnlOnly = document.getElementById('checkbox-online-1');
  
// parameters to send
  var sPaymentOnly = '&payment_only=';
  var sOnlineOnly = '&online_only=';
  var sMaxExercise = '&max_exercise=';
  var sExerciseID = '&exercise_id=';
//
  
  var req = script+pg+RatingUpdateTm;
  
  var arr10 = [];
  arr10['true'] = "1";
  arr10['false'] = "0";
  
  try
  {
  req += sPaymentOnly + arr10[oChbPaymOnly.checked];
  }
  catch(e)
  {
     req += sPaymentOnly + "0";
  }
  try
  {
    req += sOnlineOnly + arr10[oChbOnlOnly.checked];
  }
  catch(e)
  {
     req += sOnlineOnly + "0";
  }
  try
  {
    req += sMaxExercise + arr10[oRdAll.checked];
  }
  catch(e) 
  {
    req += sMaxExercise + "0";
  }
  
  if(IDExercise != undefined  &&  IDExercise != -1)
    req += sExerciseID + String(IDExercise);
  
  var sCrit = "";
  var sortOrder = "";
  if(crit != undefined)
  {
    if(crit == "errors")
      sortOrder = "&sort_order=asc";
    sCrit = "&sort="+crit;
  }
    
  req += sCrit + sortOrder;
  
  RatingRequestAJAX(req);
}

var numOfTableRows = 10;

function SortByCrit(num)
{
  Sort = num;
  
  if(IDExercise == -1)
  {
    req = '/rating/rating1.html?sort='+GetSortByNumber(Sort)+'&sort_order=desc'+RatingUpdateTm;
  }
  else
    req = '/rating/exercise/rating.html?sort='+GetSortByNumber(Sort)+'&sort_order=desc'+RatingUpdateTm;
  
//  prompt('', '/rating/rating.html?page='+String(CurPage+1)+'&sort='+GetSortByNumber(Sort)+'&sort_order=desc');
  //RequestAJAX('/rating/rating.html?page='+String(CurPage+1)+'&sort='+GetSortByNumber(Sort)+'&sort_order=desc');
  RatingRequestAJAX(req);
}

function GetSortByNumber(sort)
{
  switch(sort)
  {
  case 0:  return "rating";
  case 1:  return "name";
  case 2:  return "max_exercise";
  case 3:  return "max_exercise";
  case 4:  return "errors";
  case 5:  return "avg_speed";
  case 6:  return "length";
  case 7:  return "duration";
  case 8:  return "dt";
  case 9:  return "payment_sum";
  default: 
    alert("Wrong sort parameter to GetSortByNumber()");
  }
}

function RatingUpdate()
{
    if (req.readyState == 4) {
        if (req.status == 200) {
          
          document.getElementById('IDSpanRatingTable').innerHTML = req.responseText;
          
          // show table
          document.getElementById('IDSpanRatingTable').style.display = "";
  }
  
  else {
            alert("Could not receive data from server:\n" + req.statusText);
        }
    } 
}

function RatingRequestAJAX(url)
{
    req = null;
    if (window.XMLHttpRequest) {
        try {
            req = new XMLHttpRequest();
        } catch (e){}
    } else if (window.ActiveXObject) {
        try {
            req = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
            try {
                req = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){}
        }
    }
    
    if(req)
    {
      req.onreadystatechange = RatingUpdate;  
      req.open("GET", url, true);
      req.send(null);
    } else {
        alert("Ваш браузер не поддерживает AJAX. Пришлите описание проблемы на zaharov@ergosolo.ru");
    }
}

function GetXMLElement(xmlDoc, element, index)
{
//  alert("element = " + element);
  if(index == undefined)
  {
    if(xmlDoc.getElementsByTagName(element)[0].firstChild != null)
    {
      return xmlDoc.getElementsByTagName(element)[0].firstChild.nodeValue;
    }
    else
    {
      return "";
    }
  }
  else
  {
    if(xmlDoc.getElementsByTagName(element)[index] == undefined)  return "";
    if(xmlDoc.getElementsByTagName(element)[index].firstChild != null)
    {
      return xmlDoc.getElementsByTagName(element)[index].firstChild.nodeValue;
    }
    else
    {
      return "";
    }    
  }
}
