var myLoginStatus = {};
var statusObject;
var statusLogin = false;


function isVerifiedUser(){
  var result = myLoginStatus.result!='OK' || myLoginStatus.isVerified;
  if(!result){
    closeWindowModal();
    openWindowModal('verificationWindow');
  }
  return result;
}

function refreshMyLoginStatus(myNewLoginStatus){
  // Update my status ssi new status valid et different de l'ancien
  if(myNewLoginStatus.result && Object.toJSON(myNewLoginStatus)!=Object.toJSON(myLoginStatus)){
  myLoginStatus = myNewLoginStatus;
  updateMyLoginStatus();
  isVerifiedUser();
  }
}

function updateMyLoginStatus(){
  closeWaitingForm();
  OnDragEnd();
  refreshMenu();
  if(myLoginStatus.result=='OK'){
  $('loginWindow.login').value='';
  $('loginWindow.password').value='';
  $('loginWindow.keepMeLogged').checked=false;
  $('myStatusLoginTray').innerHTML =
    '<table cellspacing="0" cellpadding="0" style="font-size:inherit;">'
    + ' <tr>'
    + '   <td>'
    + '     <input type="button" onclick="openUserProfil(myLoginStatus.idUser);" value="My Publing" />'
    + '   </td>'
    + '   <td class="separator">'
    + '   </td>'
    + '   <td class="separator">'
    + '     |'
    + '   </td>'
    + '   <td class="separator">'
    + '   </td>'
    + '   <td>'
    + '     '+myLoginStatus.login+' <input id="statusText" type="text" />'
    + '   </td>'
    + '   <td class="separator">'
    + '   </td>'
    + '   <td class="separator">'
    + '     |'
    + '   </td>'
    + '   <td class="separator">'
    + '   </td>'
    + '   <td>'
    + '     <a href="javascript:logOut();" style="color:#000;">Logout</a>'
    + '   </td>'
    + ' </tr>'
    + '</table>';
  statusObject = new CInputGestion('statusText', {
                  'defaultValue':'Put your mood here.',
                  'initValue': myLoginStatus.status,
                  'onSubmit':postMyStatus
            });
  controller.requestController('getMyFollowings', '', refreshFollowingsList);
  controller.requestController('getMyLocations', '', processLocations);
  $('homeButton').style.display = 'block';
  $('locationBar').style.display = 'block';
  $('privateChat').style.display = 'block';
  actionHidePrivateChat();
  refreshUnreadMessages();
  closeSplashScreen();
  } else {
  $('myStatusLoginTray').innerHTML =
    '<table cellspacing="0" cellpadding="0">'
    + ' <tr>'
    + '   <td>'
    + '     <a href="#" onclick="return openSignUpForm();">Sign up</a>'
    + '   </td>'
    + '   <td class="separator">'
    + '   </td>'
    + '   <td>'
    + '     <input type="button" value="Login" onclick="openLoginForm();" />'
    + '   </td>'
    + ' </tr>'
    + '</table>';
  clearFollowingsList();
  $('homeButton').style.display = 'none';
  $('locationBar').style.display = 'none';
  $('privateChat').style.display = 'none';
  if(!isVisitor) openLoginForm();
  }
  var oldStatusLogin = statusLogin;
  statusLogin = (myLoginStatus.result=='OK');
  if(oldStatusLogin != statusLogin){
  if(myLoginStatus.isVerified){
    myPublingAlreadyOpened = false;
  } else {
    myPublingAlreadyOpened = true;
  }
  }
}

function logOut(){
  openWaitingForm();
  controller.requestController( 'logOut', '', onLogoutReceived);
}

function onLogoutReceived(loginResult){
  if(loginResult.result=='KO'){
  openErrorForm('Error', 'Unknown error.<br />Please try again.');
  }
}

function postMyStatus(status){
  if(status != statusObject.options.defaultValue) controller.requestController('postMyStatus', 'status='+encodeURIComponent(status));
}



















function switchLoginSignUp(tab){
  var oldTab = '';
  if(tab=='login'){
    oldTab = 'signup';
  } else {
    oldTab = 'login';
  }

  $('loginSignUp.'+tab+'TabContent').style.display = 'block';
  $('loginSignUp.'+oldTab+'TabContent').style.display = 'none';

  $('loginSignUp.'+tab+'Tab').addClassName('active');
  $('loginSignUp.'+oldTab+'Tab').removeClassName('active');

  if(tab=='login'){
    controller.requestController('track', 'section=User&name=Log%20In');
    $('loginWindow.login').focus();
  } else {
    controller.requestController('track', 'section=User&name=Sign%20Up%20Form');
    $('signUpWindow.dateFormat').innerHTML = environement.getFullFormat();
    $('signUpWindow.firstName').focus();
  }
}




function submitSignUp(){
  var valid=true;
  var firstName=encodeURIComponent($('signUpWindow.firstName').value)
  var lastName=encodeURIComponent($('signUpWindow.lastName').value);
  var login=encodeURIComponent($('signUpWindow.login').value);
  var password=encodeURIComponent(($('signUpWindow.password').value==$('signUpWindow.passwordVerif').value)?$('signUpWindow.password').value:'');
  var email=encodeURIComponent($('signUpWindow.email').value);
  var sex=($('signUpWindow.sex.male').checked===true?'M':($('signUpWindow.sex.female').checked===true?'F':''));
  var notif=($('signUpWindow.notif.yes').checked===true?'1':($('signUpWindow.notif.no').checked===true?'0':''));
  var notifExternal=($('signUpWindow.notifExternal.yes').checked===true?'1':($('signUpWindow.notifExternal.no').checked===true?'0':''));
  var dob='';
  
  var errorMsg = 'Undefined error';
  
  if($('signUpWindow.password').value!=$('signUpWindow.passwordVerif').value) {
    errorMsg = 'Password incorrect, please retype it.';
    $('signUpWindow.password').value='';
    $('signUpWindow.passwordVerif').value='';
    valid = false;
  }
  
  if(!isAValidEmail($('signUpWindow.email').value)){
    errorMsg = 'Please check, the email seems to be not valid.';
    valid = false;
  }

  if(!signUpEmailOK){
    errorMsg = 'The email you type is already used, please click on "Forgot my password" to retreive your password.';
    valid = false;
  }

  if($('signUpWindow.dateOfBirth').value!=''){
    var theJSONDate = stringToJSONDate($('signUpWindow.dateOfBirth').value);
    if(isAValidJSONDate(theJSONDate)){
      dob=encodeURIComponent(JSONDateToSQL(theJSONDate));
    } else {
      errorMsg = 'Please check, the date seems to be not valid.';
      valid = false;
    }
  }
  
  if(!signUpLoginOK){
    errorMsg = 'The login you choose is already used.';
    valid = false;
  }

  if(firstName=='' || lastName=='' || login=='' || password=='' || email==''){
    errorMsg = 'All the field in bold are mandatory.';
    valid = false;
  }
  
  if(!valid) openErrorForm('Sign Up error', errorMsg);
  else controller.requestController('signUp', 'firstName='      +firstName
                  +'&lastName='      +lastName
                  +'&login='      +login
                  +'&password='      +password
                  +'&email='      +email
                  +'&dob='        +dob
                  +'&sex='        +sex
                  +'&notif='      +notif
                  +'&notifExternal='    +notifExternal, onSignUpReceived);
  return false;
}

function onSignUpReceived(signUp){
  if(signUp.signUp=='OK'){
    controller.requestController('track', 'section=User&name=Sign%20Up%20Form%20Valid');
    closeWindowModal();
  } else {
    openErrorForm('Sign Up error', signUp.error_msg);
  }
}




var timeoutHandleCheckEmail = null;
var signUpEmailOK = false;
function clearTimeoutCheckEmail(){
  if(timeoutHandleCheckEmail != null){
    clearTimeout(timeoutHandleCheckEmail);
    timeoutHandleCheckEmail = null;
  }
}
function emailKeyUp(){
  $('signUpWindow.emailValidation').src = './Img/validation/load-valid.gif';
  clearTimeoutCheckEmail();
  timeoutHandleCheckEmail = setTimeout('checkEmail();', 300);
}
function checkEmail(){
  controller.requestController('isEmailAvailable',
             'email='+encodeURIComponent($('signUpWindow.email').value),
             onEmailChecked);
}
function onEmailChecked(result){
  if(result.email == $('signUpWindow.email').value){
    signUpEmailOK = (result.result == 'OK');
    if(signUpEmailOK && isAValidEmail($('signUpWindow.email').value)){
      $('signUpWindow.emailValidation').src = './Img/validation/led-box-green.gif';
    } else {
      $('signUpWindow.emailValidation').src = './Img/validation/led-box-red.gif';
    }
  }
}




var timeoutHandleCheckLogin = null;
var signUpLoginOK = false;
function clearTimeoutCheckLogin(){
  if(timeoutHandleCheckLogin != null){
    clearTimeout(timeoutHandleCheckLogin);
    timeoutHandleCheckLogin = null;
  }
}
function loginKeyUp(){
  $('signUpWindow.loginValidation').src = './Img/validation/load-valid.gif';
  clearTimeoutCheckLogin();
  timeoutHandleCheckLogin = setTimeout('checkLogin();', 300);
}
function checkLogin(){
  controller.requestController('isLoginAvailable',
             'login='+encodeURIComponent($('signUpWindow.login').value),
             onLoginChecked);
}
function onLoginChecked(result){
  if(result.login == $('signUpWindow.login').value){
    signUpLoginOK = (result.result == 'OK');
    if(signUpLoginOK){
      $('signUpWindow.loginValidation').src = './Img/validation/led-box-green.gif';
    } else {
      $('signUpWindow.loginValidation').src = './Img/validation/led-box-red.gif';
    }
  }
}



function validLoginForm(){
  openWaitingForm();
  controller.requestController( 'logIn',
                'login='+$('loginWindow.login').value
              + '&password='+$('loginWindow.password').value
              + '&persistent='+(($('loginWindow.keepMeLogged').checked)?'1':'0'),
                onLoginReceived);
  return false;
}

function onLoginReceived(loginResult){
  closeWaitingForm();
  if(loginResult.login=='OK'){
    controller.requestController('track', 'section=User&name=Log%20In%20Valid');
//    closeWindowModal();
  } else {
    openErrorForm('Error', 'Incorrect login or password.<br />Please try again.', {
        "onClose":function(){
          $('loginWindow.password').value = '';
          if($('loginWindow.login').value==''){
            $('loginWindow.login').focus();
          } else {
            $('loginWindow.password').focus();
          }
        }
      });
  }
}

