var chat_backend_uri = 'ajax/chat.php';
var chat_effq   = new Array();
var chat_effq_t = null;

if (!String.prototype.trim)
  String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };

$(function(){
  $("#chat_usermessage input").bind('keyup',function(e){
    if (e.keyCode == 13)
      chatPostMessage();
  });
  $("#chat_registeruser input").bind('keyup',function(e){
    if (e.keyCode == 13)
      chatRegisterUser();
  });
  chatInit();
  chatInitUserline();
});

// effects que
function start_effq(to) {
  if (chat_effq.length)
  {
    var obj = chat_effq.shift();
    obj.fadeIn("slow")
    chat_effq_t = setTimeout('start_effq()',to);
  } else {
    clearTimeout(chat_effq_t)
    chat_effq_t = null;
  }
}

function add2effq(jqobj,to) {
  if (!to) to = 1000;
  chat_effq.push(jqobj);
  if (chat_effq_t == null)
    start_effq(to);
}

function chatHandleMessages(messages,to) {
  if (!to) to = 400;
  if ($("#chat_init")) $("#chat_init").remove();
  var html = '';
  for(x=0; x<messages.length; x++) {
    html =
      '<div class="msg"><p class="message">' +
      messages[x]['ts'] + ' &lt;' + messages[x]['user'] +
      '&gt; ' + messages[x]['msg'] + '</p></div>';
    $("#chat_messagewindow").prepend(html);
    add2effq($("#chat_messagewindow div:first"),to);
  }
}

function chatInitUserline() {
  $.ajax ({
    type: "POST",
    url: chat_backend_uri,
    data: 'axn=getuser',
    cache: false,
    async: true,
    success: function (chk) {
      if (chk.length) {
        $("#chat_usermessage").fadeIn("slow");
      } else {
        $("#chat_registeruser").fadeIn("slow");
      }
    },
    dataType: "html"
  });
}

function chatInit() {
  $.ajax ({
    type: "POST",
    url: chat_backend_uri,
    data: 'axn=initmessages',
    cache: false,
    async: true,
    success: function (json) {
      if (json && json.messages) {
        chatHandleMessages(json.messages,200);
        $("#chat_init").remove();
      } else {
        $("#chat_init").html('ei keskustelua');
      }
    },
    complete: function(p1,p2){
      setTimeout('chatPollMessages()',4000);
    },
    dataType: "json"
  });
}
/*
  //   "timeout"
  //   "error"
  //   "notmodified"
  //   "success"
  //   "parsererror" 
*/
function chatPollMessages() {
  $.ajax ({
    type: "POST",
    url: chat_backend_uri,
    data: 'axn=getmessages',
    cache: false,
    async: true,
    success: function (json) {
      if (json && json.messages) {
        chatHandleMessages(json.messages);
      }
    },
    complete: function(p1,p2) {
      setTimeout('chatPollMessages()',4000);
    },
    dataType: "json"
  });
}

function chatRegisterUser() {
  var name = $("#chat_register_name").val().trim().substr(0,8);
  var code = $("#chat_register_code").val();
  $("#chat_register_code").val('');
  if (name.length) {
    $("#chat_register_name").val('');
    $.ajax ({
      type: "POST",
      url: chat_backend_uri,
      data: 'axn=registeruser&name='+name+'&code='+code,
      cache: false,
      async: true,
      success: function (chk) {
        if (chk == name) {
          $("#chat_registeruser").fadeOut("slow");
          setTimeout('$("#chat_usermessage").fadeIn("slow")');
        }
      },
      dataType: "html"
    });
  }
}

function chatPostMessage() {
  var msg = $("#chat_usermessage input").val().trim();
  $("#chat_usermessage input").val('');
  if (msg.length) {
    $.ajax ({
      type: "POST",
      url: chat_backend_uri,
      data: 'axn=postmessage&message='+msg,
      cache: false,
      async: true,
      success: function (json) {
        if (json && json.messages) {
          chatHandleMessages(json.messages);
        }
      },
      dataType: "json"
    });
  }
}

