var leaving = false;
var inited = 0;
var build = 1000036;

function initialize(sid) {
    appendToChatWindowInternal("myBot","Willkommen im Liveschach Bereich von www.my-corner.de");
    appendToChatWindowInternal("myBot","Gib /help für weitere Befehle ein.");
    var msg = $('chatmassage');
    msg.focus();
    window.setTimeout("listener('"+sid+"')",1000);        
}

function listener(sid) {
  if(!leaving)
  {
    var pars = 'sid='+sid+'&inited='+inited+'&build='+build+'&timestamp='+ new Date();
    new Ajax.Request('/cgi-bin/chatGet2.pl', {
    method:'get', 
    parameters: pars, 
      onSuccess:  function( transport, json )
      {
        inited = '1';
        if(json.serverCommand)
        {
          manageServerCommands(json.serverCommand);
        }
      
        if(json.append)
        {
          appendToChatWindow(json);
        }
        
        if(json.newList)
        {
          updateUserList(json.newList);
        }             
      }
    });  
    window.setTimeout("listener('"+sid+"')",10000);
  }
}

function updateUserList(list)
{
  var obj = $('Userfield');
	obj.innerHTML = "";
	obj.innerHTML += list;
	var obj = $('pUserfield');
	obj.scrollTop = obj.scrollHeight;
}

function submitMessage(sid,name) {
  var msg = $('chatmassage');
  if(msg.value != "")
  {
    if(msg.value.match(/^\/+/g)) {
      parseCommand(msg.value,sid);
      msg.value = "";
      msg.focus();
    }
    else
    {  
      sendMessage(msg.value,sid);
      appendToChatWindowInternal(name,msg.value);
      msg.value = "";
      msg.focus();
    }
  }
}

function parseCommand(cmd,sid)
{
  if(cmd.match(/^\/help/g))
  {
    appendToChatWindowInternal("myBot","-------");
    appendToChatWindowInternal("myBot","/help Ruft die Hilfe auf");
    appendToChatWindowInternal("myBot","/clear Leert dieses Chat Fenster");
    appendToChatWindowInternal("myBot","/leave Chat verlassen");
    appendToChatWindowInternal("myBot","/online Zeigt alle Benutzer an");
    appendToChatWindowInternal("myBot","/games Zeige alle angebotenen Partien");
    appendToChatWindowInternal("myBot","/own Zeige eigene angebotene Partie");
    appendToChatWindowInternal("myBot","/del Lösche eigene angebotene Partie");
    appendToChatWindowInternal("myBot","-------");
  }
  else if(cmd.match(/^\/clear/g))
  {
    var obj = $('Textfield');
	  obj.innerHTML = "";
  
    var msg = $('chatmassage');
    msg.value = "";
    msg.focus();
  }  
  else if(cmd.match(/^\/online/g))
  {    
    var pars = 'action=showOnline&sid='+sid;	
    chessConnect(pars); 
  }
  else if(cmd.match(/^\/own/g))
  {
    showOwnGame(sid);
  }
  else if(cmd.match(/^\/del/g))
  {
    deleteOwnGame(sid);  
  }
  else if(cmd.match(/^\/games/g))
  {
  	var pars = 'action=allGames&sid='+sid;	
    chessConnect(pars);	     
  }
  else if(cmd.match(/^\/leave/g))
  {
    leaving = true;
  	var pars = 'action=leaveChat&sid='+sid;	
    chatConnect(pars);
    window.location = "/cgi-bin/schach.pl?show=index";   	     
  }
  else
  {
    appendErrorToChatWindowInternal("Unbekanntes Kommando.");
  }
}

function manageServerCommands(cmd)
{
  if(cmd.match(/^\/leave/g))
  {
      leaving = true;
      window.location = "/cgi-bin/schach.pl?show=index";
  }
  else if(cmd.match(/^\/newGame [0-9]+$/g))
  {
    cmd = cmd.replace(/(\/)/g,'');
    var pieces = cmd.split(" ");
    //alert(pieces[1]);
    window.location = "/cgi-bin/schach.pl?show=live_board&gameID="+pieces[1];
  }
  else if(cmd.match(/^\/kick/g))
  {
    window.setTimeout("return2IndexLobby()",0);
  }
  else if(cmd.match(/^\/versionObsolete/g))
  {
    window.setTimeout("return2faqObsolete()",0);
  }
}

function sendMessage(msg,sid) {
  msg = parseText(msg);  
  var pars = 'action=sendMessage&msg='+msg+'&sid='+sid;
  chatConnect(pars);
}

function chatConnect(pars) {
  pars += '&timestamp='+ new Date();
  new Ajax.Request('/cgi-bin/chat.pl', {
  method:'get', 
  parameters: pars, 
    onSuccess:  function( transport, json )
    {
      appendToChatWindow(json);
    }
  });
}

function appendToChatWindow(json)
{
  if(json.error)
  {
	 var obj = $('Textfield');
   obj.innerHTML += "<span class=\"redError\">&lt;myBot&gt; "+json.error+"</span><br />";
	}
	else if(json.notice)
  {
	 var obj = $('Textfield');
   obj.innerHTML += "<span class=\"chatNotice\">&lt;myBot&gt; "+json.notice+"</span><br />";
	}
	else
	{
	 var obj = $('Textfield');
	 json.append = unParseText(json.append);
	 obj.innerHTML += json.append;
	}
	var obj = $('pTextfield');
	obj.scrollTop = obj.scrollHeight;
}

function appendToChatWindowInternal(name,message)
{
  var time = new Date();
  time = time.getHours()+":"+time.getMinutes()+":"+time.getSeconds();
	var obj = $('Textfield');
	obj.innerHTML += "["+time+"]&lt;"+name+"&gt; "+message+"<br />";
	var obj = $('pTextfield');
	obj.scrollTop = obj.scrollHeight;
}

function appendErrorToChatWindowInternal(message)
{
	var obj = $('Textfield');
	obj.innerHTML += "<span class=\"redError\">&lt;myBot&gt; "+message+"</span><br />";
	var obj = $('pTextfield');
	obj.scrollTop = obj.scrollHeight;
}

function subscribeGame(sid)
{
  var type = $F('type');
	var time = $F('time');
	var color = $F('color');
	var pars = 'action=newGame&sid='+sid+'&type=' + type + '&time=' + time+'&color=' + color;	
  chessConnect(pars);	
}

function newLiveGame(id,sid)
{
  var pars = 'action=newLiveGame&id='+id+'&sid='+sid+'&timestamp='+ new Date();	  
  var url = '/cgi-bin/chat.pl';		
  new Ajax.Request('/cgi-bin/chess.pl', {
  method:'get', 
  parameters: pars, 
    onSuccess:  function( transport, json )
    {
      newLiveGameStarter(json);
    }
  });   
}

function newLiveGameStarter(json)
{
  if(json.error)
  {
    appendToChatWindow(json);
  }
  else
  {
    window.location = "/cgi-bin/schach.pl?show=live_board&gameID="+json.gameID;
  }  
}

function chessConnect(pars)
{
  pars += '&timestamp='+ new Date();
	var url = '/cgi-bin/chat.pl';		
  new Ajax.Request('/cgi-bin/chess.pl', {
  method:'get', 
  parameters: pars, 
    onSuccess:  function( transport, json )
    {
      appendToChatWindow(json);
    }
  });
}

function deleteOwnGame(sid)
{
  	var pars = 'action=delGame&sid='+sid;	
    chessConnect(pars);	 
}

function showOwnGame(sid)
{
  	var pars = 'action=showGame&sid='+sid;	
    chessConnect(pars);	 
}

function submitMessageGames(sid)
{  
  parseCommand('/games',sid);
  var msg = $('chatmassage');
  msg.value = "";
  msg.focus();
}

function parseText(text)
{
  text = text.replace(/\?/g,"QUEST");
  text = text.replace(/%/g,"PERCENT");
  return text;
}

function unParseText(text)
{
  text = text.replace(/QUEST/g,"?");
  text = text.replace(/PERCENT/g,"%");
  return text;
}

function return2IndexLobby()
{
  window.location = "/cgi-bin/schach.pl?show=faq&id=2#fehler_duplikat";
}

function return2faqObsolete()
{
  window.location = "/cgi-bin/schach.pl?show=faq&id=2#fehler_version_zu_alt";
}
