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.addEvent = function(elm, evType, fn, useCapture) {
// by Scott andrew
if(elm.addEventListener) {
   elm.addEventListener(evType, fn, useCapture);
	 return true;
	 } else if (elm.attachEvent){
	    var r = elm.attachEvent('on' + evType, fn);
			    return r;
					} else {
					   elm['on' + evType] = fn;
		     }
}; 	
	
  
  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');
    self.dotSpan = document.getElementById('dotSpan');
    self.button = document.getElementById('submitok');
    self.setPrompt('base', 'Usuario y clave de acceso para entrar');
    self.form.usua.focus();
    self.toggleEnabled(false);
    self.form.onsubmit = function() { return false; }
  };
	
  this.setPrompt = function(stat, msg) {
    var self = Login;
    var promptDiv = self.promptDiv;
    var msgSpan = document.getElementById('msgSpan');
    var statusClass = '';
    promptDiv.className = stat + 'Prompt'; // 'base', 'proc' or 'err'
    if (msgSpan.firstChild) {
      msgSpan.removeChild(msgSpan.firstChild);
    }
    msgSpan.appendChild(document.createTextNode(msg));
  };

	  this.keyup = function(e) {
			var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return ; 

				  if(e && e.which) { var code = e.which; } 
			else if (e && e.keyCode) {var code = e.keyCode; }
			else if (window.event && window.event.keyCode) {
			         var code = window.event.keyCode;      }
					else {return ;}
    var self = Login;
			
	var sike = target.name;
	 var kes = validationSet[sike]['kesigue'];
				var xy = document.getElementById(kes);
					 if(target.value.length == target.maxLength){
  				xy.focus(); xy.select();                         } else {
    if (code != 13) {
      self.evalFormFieldState();   }    
    else {
      if (self.enabled) {
			    self.submitData();  } else {
					  xy.select();
			  }
			 }
	 }
	 				// es necesario?
		    if (e && e.stopPropagation && e.preventDefault) {
        e.stopPropagation();
        e.preventDefault();
      }
      if (window.event) {
        window.event.cancelBubble = true;
        window.event.returnValue = false;
        return false;
      }   // es necesario lo anterior?
  };
  
  this.evalFormFieldState = function() {
    var self = Login;
    if (self.form.usua.value.length == 8 && self.form.passw.value.length  >= 7 ) {
      self.toggleEnabled(true);    }     
			  else  {  self.toggleEnabled(false); 
				
				   }
  };
  
  this.toggleEnabled = function(able) {
    var self = Login;
    if (able) {
      self.button.onclick = self.submitData;
      self.button.disabled = false;
      self.button.className = 'inputButtonActive';
      self.enabled = true;
    }
    else {
      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);
    self.ajax.doPost('seg_add_proc.php', postData, self.handleLoginResp);
    self.showStatusPrompt();
    self.toggleEnabled(false);
  };
	
	this.showStatusPrompt = function() {
    var self = Login;
    self.dots = '';
    self.setPrompt('proc', 'Procesando');
    self.promptInterval = setInterval(self.showStatusDots, 200);
  };
	
	this.showStatusDots = function() {
    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) {
    var self = Login;
    var respArr = str.split(',');
    var respType = respArr[0].toLowerCase();
    var respMsg = respArr[1];
		 var cliente = respArr[2];
	    if (respType == 'siguele') {
        location = respMsg;
    }
    else {
     self.showErrorPrompt(respMsg);
    }
  };
	
  this.printResult = function(str) {
  var pollDiv = document.getElementById('kck');
  if (pollDiv.firstChild) {
    pollDiv.removeChild(pollDiv.firstChild);
  }
  pollDiv.appendChild(document.createTextNode(str));
};

  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);
		self.form.passw.value = '';
     self.form.usua.focus();
    self.toggleEnabled(false);
    self.form.onsubmit = function() { return false; }
	};
  
this.enableScreenReaderFeatures = function() {
  var self = Login;
  var fieldDiv = document.getElementById('fieldDiv');
  var msgDiv = null;
  var checkboxDiv = null;
  var label = null;
  var checkbox = null;
  var msg = 'This web page uses dynamic content. Page content' +
    ' may change without a page refresh. Check the following' +
    ' checkbox if you would like an alert dialog to inform' +
    ' you of page content changes.';
  msgDiv = document.createElement('div');
  msgDiv.className = 'readerText';
  msgDiv.appendChild(document.createTextNode(msg));
  self.form.insertBefore(msgDiv, fieldDiv);
  checkboxDiv = document.createElement('div');
  checkboxDiv.className = 'readerText';
  label = document.createElement('label');
  label.appendChild(document.createTextNode('Content Change Alert'));
  checkbox = document.createElement('input');
  checkbox.type = 'checkbox';
  checkbox.id = 'ChangeAlert';
  checkbox.name = 'ChangeAlert';
  checkbox.value = 'true';
  checkbox.title = 'Content Change Alert';
  label.appendChild(checkbox);
  checkboxDiv.appendChild(label);
  self.form.insertBefore(checkboxDiv, fieldDiv);
    self.form.passw.onchange = self.evalFormFieldState;
    self.form.passw.title = 'Password. Enter text to activate the Submit button.';
  };


this.sinclic = function(e) {
  var tecla = null;
  if(window.event){
	   tecla = window.event.button;}
		 else { tecla = e.button; }
		 if(tecla == 2){
		   alert('?'); 
			  }
};
/*            aqui inician las rutinas para validar una forma    */

 this.kecolor = function(campo,kol){
var kolos = ['#4682B4' , '#228B22','#000000'];
var ktiene = "2px solid "+kolos[kol];
document.getElementById(campo.name).style.border = ktiene; 
};
this.initForm = function() {
 var self = Login;
	   for (var i in validationSet) { 
			 if (document.getElementsByName(i)) {
	    		 var formField = document.getElementsByName(i)[0]; 
					 self.addEvent(formField, 'blur', self.checkValid, false);
		       self.addEvent(formField, 'keyup', self.keyup, false); 
		       self.addEvent(formField, 'focus', self.ini_Focus, false);
		
			/* if (!formField.form.validateSubmit) {    
		        fV.addEvent(formField.form, 'submit', fV.checkValidSubmit, false);
			  	 formField.form.onsubmit = fV.checkSubmit; // safari
		  		 formField.form.validateSubmit = true; 
				 	} */ 
				}  
			} 
		};
		
  this.ini_Focus =  function(e) {
	 var self = Login;
	
    var obj = window.event ? window.event.srcElement : e ? e.target : null;
    if (!obj) return;
		 var xxx = document.getElementById(obj.name);
     
	var xy2 = '';
	var xy3 = '';
		switch (xxx.name) {
		  			 case 'usua':
	          //  self.setPrompt('base', 'La identificacion del usuario.');
      			   xy2 = document.getElementById('passw');
				      	xy2.value = '';
						  	 self.kecolor(xy2 , 2);		
					 break;
			default:	
		}				              
		obj.select();
		self.kecolor(obj,1);
};	


 this.checkValid = function(e) { 
  var self = Login;  
	  
    var target = window.event ? window.event.srcElement : e ? e.target : null;
    if (!target) return;
		
    var failedE = self.handleValidity(target);
	    
	 var errDisplay = document.getElementById('errores'); //+target.name);
	   if (failedE && errDisplay) {
		       alert(validationSet[failedE.name]['error']);
 	    failedE.focus();
  		 failedE.select(); 
    }
		
    if (failedE && !errDisplay) {
      alert(validationSet[failedE.name]['error']);
    }
    if (!failedE && errDisplay) { 
    }
};
  this.handleValidity = function(field) {
    if (!field.value) {
      return null;
			
    }
		 
		var self = Login;
		var objv = field.value;
		var objn = field.name;
		var yy = validationSet[objn]['cerouno'];
			 // self.setPrompt('error', 'Valor de field = '+yy);
	     
		if (yy != 0) {
		 var xy = parseInt(objv,10);
		 field.value = (xy<10) ? '0'+xy : ''+xy ;  }
		
    var re = validationSet[objn]['regexp'];
    if (!field.value.match(re)) {
	    return field;
    } else {
      return null;
    }
  };   /* end this handlevalidity  */

};   /*  fin del Login  */


Login.addEvent(window, 'unload', Login.cleanup, false);      /*  si  */
Login.addEvent(document, 'mousedown', Login.sinclic, false); /*  si  */
Login.addEvent(window, 'load', Login.init, false);           /*  si   */
Login.addEvent(window, 'load', Login.initForm, false);       /*  si   */
