/**
 * This file contains object that glues standard login routines with login window widget
 * SVN: $Id: stdlogin.js 6163 2008-08-14 14:36:31Z mjezierski $
 */

JMF.Login = JMF.Login || {};


/**
 * Triggers login window
 * @param {Function} loginHandler - handler called after succeful login
 * @param {Function} cancelHandler - handler called after cancel is pressed
 */
JMF.Login.stdLogin = function(loginHandler,cancelHandler) {
   var slg = JMF.Login.stdLogin;
   if(!slg.ready) {
      slg.ctrl = new JMF.Controller();
      slg.win = new JMF.Widgets.Login();
      
      slg.loginHandler = loginHandler;
      slg.cancelHandler = cancelHandler;
      
      JMF.Login.SLogin.attachController(slg.ctrl);
      slg.win.attachController(slg.ctrl);
      
      slg.ctrl.addHandler('login_statechange',slg.onStateChange);
      slg.ctrl.addHandler('loginWin_logged'  ,slg.onStateChange);
      slg.ctrl.addHandler('loginWin_cancelled'  ,slg.onStateChange);
      slg.ctrl.addHandler('loginWin_request' ,slg.onRequest);
      
      slg.ready = true;
   }
   slg.win.show();   
};

/**
 * Statechange event dispatcher
 * @param {Object} event - controller event
 */
JMF.Login.stdLogin.onStateChange = function(event) {
   var slg = JMF.Login.stdLogin;
   if(event.type == 'login_statechange') {
      if(!event.status) {
         slg.win.onLogin();
         return;     
      }
      slg.win.onLoginError();
      return;
   }  
   if(event.type == 'loginWin_logged') {
      if(slg.loginHandler) {
         slg.loginHandler();
      }
      return;
   }
   if(event.type == 'loginWin_cancelled') {
      if(slg.cancelHandler) {
         slg.cancelHandler();
      }
      return;
   }
};

/**
 * Onrequest  event handler
 * @param {Object} event - controller event
 */
JMF.Login.stdLogin.onRequest = function(event) {
   JMF.Login.SLogin.login(event.login,event.pass,event.ssl);
}; 