var Chat = new Chat();

function Chat(){	
	this.openMenu = function() {
		$("#chat_menu").html('');
		$("#chat_menu").css({'height':'auto'});
		$("#chat_menu").toggleClass("hidden");
		
		jQuery.getJSON("/ajax/onlines/", function(json) {
			var html = '';
			for(i=0;i<json.length;i++) {
				html += '<div onclick="Chat.open('+json[i].id+',\''+json[i].login+'\');">'+json[i].login+'</div>';
			}
			$("#chat_menu").html(html);
		});
	};
	
	this.open = function(id,login) {
		$("#chat_menu").html('');
		$("#chat_menu").toggleClass("hidden");
		
		Chat.newWindow(id);
		Chat.newTask(id,login,0);
	};
	
	this.newWindow = function(id) {
		var window = document.getElementById("chat_window"+id);
		if(window != null) {
			$("#chat_window"+id).remove();
			$("#chat_task"+id).remove();
			
			jQuery.get("/ajax/chat/closeWindow/"+id+"/");
		} else {
			var html = $("#chat_windows").html();
			html += '<div class="chat_window" id="chat_window'+id+'">';
			html += '<textarea id="chat'+id+'">'+content+'</textarea>';
			html += '<div><input type="text" id="text'+id+'" class="chat_text" onkeyup="Chat.pressKey('+id+',event);"/><input type="button" value="Send" onclick="Chat.send('+id+');" class="chat_btn" /></div>';
			html += '</div>';
			$("#chat_windows").html(html);
			
			Chat.get(id);
			
			$("#chat_task"+id).css({'background-color' : '#e5e5e5'});
			
			jQuery.get("/ajax/chat/openWindow/"+id+"/");
		}
	};
	
	this.newTask = function(id,login,isRed) {
		html = $("#chats").html();
		if(isRed == 1)
			html += '<div class="chat_task" id="chat_task'+id+'" style="background-color:#b5b5b5;" onclick="Chat.newWindow('+id+');">';
		else
			html += '<div class="chat_task" id="chat_task'+id+'" onclick="Chat.newWindow('+id+');">';
		
		html += '<span onclick="Chat.newWindow('+id+');"><img src="http://statics.tenniscontact.com/images/close.gif" alt="close"/></a></span>';
		html += '<span style="position:relative;top:-3px;left:5px;cursor:pointer;">'+login+'</span>';
		html += '</div>';
		$("#chats").html(html);
	};
	
	this.get = function(id) {
		jQuery.get("/ajax/chat/get/"+id+"/", function(data) {
			if(document.getElementById("chat"+id)) {
				var chat_text = document.getElementById("chat"+id);
				chat_text.value=data;
				chat_text.scrollTop=chat_text.scrollHeight;
			}
		});
	};
	
	this.actives = function(isFirst) {
		if(isFirst == 1) {
			jQuery.get("/ajax/chat/windows/", function(json) {
				var tmp = json.split(";");
				var windows = eval(tmp[0]);
				var onlines = eval(tmp[1]);

				$("#online").html("("+onlines.length+")");
				
				for(i=0;i<windows.length;i++) {
					var id = windows[i].id;
					var login = windows[i].login;
					Chat.open(id,login);
				}
			});
		}
		
		jQuery.get("/ajax/chat/actives/", function(json) {
			var tmp = json.split(";");
			
			var actives = eval(tmp[0]);
			var onlines = eval(tmp[1]);
			
			$("#online").html("("+onlines.length+")");
			
			for(i=0;i<actives.length;i++){
				var id = actives[i].id;
				var login = actives[i].login;
				
				if(!document.getElementById("chat_task"+id))
					Chat.newTask(id,login,1);
				else if(!document.getElementById("chat_window"+id))
					Chat.newWindow(id);
				else
					Chat.get(id);
			}
			
			Chat.actives(0);
		});
	};
	
	this.send = function(id) {
		var msg = $("#text"+id).val();
		$("#text"+id).val('');
		
		jQuery.post("/ajax/chat/send/"+id+"/", { message: msg }, function(data) {
			var chat_text = document.getElementById("chat"+id);
			chat_text.value=data;
			chat_text.scrollTop=chat_text.scrollHeight;
		});
	};
	
	this.pressKey = function(id,e) {
		var keynum;
		if(window.event) // IE
			keynum = e.keyCode;
		else if(e.which) // Netscape/Firefox/Opera
			keynum = e.which;
		
		if(keynum==13)
			Chat.send(id);
	};
}