var awayHasFocus=false;

window.onload = function() {          
   Windows.addObserver({ onResize: handleResize });
   Windows.addObserver({ onClose: handleClose });
   Windows.addObserver({ onMaximize: handleResize });

   if(isDefined(window.onfocus) && isDefined(window.onblur)) {
      window.onfocus = function() { blinkerOn(false); };
      window.onblur = function() { blinkerOn(true); };
   } else {
      document.onfocus = function() { blinkerOn(false); };
      document.onblur = function() { blinkerOn(true); };
   }
   
   login_dialog();
};

function handleResize(eventName, win) {
   if(win.getId() == 'bl') {
      sizeBuddyList();
   } else if(win.getId().indexOf('_im') != -1) {
      var mastername = win.getId().replace(/_im/, '');
      $(mastername + '_rcvd').style.height = (win.getSize()['height'] - 73) + 'px';
      $(mastername + '_rcvd').style.width = (win.getSize()['width'] - 10) + 'px';
      $(mastername + '_toolbar').style.top = (win.getSize()['height'] - 43) + 'px';
      $(mastername + '_toolbar').style.width = (win.getSize()['width'] - 10) + 'px';  
      $(mastername + '_sendBox').style.top = (win.getSize()['height'] - 15) + 'px';
      $(mastername + '_sendBox').style.width = (win.getSize()['width'] - 16) + 'px';
   }
}

function handleClose(eventName, win) {
   if(win.getId().indexOf('_im') == -1) return;
   
   var rcvdBox = $(win.getId().replace(/_im/, '') + '_rcvd');
   if(imHistory == true) {
      rcvdBox.innerHTML = '<span class="imHistory">' +
                          rcvdBox.innerHTML.replace(/\(Auto-Reply:\)/g, 'Auto-Reply:').replace(/<(?![Bb][Rr] ?\/?)([^>]+)>/ig, '') +
                          "</span>\n";
   } else {
      rcvdBox.innerHTML = '';
   }
}

function sizeBuddyList() {
   $('blContainer').style.height = (buddyListWin.getSize()['height'] - 95) + 'px';
   $('blContainer').style.width = (buddyListWin.getSize()['width'] - 8) + 'px';
   $('blBottomToolbar').style.width = (buddyListWin.getSize()['width'] - 8) + 'px';
   $('blBottomToolbar').style.bottom = '3px';
}

function toggleStatusList() {
   if($('statusList').style.display == 'none') {
      $('statusList').style.left = parseInt(buddyListWin.getLocation()['left']) + $('statusSettings').offsetLeft + $('blTopToolbar').offsetLeft + 'px';
      $('statusList').style.top = parseInt(buddyListWin.getLocation()['top']) + $('statusSettings').offsetTop + $('blTopToolbar').offsetTop + $('statusSettings').offsetHeight + 'px';
      $('statusList').style.zIndex = 1200;
      $('statusList').style.display = 'block';
   } else {
      $('statusList').style.display = 'none';
   }
}

function login_dialog() {
   Dialog.confirm('<p><span class="dialog_modal_title">Login</span></p><div style="clear:both"></div><p><span id="login_error_msg" class="dialog_error" style="display:none">&nbsp;</span></p><div style="clear:both"></div><p><span class="dialog_label">username:</span> <span class="dialog_input"><input type="text" id="username" onkeypress="loginHandler(event);" /></span></p><div style="clear:both"></div><p><span class="dialog_label">password:</span> <span class="dialog_input"><input type="password" id="password" onkeypress="loginHandler(event);" /></span></p><div style="clear:both"></div><p><span class="dialog_links"><a href="#" onclick="register_dialog();return false;">register</a> | <a href="#" onclick="forgot_pass_dialog();return false;">forgot password</a></span></p><div style="clear:both"></div>',
                  {windowParameters: {className:alertCSS, width:alertWidth}, 
                                      okLabel: "login", cancelLabel: "cancel",
                                      ok:function(win){
                                            login();
                                            return false;
                                         },
                                      cancel:function(win){
                                                login_dialog();
                                             }
                                     });
   setTimeout("$('username').focus();", 125);
}

function register_dialog() {
   Dialog.confirm('<p><span class="dialog_modal_title">Register</span></p><div style="clear:both"></div><p><span id="register_error_msg" class="dialog_error" style="display:none">&nbsp;</span></p><div style="clear:both"></div><p><span class="dialog_label">username:</span> <span class="dialog_input"><input type="text" id="newusername" /></span></p><div style="clear:both"></div><p><span class="dialog_label">password:</span> <span class="dialog_input"><input type="password" id="newpassword" /></span></p><div style="clear:both"></div><p><span class="dialog_label">confirm:</span> <span class="dialog_input"><input type="password" id="newpassword2" /></span></p><div style="clear:both"></div><p><span class="dialog_label">email:</span> <span class="dialog_input"><input type="text" id="newemail" /></span></p><div style="clear:both"></div>',
                  {windowParameters: {className:alertCSS, width:alertWidth}, 
                                      okLabel: "register", cancelLabel: "cancel",
                                      ok:function(win){
                                            register();
                                            return false;
                                         },
                                      cancel:function(win){
                                                login_dialog();
                                             }
                                     });
   setTimeout("$('newUsername').focus();", 125);
}

function new_im_dialog() {
   Dialog.confirm('<p><span class="dialog_modal_title">New Instant Message...</span></p><div style="clear:both"></div><p><span id="newim_error_msg" class="dialog_error" style="display:none">&nbsp;</span></p><div style="clear:both"></div><p><span class="dialog_label">buddy username: </span> <span class="dialog_input"><input type="text" id="sendto" /></span></p><div style="clear:both"></div>',
                  {windowParameters: {className:alertCSS, width:alertWidth}, 
                                      okLabel: "ok", cancelLabel: "cancel",
                                      ok:function(win){
                                            newIMWindow();
                                            return false;
                                         }
                                     });
   setTimeout("$('sendto').focus();", 125);
}

function new_buddy_dialog() {
   Dialog.confirm('<p><span class="dialog_modal_title">Add New Buddy</span></p><div style="clear:both"></div><p><span id="newbuddy_error_msg" class="dialog_error" style="display:none">&nbsp;</span></p><div style="clear:both"></div><p><span class="dialog_label">buddy username: </span> <span class="dialog_input"><input type="text" id="newBuddyUsername" /></span></p><div style="clear:both"></div><p><span class="dialog_label">group name: </span> <span class="dialog_input"><input type="text" id="newBuddyGroup" /></span></p><div style="clear:both"></div>',
                  {windowParameters: {className:alertCSS, width:alertWidth}, 
                                      okLabel: "add", cancelLabel: "cancel",
                                      ok:function(win){
                                           addNewBuddyToList($('newBuddyUsername').value, $('newBuddyGroup').value);
                                           return false;
                                         }
                                     });
   setTimeout("$('newBuddyUsername').focus();", 125);
}

function remove_buddy_dialog() {
   var selectBoxDiv = $('usernameOptions');
   selectBoxDiv.innerHTML = "<select id=\"oldBuddyUsername\">\n";
   selectBoxDiv.innerHTML += "</select>\n";
   var selectBox = $('oldBuddyUsername');
   for (var group in buddyList) {
      if(group != 'toJSONString') addOption(selectBox, group, group + '_group');
      for(var i=0; i<buddyList[group].length; i++) {
         addOption(selectBox, ' => ' + buddyList[group][i], buddyList[group][i] + '(' + group + ')[' + i + ']');
      }
   }
   Dialog.confirm('<p><span class="dialog_modal_title">Remove Buddy</span></p><div style="clear:both"></div><p><span id="deletebuddy_error_msg" class="dialog_error" style="display:none">&nbsp;</span></p><div style="clear:both"></div><p><span class="dialog_label">buddy username: </span> <span class="dialog_input"><div id="usernameOptions"></div></span></p><div style="clear:both"></div>',
                  {windowParameters: {className:alertCSS, width:alertWidth}, 
                                      okLabel: "remove", cancelLabel: "cancel",
                                      ok:function(win){
                                           deleteBuddyFromList($('oldBuddyUsername').value);
                                           $('usernameOptions').parentNode.removeChild($('usernameOptions'));
                                           return false;
                                         }
                                     });
   setTimeout("$('oldBuddyUsername').focus();", 125);
}

function forgot_pass_dialog() {
   Dialog.confirm('<p><span class="dialog_modal_title">Password Reset</span></p><div style="clear:both"></div><p><span id="forgotpass_error_msg" class="dialog_error" style="display:none">&nbsp;</span></p><div style="clear:both"></div><p><span class="dialog_label">email address: </span> <span class="dialog_input"><input type="text" id="resetto" /></span></p><div style="clear:both"></div>',
                  {windowParameters: {className:alertCSS, width:alertWidth}, 
                                      okLabel: "reset password", cancelLabel: "cancel",
                                      ok:function(win){
                                           resetPass();
                                           return false;
                                         },
                                      cancel:function(win){
                                                login_dialog();
                                             }
                                     });
   setTimeout("$('resetto').focus();", 125);
}

function change_pass_dialog() {
   Dialog.confirm('<p><span class="dialog_modal_title">Change Password</span></p><div style="clear:both"></div><p><span id="changepass_error_msg" class="dialog_error" style="display:none">&nbsp;</span></p><div style="clear:both"></div><p><span class="dialog_label">current password: </span> <span class="dialog_input"><input type="password" id="currentpw" /></span></p><div style="clear:both"></div><p><span class="dialog_label">new password: </span> <span class="dialog_input"><input type="password" id="newpw" /></span></p><div style="clear:both"></div><p><span class="dialog_label">confirm new: </span> <span class="dialog_input"><input type="password" id="confirmpw" /></span></p><div style="clear:both"></div>',
                  {windowParameters: {className:alertCSS, width:alertWidth}, 
                                      okLabel: "change", cancelLabel: "cancel",
                                      ok:function(win){
                                           changePass();
                                           return false;
                                         }
                                     });
   setTimeout("$('currentpw').focus();", 125);
}