

function to_percent(str)
{
  var r = ""
  for(var i=0; i<str.length; ++i) {
    r+="%"+str.charCodeAt(i)
  }
  return r
}

function from_percent(str)
{
  var r = ""
  str.scan(/%(\d+)/, function(m){
    r+=String.fromCharCode(parseInt(m[1]))
  })
  return r
}


function write_cookie(name, value)
{
  var expire = new Date((new Date()).getTime() + 30*24*60*60*1000).toGMTString()
  var path = document.URL.match(/http:\/\/[^/]+(.+)/)[1]
  document.cookie = name+"="+to_percent(value)+";expires="+expire+";path="+path+";"
}


function initialize_inputs()
{
  var input = null

  document.cookie.scan(/(\w+)=([^;]*)/, function(m){
    var name = m[1]
    var value = from_percent(m[2])
    if(name=="name") {
      input = $("post_name")
      if(input) {
        input.value = value
      }
    }
    else if(name=="delkey") {
      input = $("post_delkey")
      if(input) {
        input.value = value
      }
    }
  })


  input = $("post_comment")
  if(input) {
    input.style.color = "#ccc"
    input.value = "製品版のリプレイのみ受け付けます。バージョンを書いとくのが望ましいです。"
    input.onfocus = function() {
      var obj = $("post_comment")
      obj.style.color = "#000"
      obj.value = ""
      delete obj.onfocus
    }
  }

  input = $("post_name")
  if(input) {
    input.onchange = function() {
      write_cookie("name", $("post_name").value)
    }
  }

  input = $("post_delkey")
  if(input) {
    input.onchange = function() {
      write_cookie("delkey", $("post_delkey").value)
    }
  }
}


function hover(obj)
{
  obj.className+="_over"
}

function hout(obj)
{
  obj.className = obj.className.replace("_over", "")
}


function record_get_extra(n)
{
  return n.childNodes[1].firstChild.nodeValue
}

function record_get_score(n)
{
  return parseInt(n.childNodes[2].firstChild.nodeValue)
}

function record_get_coin(n)
{
  return parseInt(n.childNodes[3].firstChild.nodeValue)
}

function record_get_kill(n)
{
  return parseInt(n.childNodes[4].firstChild.nodeValue)
}

function record_get_equipment(n)
{
  return n.childNodes[5].firstChild.nodeValue
}

function record_get_date(n)
{
  return n.childNodes[6].firstChild.nodeValue
}

function record_get_player(n)
{
  var c = n.childNodes[7].firstChild
  return c ? c.nodeValue : ""
}



function sort_records(level, cmp)
{
  var board = $("scoreboard_"+level).firstChild
  var n = board.firstChild.nextSibling
  var r = $A()
  while(n) {
    r.push(n)
    n = n.nextSibling
  }
  r.each(function(a){
    board.removeChild(a)
  })
  r.sort(cmp)
  r.each(function(a){
    board.appendChild(a)
  })
}


function compare(a, b)
{
  if(a > b) {
    return 1
  }
  else if(a < b) {
    return -1
  }
  else {
    return 0
  }
}

function sort_by_extra(level)
{
  sort_records(level, function(a,b) {
    var r = compare(record_get_extra(a), record_get_extra(b))
    if(r==0) {
      r = -compare(record_get_score(a), record_get_score(b))
    }
    return r
  })
}

function sort_by_score(level)
{
  sort_records(level, function(a,b) {
    return -compare(record_get_score(a), record_get_score(b))
  })
}

function sort_by_coin(level)
{
  sort_records(level, function(a,b) {
    return -compare(record_get_coin(a), record_get_coin(b))
  })
}

function sort_by_kill(level)
{
  sort_records(level, function(a,b) {
    return -compare(record_get_kill(a), record_get_kill(b))
  })
}

function sort_by_equipment(level)
{
  sort_records(level, function(a,b) {
    var r = compare(record_get_equipment(a), record_get_equipment(b))
    if(r==0) {
      r = -compare(record_get_score(a), record_get_score(b))
    }
    return r
  })
}

function sort_by_date(level)
{
  sort_records(level, function(a,b) {
    return -compare(record_get_date(a), record_get_date(b))
  })
}

function sort_by_player(level)
{
  sort_records(level, function(a,b) {
    var r = compare(record_get_player(a), record_get_player(b))
    if(r==0) {
      r = -compare(record_get_score(a), record_get_score(b))
    }
    return r
  })
}

