// $Id: im.js,v 1.1.2.8 2009/06/03 04:52:40 pahariwalla Exp $

var last_msg_in = 0;
var timer_friendlist = 0;
var timer_newmsgs = 0;
var url_prefix = '';

if (Drupal.jsEnabled) {
  var poking = 0;
  $(document).ready(function() {
    if (Drupal.settings.basePath == '/') {
      url_prefix = '/';
    }
    else {
      url_prefix = Drupal.settings.basePath; // .substring(1);
    }
    var d = new Date();
    last_msg_in = (d.getTime());
    $('#im-refresh-friendlist').click(function() {
      getFriendList();
      return false;
    });
   $('#edit-im-console-commandline').keydown(function(e) {
      if (e.which != 13) {
        return true;
      }
      var sendText = $('#edit-im-console-commandline').val();
      var newText = $('#im-console-msgs').html()
          
      var newText = $('#im-console-msgs').html()
       + '<span class = "im-console-msg-name">Me: </span>'
       + '<span class="im-console-my-msgtext">'
       + $('#edit-im-console-commandline').val()
       + '</span>'
       + '<br/>';           
          
      $('#im-console-msgs').html(newText);
      $('#im-console-msgs').animate({scrollTop: 99999 }, 1);        
      $('#edit-im-console-commandline').val('')
      
      var afterSend = function(data) {
        $('div.status').html(data.status);
      }
      var sendurl= url_prefix + 'im/send_msg/'
        + $('#edit-im-my-uid').val() + '/'
        + $('#edit-im-other-uid').val() + '/?msg='
        + encodeURI(sendText);
      $.ajax({
        type: 'GET',
        url: sendurl,
        dataType: 'json',
        success: afterSend,
        data: 'js=1'
      });
      return false;
    });
    getFriendList();
    getNewMsgs ('all');
    timer_newmsgs = setTimeout ('getNewMsgs("all")', Drupal.settings.im_module.refresh_rate);    
  });
}


function popstatus(thetext) {
  var newText = $('#im-console-msgs').html() + '<BR>'+ thetext;
  $('#im-console-msgs').html(newText);
  $('#im-console-msgs').animate({scrollTop: 99999 }, 1);        
  $('#edit-im-console-commandline').val('')  
}

function getFriendList() {
  if ($('#edit-im-my-uid').val() > 0) {
    var friendList = function(data) {
      $('#im-friendlist').html(data.friendlist);
    }
    var sendurl= url_prefix + 'im/friendlist';
    $.ajax({
      type: 'POST',
      url: sendurl ,
      dataType: 'json',
      success: friendList,
      data: 'js=1'
    });
  }
  clearTimeout (timer_friendlist);
  timer_friendlist = setTimeout ('getFriendList()', Drupal.settings.im_module.friendlist_refresh_rate);
}

function click_on_friend(uid, uname) {
  $('#edit-im-other-uid').val(uid);
  $('#edit-im-other-name').val(uname);
  $('#im-console-caption-name').text(uname);
  getNewMsgs ('all');
  return false;
  
}

function getNewMsgs(getall) {
  if (!$('#edit-im-other-uid').val()) {
    return;
  }
  if (getall=='all') {
    get_url = url_prefix + 'im/get_all_messages/' + $('#edit-im-other-uid').val();
     $('#im-console-msgs').html('');
  }
  else {
    get_url = url_prefix +'im/get_new_messages/' + $('#edit-im-other-uid').val();
  }
  $('#edit-im-status').val(status);
  
  var pokeNewMsgs = function(data) {
    //return if called from timeout while already in routine
    if (poking == 1) {
      return;
    }
    var d = new Date();
    
    poking = 1;
    var waiters = data['waiters'];
    var this_msg_in = 0;
    if (data.status == 'got data')  {
      //alert ('got got data ');
      var str = "";
      var msgs = data['msgs'];
      var newText = $('#im-console-msgs').html() + msgs;
      $('#im-console-msgs').html();
      $('#im-console-msgs').html(newText);
      $('#im-console-msgs').animate({scrollTop: 99999 }, 1);
      this_msg_in = (d.getTime());
      getFriendList();
    }
    poking = 0;
    if (this_msg_in > 0) {
      last_msg_in = this_msg_in;
      clearTimeout(timer_newmsgs);
      timer_newmsgs = setTimeout ('getNewMsgs("new")', Drupal.settings.im_module.refresh_rate);    
    }
    else {
      now = d.getTime();
      if ((now - last_msg_in) < Drupal.settings.im_module.im_refresh_rate_inactive_threshold) {
        clearTimeout(timer_newmsgs);
        timer_newmsgs = setTimeout ('getNewMsgs("new")', Drupal.settings.im_module.refresh_rate);    
      }
      else {
        clearTimeout(timer_newmsgs);
        timer_newmsgs = setTimeout ('getNewMsgs("new")',  Drupal.settings.im_module.im_refresh_rate_inactive);
      }
    }
  }
  $.ajax({
    type: 'POST',
    url: get_url,
    dataType: 'json',
    success: pokeNewMsgs,
    data: 'js=1'
  });
}


//LOOPING throujson array
      //for (row in msgs) {
      //  onemsg = msgs[row] ;
      //  onemsgtext = onemsg['msg'];
      //  str += '<b>' + onemsg['sent_time'] + ': </b>' +  onemsgtext + "\n";
      // }
      //
      //var newText = $('#edit-im-console-display').val() +  str;
      //$('#edit-im-console-display').val(newText);
      //$('#edit-im-console-display').animate({scrollTop: 99999 }, 1);
// set caret at end of text
//if (this.createTextRange) {
//var r = this.createTextRange();
//r.collapse(false);
//r.select();
//}
//$(this).focus(); //set focus
//get caret google fieldtext