document.onkeypress = stopRKey;

//smileys
var smileys = 	[ [/\:\)/gi,	"graphics/smiley/smile.png"],
				  [/\:\-\)/gi,	"graphics/smiley/smile.png"],
				  
				  [/\:p/gi, 	"graphics/smiley/sticking-out_tongue.png"],
				  [/\:\-p/gi,	"graphics/smiley/sticking-out_tongue.png"],
				  
				  [/\:\$/gi, 	"graphics/smiley/blush.png"],
				  [/\:\-\$/gi,	"graphics/smiley/blush.png"],
				  
				  [/\:d/gi, 	"graphics/smiley/grin.png"],
				  [/\:\-d/gi, 	"graphics/smiley/grin.png"],
				  
				  [/\:\(/gi, 	"graphics/smiley/frown.png"],
				  [/\:\-\(/gi, 	"graphics/smiley/frown.png"],
				  
				  [/\:x/gi, 	"graphics/smiley/lips_are_sealed.png"],
				  [/\:\-x/gi, 	"graphics/smiley/lips_are_sealed.png"],
				  
				  [/\;\)/gi, 	"graphics/smiley/wink.png"],
				  [/\;\-\)/gi, 	"graphics/smiley/wink.png"],
				  
				  [/\:\'\(/gi, 	"graphics/smiley/crying.png"],
				  
				  [/\:\|/gi, 	"graphics/smiley/foot_in_mouth.png"],
				  
				  [/\:s/gi, 	"graphics/smiley/money_mouth.png"],
				  
				  [/\:@/gi, 	"graphics/smiley/angry_face.png"],
				  
				  [/\(k\)/gi, 	"graphics/smiley/kiss.png"],
				  
				  [/\(l\)/gi, 	"graphics/smiley/heart.png"],
				  
				  [/\(f\)/gi, 	"graphics/smiley/rose.png"],
				  
				  [/\(t\)/gi, 	"graphics/smiley/telephone.png"],
				  
				  [/\(y\)/gi, 	"graphics/smiley/yes.png"],
				  
				  [/\(n\)/gi, 	"graphics/smiley/no.png"],
				  
				  [/\(w\)/gi, 	"graphics/smiley/wilted_rose.png"],
				  
				  [/\(h\)/gi, 	"graphics/smiley/wearing_sunglasses.png"],
				  
				  [/\({\)/gi, 	"graphics/smiley/left_hug.png"],
				  
				  [/\(}\)/gi, 	"graphics/smiley/right_hug.png"],
				  
				  [/\(u\)/gi, 	"graphics/smiley/broken_heart.png"],
				  
				  [/\:o/gi, 	"graphics/smiley/gasp.png"],
				  [/\:\-o/gi, 	"graphics/smiley/gasp.png"],
				  
				  [/\(a\)/gi, 	"graphics/smiley/halo.png"],
				  
				  [/\(8\)/gi, 	"graphics/smiley/note.png"]
				  
				  
				  
				];

function parseSmiley(text)
{
	var parsedText = text;
	for(var i = 0; i < smileys.length; i++)
	{
		parsedText = parsedText.replace( smileys[i][0], "<img src=\""+smileys[i][1]+"\">");
	}
	
	return parsedText;
}

function stopRKey(evt)
{
	var evt = (evt) ? evt : ((event) ? event : null);
	var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
	
	
	if ( (evt.keyCode == 13) && (node.name=="message") )
	{
		post_message();
		return false;
	}
	
	else if ( (evt.keyCode == 13) && (node.name=="password") )
	{
		login();
		return false;
	}	
	
	else if ( (evt.keyCode == 13) && (node.type=="text") )
	{
		return false;
	}
	
} 


function init_chat(msg_interval,rooms_interval,users_interval)
{
    setInterval("get_messages()",msg_interval);
    setInterval("get_users()",users_interval);
    setInterval("get_rooms()",rooms_interval);
    setInterval("scroll_messages()",100);
    
    get_messages();
    get_users();
    get_rooms();
    scroll_messages();
    refresh_input_window();
}

function get_messages()
{
	var d = new Date();
	var time = d.getTime();
    new Ajax.Request('ajax/get_messages.php?time'+time, {
        
         	method: 'get',
    		onComplete: function(transport) {
    			var myText =  parseSmiley(transport.responseText);   
        		//var myText = transport.responseText;
        		$('msgs').insert(myText); 
    		}
        
    });
}

function get_users()
{   
	var d = new Date();
	var time = d.getTime();
	
    new Ajax.Request('ajax/get_users.php?time='+time, {
    method: 'post',
    onComplete: function(transport) {      
        $('users').update(transport.responseText);
    }
    });
}

function get_rooms()
{   
    new Ajax.Request('ajax/get_rooms.php', {
    method: 'get',
    onComplete: function(transport) {      
        $('rooms').update(transport.responseText);
    }
    });
}

function close_room(room)
{   
    new Ajax.Request('ajax/get_rooms.php?close_room&room='+room, {
    method: 'get',
    onComplete: function(transport) {      
        $('rooms').update(transport.responseText);
    }
    });
    $('msgs').update('');
    get_users();
    
	$('message').select();
	$('message').focus();
}

function refresh_input_window()
{
    new Ajax.Request('ajax/user_input.php', {
    method: 'get',
    onComplete: function(transport) {      
        $('user_input').update(transport.responseText);
    }
    });
    $('message').select();
	$('message').focus();
}

//requires a form "post_form" with a "message" and "color" field
function post_message()
{
    $('post_form').request({
        onComplete: function(transport) {      
        $('user_input').update(transport.responseText);
        get_messages();
        $('message').select();
        $('message').focus();
        }
    })
}

var last_scroll_pos=0;
function scroll_messages()
{
    var objDiv = $("msgs");
    
    if(objDiv.scrollTop==last_scroll_pos || (objDiv.scrollHeight-objDiv.scrollTop)<(objDiv.style.height+350))
    {
        objDiv.scrollTop = objDiv.scrollHeight;
        last_scroll_pos=objDiv.scrollTop;
    }
}

function login()//requires a form "login_form" with a "username" and "password" field
{
    $('login_form').request({
        onComplete: function(transport) {
			$('user_input').update(transport.responseText);

        }
    })

}

function logout()
{
    new Ajax.Request('ajax/user_input.php?do_logout=1', {
    method: 'get',
    onComplete: function(transport) {      
        $('user_input').update(transport.responseText);

    }
    });

	window.parent.location.reload();

}

function leave()
{
    new Ajax.Request('ajax/user_input.php?do_leave=1', {
    method: 'get',
    onComplete: function(transport) {
        $('user_input').update(transport.responseText);
        get_users();
    }
    });
}

function change_room(room)
{
    new Ajax.Request('ajax/get_rooms.php?change_room=1&room='+room, {
    method: 'get',
    onComplete: function(transport) {      
        $('rooms').update(transport.responseText);
        $('msgs').update('');
        get_users();
    }
    });
    $('message').select();
	$('message').focus();
}

function create_room(to_user)
{
    new Ajax.Request('ajax/get_rooms.php?create_room=1&to_user='+to_user, {
    method: 'get',
    onComplete: function(transport) {      
        $('rooms').update(transport.responseText);
        $('msgs').update('');
        get_users();
    }
    }); 
    $('message').select();
	$('message').focus();
}

function join_chat()
{   
    new Ajax.Request('ajax/user_input.php?do_join=1', {
    method: 'get',
    onComplete: function(transport) {      
        $('user_input').update(transport.responseText);
        get_users();
       	$('message').select();
		$('message').focus()
    }
    });
}

function ban_user(num)
{
	if(time = prompt("Geef tijdsduur op","30m"))
	{
		$('message').value = '<ban '+num+','+time+'>';
		post_message();
    }
}

function set_color(color)
{
	$('color').value = color;
	$('message').style.color = '#'+color;

}