var jsonInit;
var aObj;
var messageSerial = 0;
var manager = new CookieManager();

manager.setCookie("check_key", "check_value");
var enableCookie = manager.getCookie("check_key") == "check_value";

String.prototype.htmlescape = function() {
 return this.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
}

function load()
{
  if (enableCookie) {
    connectComet();
  } else {
    alert("Please enable cookie!");
  }
}

function connectComet()
{
  aObj = new JSONscriptRequest('http://chat.daifukuya.com:'+cnbs_port+'/polling?ch='+encodeURIComponent(cnbs_channel)+'&serial='+messageSerial);
  aObj.buildScriptTag(); 
  aObj.addScriptTag();
}

function reconnectComet()
{
  aObj.removeScriptTag();
  connectComet();
}

function processChatCommand(data) {
  var i;
  var tokens = data.split("\002");
  switch (tokens[0]) {
  case "/who":
    $('cnbsUserList').innerHTML = '';
    for (i = 1; i < tokens.length; i++) {
      if (tokens[i].length == 0) break;
      new Insertion.Bottom('cnbsUserList', '<li>'+tokens[i].htmlescape()+'</li>');
    }
    break;
  case "/history":
    if (tokens.length <= 2) return;
    messageSerial = tokens[1];
    for (i = 2; i < tokens.length; i++) {
      new Insertion.Top('cnbsChatArea', '<li>'+tokens[i].htmlescape()+'</li>');
    }
    break;
  default:
    new Insertion.Top('cnbsChatArea', '<li><font color=gray>'+data.htmlescape()+'</font></li>');
  }
}

function jsonCallback(jsonData) {
  var i;
  var data_list, data;
  if (jsonData.length == 0) return;

  data_list = jsonData.split("\001");
  for (i = 0; i < data_list.length; i++) {
    data = data_list[i];
    if (data.length == 0)
	continue;
    if (data.charAt(0) == '/') {
      processChatCommand(data);
    } else {
      sp = data.indexOf(" ");
      messageSerial = data.substr(0, sp);
      message = data.substr(sp + 1);
      new Insertion.Top('cnbsChatArea', '<li>'+message+'</li>');
      newmsg = $$("ul#cnbsChatArea li").first();
      new Effect.Highlight(newmsg);
    }
  }
}
