Advertisement
Guest User

MeLight client

a guest
Jul 14th, 2012
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var socket;
  2. var my_id;
  3. var nickname;
  4. $(function() {
  5.     nickname = $.browser.mozilla ? 'FireFox' : ($.browser.webkit ? 'Chrome' : 'Opera');
  6.     var host = window.location.origin;
  7.     console.log(host);
  8.     socket = io.connect(host);
  9.    
  10.     socket.emit('init_connect', {nickname : nickname});
  11.    
  12.     socket.on('my_id', function(data) {
  13.         my_id = data.my_id;
  14.     });
  15.    
  16.     socket.on('clients', function(data) {
  17.         var str = '';
  18.         for(var i in data.clients) {
  19.             str += '<div id="'+data.clients[i].id+'" onclick="clickOnUser(this)" class="user">'+data.clients[i].nickname+'</div>';
  20.         }
  21.         str += userMenu();
  22.         $('#users_cont').html(str);
  23.     });
  24.    
  25.     socket.on('client left', function(data) {
  26.         $('#users_cont #'+data.id).remove();
  27.     });
  28.     socket.on('client joined', function(data) {
  29.         $('#users_cont').append('<div id="'+data.id+'" onclick="clickOnUser(this)" class="user">'+data.nickname+'</div>');
  30.     });
  31.    
  32.     socket.on('msg', function (data) {
  33.         $('#chat_window').append((data.id == my_id ? '<b>Me</b>' : data.nickname)+ ': '+data.str+'<br/>');
  34.         $("#chat_window").animate({ scrollTop: $("#chat_window").height() }, 100);
  35.     });
  36.    
  37.     socket.on('private msg', function (data) {
  38.         $('#chat_window').append('<span class="private_from"><b>'+data.sender_nick+'</b>: '+data.msg+'</span><br/>');
  39.         $("#chat_window").animate({ scrollTop: $("#chat_window").height() }, 100);
  40.     });
  41.    
  42.     //Server sends request from another client to join a double room
  43.     socket.on('ask double room', function(data) {
  44.         var reply = confirm('Player '+data.sender_nick +' invites you to join a double room');
  45.         socket.emit('reply double room', {reply: reply});
  46.     });
  47. });
  48.  
  49. function userMenu() {
  50.     var str =   '<div id="user_menu">' +
  51.                     '<div id="close" onclick="$(\'#user_menu\').slideUp(\'fast\')">x</div>'+
  52.                     '<div class="button" onclick="privateMsg($(\'#user_menu\').attr(\'data-id\'))">Private Msg</div>'+
  53.                     '<div class="button" onclick="askDoubleRoom($(\'#user_menu\').attr(\'data-id\'))">Double Room</div>'+
  54.                 '</div>';
  55.     return str;
  56. }
  57.  
  58. function sendMessage(str) {
  59.     var msg = $('#msg_inp').val();
  60.     $('#msg_inp').val('');
  61.     socket.emit('msg', {nickname: nickname, message: msg});
  62.     return false;
  63. }
  64.  
  65. function privateMsg(uid) {
  66.     var tnick = $('#'+uid).text();
  67.     var msg = prompt('Enter private message text to '+ tnick, 'Hi '+tnick);
  68.     socket.emit('private msg', {msg: msg, id:uid, sender_nick:nickname});
  69.     $('#chat_window').append('<span class="private_to"><b>Me to '+tnick+'</b>: '+msg+'</span><br/>');
  70.     $("#chat_window").animate({ scrollTop: $("#chat_window").height() }, 100);
  71. }
  72.  
  73. function askDoubleRoom(uid) {
  74.     var tnick = $('#'+uid).text();
  75.     socket.emit('ask double room', {id:uid, sender_nick:nickname});
  76. }
  77.  
  78. function clickOnUser(user) {
  79.     var thisid = $(user).attr('id');
  80.     if(thisid == my_id) {
  81.         return;
  82.     }
  83.     else if($('#user_menu').attr('data-id') == thisid && $('#user_menu').is(':visible')) {
  84.         $('#user_menu').slideUp('fast');
  85.         return;
  86.     }
  87.  
  88.     $('#user_menu').slideUp('fast', function() {
  89.         $('#'+thisid).after($('#user_menu'));
  90.         $('#user_menu').attr('data-id', thisid);
  91.         $('#user_menu').slideDown('fast');
  92.     });
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement