/*
Written by Joe Abi Raad
http://joeabiraad.com
joe.abiraad@gmail.com

Happy Coding :D
 */

var Login = new function() {  
  this.ajax = null;
  this.form = null;
  this.promptDiv = null;
  this.dotSpan = null;
  this.button = null;
  this.enabled = true;
  this.dots = '';
  this.promptInterval = null;
  
  this.cleanup = function() {
    var self = Login;
    self.form = null;
    self.promptDiv = null;
    self.dotSpan = null;
    self.button = null;
  };
  
  this.init = function() {
  	var self = Login;
    self.ajax = new Ajax();
    self.form = document.getElementById('loginForm');
    self.promptDiv = document.getElementById('promptDiv'); //joe
    self.dotSpan = document.getElementById('msg2'); //joe
    self.button = document.getElementById('submitButton');
    self.setPrompt('base', '');
   //self.form.email.focus();
    self.toggleEnabled(false);
    self.form.onsubmit = function() { return false; }
    self.clearCookie('ses');
  };
  
  this.clearCookie = function(name) {
    var expireDate = new Date(0);
    document.cookie = name + '=; expires=' + expireDate.toGMTString() + '; path=/';
  };
  
  this.setPrompt = function(stat, msg) {
    var self = Login;
    var promptDiv = self.promptDiv;
    var msgSpan = document.getElementById('msg1');
    var statusClass = '';
    promptDiv.className = stat; // 'base', 'proc' or 'err'
    if (msgSpan.firstChild) {
      msgSpan.removeChild(msgSpan.firstChild);
    }
    msgSpan.appendChild(document.createTextNode(msg));
  };
  
  this.keyup = function(e) {
    var self = Login;
    if (!e) {
      e = window.event;
    }
    if (e.keyCode != 13) {
      self.evalFormFieldState();
    }
    else {
      if (self.enabled) {
        self.submitData();
      }
    }
  };
  
  this.evalFormFieldState = function() {
    var self = Login;
    if (self.form.email.value.length > 0 && self.form.password.value.length > 0 && self.form.password.value != 'PASWOORD') { //Joe
      self.toggleEnabled(true);
    }
    else {
      self.toggleEnabled(false);
    }
  };
  
  this.toggleEnabled = function(able) {
    var self = Login;
//	alert(able); //joe//
    if (able) {
      self.button.onclick = self.submitData;
      self.button.disabled = false;
      self.button.className = 'inputButtonActive';
      self.enabled = true;
    }
    else {
		//alert('disabling');
      self.button.onclick = null;
      self.button.disabled = true;
      self.button.className = 'inputButtonDisabled';
      self.enabled = false;
    }
  };
  
  this.submitData = function() {
    var self = Login;
    var postData = '';
    postData = formData2QueryString(self.form);
    //alert(postData);
	self.ajax.doPost('/templates/syneco1/javascript/loginscript/ouf.php?action=login', postData, self.handleLoginResp);
    self.showStatusPrompt();
    self.toggleEnabled(false);
  };
	
	this.showStatusPrompt = function() {
    var self = Login;
    self.setPrompt('proc', 'Traitement');
    self.promptInterval = setInterval(self.showStatusDots, 200);
  };
	
	this.showStatusDots = function() { //joe
    var self = Login;
    var dotSpan = self.dotSpan;
    self.dots += '.';
    if (self.dots.length > 4) {
      self.dots = '';
    }
    if (dotSpan.firstChild) {
      dotSpan.removeChild(dotSpan.firstChild);
    }
    dotSpan.appendChild(document.createTextNode(' ' + self.dots));
  };
  
  this.handleLoginResp = function(str) {
//	alert(str);
    var self = Login;
    var respArr = str.split(',');
    var respType = respArr[0].toLowerCase();
    var respMsg = respArr[1];
    var respSes = respArr[2];
    if (respType == 'ok') {
      // refresh page
	  location.reload(true);
	  
	  //hide login field
	  /*document.getElementById('loginformdiv').style.display='none';
	  document.getElementById('loggedindata').style.display='block';
	  document.getElementById('u_fullname').innerHTML = respMsg;
		
	  if(document.getElementById('afterLogin')){
		  var divs = document.getElementsByClassName("afterLogin");
		  for(a = 0; a < divs.length; a++) {
				divs[a].style.display='block';
		  }
	  }
	  if(document.getElementById('bubbleInfo')){
		  var divs = document.getElementsByClassName("bubbleInfo");
		  for(a = 0; a < divs.length; a++) {
				divs[a].style.display='none';
		  }
		  //document.getElementById('bubbleInfo').style.display='none';
	  }*/
	}
    else {
      self.showErrorPrompt(respMsg);
    }
  };
  
  this.showErrorPrompt = function(str) {
    var self = Login;
    var dotSpan = self.dotSpan;
    clearInterval(self.promptInterval);
    if (dotSpan.firstChild) {
      dotSpan.removeChild(dotSpan.firstChild);
    }
    self.setPrompt('err', str);
  };

};

window.onunload = Login.cleanup;
//window.onload = Login.init;
document.onkeyup = Login.keyup;