var sml=Array('aa.png','aa.png',
'ab.png','ab.png','ab.png',
'ac.png','ac.png','ac.png','ac.png',
'ad.png','ad.png',
'ae.png','ae.png','ae.png','ae.png','ae.png','ae.png',
'af.png','af.png',
'ag.png','ag.png','ag.png',
'ah.png',
'ai.png','ai.png','ai.png','ai.png','ai.png','ai.png','ai.png','ai.png','ai.png','ai.png','ai.png','ai.png',
'aj.png','aj.png',
'ak.png','ak.png',
'al.png','al.png',
'at.png',
'as.png','as.png',
'am.png','am.png',
'an.png',
'ao.png','ao.png');
var smltxt=Array("O:-)","O=)",
":-)",":)","=)",
":-(",":(",";(","=(","):",
";-)",";)",
":-P",":P","=P",":-p","=p",":P",
"8-)","B)",
":-D",":D","=D",
":-[",
"=-O","=-O",":-O","=O","=0","O_O","O_o","o_O","O_0","o_0","0_O","0_o","O_o","О_о",
":-*",":-{}",
":'(",":'-(",
":-X",":-x",
"*bay*",
":o)","*clown*",
'>:o','*angry*',
":-|",
':-\\',":-/");

function checkAdmin(nick)
{
	var rus=Array('а','о','е','у','х','р','ь','с','А','О','Е','У','Х','Р','С','Н');
	var eng=Array('a','o','e','y','x','p','b','c','A','O','E','Y','X','P','C','H');
	var adm=Array('admin','administrator','админ','администратор');
	rusnick=nick;
	engnick=nick;
	is_adm=false;
	for(i=0;i<rus.length;i++)
	{
		rusnick=rusnick.replace(eng[i],rus[i]);
		rusnick=rusnick.replace(eng[i],rus[i]);
		rusnick=rusnick.replace(eng[i],rus[i]);
		rusnick=rusnick.replace(eng[i],rus[i]);
		engnick=engnick.replace(rus[i],eng[i]);
		engnick=engnick.replace(rus[i],eng[i]);
		engnick=engnick.replace(rus[i],eng[i]);
		engnick=engnick.replace(rus[i],eng[i]);
	}
	rusnick=rusnick.toLowerCase();
	engnick=engnick.toLowerCase();
	for(i=0;i<adm.length;i++)
	{
		if(adm[i].toLowerCase()==rusnick||adm[i]==engnick)is_adm=true;
	}
	return is_adm;
}

function addNick(nick)
{
	d=document.getElementById("chatmsg");
	if(d.value==' Напишите ваше сообщение и нажмите Enter')
	{
		d.value=nick+': ';
	}
	else
	{
		d.value+=nick+': ';
	}
}

var ElfChatShoutBox = function () {
    var chat = null;
    var input = null;
    var aut=null;
    var form = null;
    var server = "";

    var lid = 0;
    var idlist=[];
    var count_lastid = 10;
    function addidlist(id)
    {
        idlist.push(id);
        if(idlist.length > count_lastid)idlist.shift();
    }

    function isidlist(id)
    {
        var ch = false;
        for(var i in idlist)
            if(idlist[i] == id)
                ch=true;
        return ch;
    }

    function Init(_chat, _form, _server) {
        chat = $(_chat);
        form = $(_form)
        input = document.getElementById('chatmsg');
        aut = document.getElementById('chatauthor');
        server = _server;

        form.submit(function () {
            ElfChatShoutBox.Send();
            return false;
        });

        ElfChatShoutBox.Load();
        setInterval(ElfChatShoutBox.Load, 2000);
    }

    function Send()
    {
    	if(input.value.trim()==''||input.value.trim()=='Напишите ваше сообщение и нажмите Enter')
    	{
    		alert('Введите ваше сообщение!');
    		return false;
    	}
    	else
    	{
    		if(aut.value.trim()=='Ваше имя'||aut.value.trim()=='')
    		{
    			alert('Введите ваш ник!');
    		}
    		else if (checkAdmin(aut.value.trim()))
    		{
    			alert('Данный ник запрещено использовать!');
    		}
    		else
    		{
        	$.post(server, {
            	act: "add",
            	text: input.value,
            	nick: aut.value
        	}, function (res) {
            	if(res == "mat")
            	{
                	alert("Сообщение не отправлено, так как в нем был обнаружен мат.");
            	}
            	else if(res == "ban")
            	{
                	alert("Сообщение не отправлено. Нужно подождать.");
            	}
            	ElfChatShoutBox.Load();
        	});
        	input.value='';
        	}
        }
    }
    function Load() {
        $.getJSON(server, {
            act: "load",
            last: lid,
            rand: (new Date()).getTime()
        },
        function (res) {
            for(var i in res.msg)
                if(!isidlist(res.msg[i]['id']))
                {
                	txt=res.msg[i]['text'];
                	for(j=0;j<sml.length;j++)txt=txt.replace(smltxt[j],'<img src="/elfchatshoutbox/chatsmiles/'+sml[j]+'" />');
                    chat.append("<span><u style='cursor:pointer;' onclick='addNick(\""+res.msg[i]['nick']+"\");'>"+res.msg[i]['nick']+"</u> &raquo; " + txt + "</span>");
                    chat.scrollTop(chat.get(0).scrollHeight);
                    lid = res.msg[i]['id'];
                    addidlist(lid);
                }
        });
    }

    return {
        Init: Init,
        Load: Load,
        Send: Send
    };
}();


