var REU = null;
Event.observe(window,'load',function (){REU = new BONSPIN.REU()},false);  
/**
*  Object
* -------------------------------------------------------------
*/
if (!BONSPIN) { var BONSPIN = new Object(); }
/**
* GUI Class
* -------------------------------------------------------------
*/
BONSPIN.REU = Class.create();
BONSPIN.REU.prototype = {
 /**
 * Datamembers
 * -------------------------------------------------------------
 */
 mainDiv : null,
 INPUTCHECK : false,
 /**
 * Constructor
 * -------------------------------------------------------------
 */   
  initialize	: function() {
  this.setEventHandler();
  },
 /**
 * Methodes
 * -------------------------------------------------------------
 */    
  setEventHandler : function() {
    Event.observe('email','change',this.changeEmail,false);
    Event.observe('email','keyup',this.changeEmail,false);
    Event.observe('username','change',this.changeUsername,false);
    Event.observe('username','keyup',this.changeUsername,false);
    //Event.observe('password','change',this.changePassword,false);
    //Event.observe('password','keyup',this.changePassword,false);
    Event.observe('password2','change',this.changePassword,false);
    Event.observe('password2','keyup',this.changePassword,false);
    Event.observe(document,'mousemove',this.checkINPUTCHECK,false);
    Event.observe(document,'keyup',this.checkINPUTCHECK,false);
    //Event.observe(window,'load',this.checkINPUTCHECK,false);  
  },
  
  showInfo : function(el){
      $('beschreibung').update($('info_'+el.id).innerHTML);
  },
  
  changePassword : function(e)
  {
    $$('#registeruser_form .password_error').each(function(div){div.hide();});
    if(($F('password')==$F('password2'))&&($('password').value.strip().length!=0))
    {
        REU.INPUTCHECK = true;
        $('password').setStyle(succ_color);
        REU.checkUnique();
        return;
    }
    REU.INPUTCHECK = false; // set false while check asyn
    //$('password_error_1').show();
    $('password').setStyle(error_color);
    REU.checkINPUTCHECK(null);
  },
  
  changeUsername : function(e)
  {
      $$('#registeruser_form .nick_error').each(function(div){div.hide();});
      REU.INPUTCHECK = false; // set false while check asyn
      //$('nick_error_1').show();
      REU.checkUnique();
  },
  
  /*
  error_color : {'background-color':'#fedbd9'},
  error_color2 : {'background-color':'#eebdff'},
  succ_color : {'background-color':'#fff'},
  */
  checkINPUTCHECK : function(e)
  {
    if(!REU.INPUTCHECK) 
    {
      $('submit').disabled="disabled"; 
      var inputcheck = false;
    }   
    else
      var inputcheck = true; 
    
    $$('#registeruser_form .password_error').each(function(div){div.hide();});
    if(($F('password')==$F('password2'))&&($('password').value.strip().length!=0))
    {
        
    }
    else
    {
      inputcheck = false; // set false while check asyn
      //$('password_error_1').show()
      $('password').setStyle(error_color);
      $('password2').setStyle(error_color);
    }
    
    if(  $F('username').strip().length==0 )
    {
      inputcheck = false;
      //$('nname_error').show();
      $('username').setStyle(error_color);
    }
    else{
      //$('nname_error').hide();
       //$('username').setStyle(succ_color);
    }
    
    if(  $F('email').strip().length==0 )
    {
      inputcheck = false;
      //$('nname_error').show();
      $('email').setStyle(error_color);
    }
    else{
      //$('nname_error').hide();
      // $('email').setStyle(succ_color);
    }
    
    if(  $F('nname').strip().length==0 )
    {
      inputcheck = false;
      //$('nname_error').show();
      $('nname').setStyle(error_color);
    }
    else{
      //$('nname_error').hide();
       $('nname').setStyle(succ_color);
    }
    
    if(  $F('str').strip().length==0 )
    {
      inputcheck = false;
      //$('str_error').show();
      $('str').setStyle(error_color);
    }
    else{
      //$('str_error').hide();
      $('str').setStyle(succ_color);
    }
    
    if(  $F('ort').strip().length==0 )
    {
      inputcheck = false;
      //$('ort_error').show();
      $('ort').setStyle(error_color);
    }
    else{
      //$('ort_error').hide();
      $('ort').setStyle(succ_color);
    }
    
    if((  $F('plz').strip().length==0 )||(isNaN($F('plz'))))
    {
      inputcheck = false;
      //$('plz_error').show();
      $('plz').setStyle(error_color);
    }
    else{
      //$('plz_error').hide();
      $('plz').setStyle(succ_color);
    }
    
    if(!$('agb_checkbox').checked || !$('ds_checkbox').checked)
    {
      $('submit').disabled="disabled";
      return;
    }
    
    if( inputcheck)
      $('submit').disabled="";
    else
      $('submit').disabled="disabled"; 
  },
  
  changeEmail : function(e)
  {
      $$('#registeruser_form .email_error').each(function(div){div.hide();});
      if(REU.checkemail($F('email')))
      {
        REU.INPUTCHECK = false; // set false while check asyn
        //$('email_error_2').show();
        $('email').setStyle(error_color);
        REU.checkUnique();
      }
      else
      {
        REU.INPUTCHECK = false;
        $('email').setStyle(error_color);
        //$('email_error_1').show();
      }
  },
  
  lastSendTime : 0 ,
  checkUnique : function(){
      var jetzt = new Date();
      REU.lastSendTime = jetzt.getTime();
      var parameter = new Object();
      parameter["tx_bonspin_registeruser[action]"]   = 'check_unique';
      parameter["tx_bonspin_registeruser[email]"]    = $('email').value.strip();
      parameter["tx_bonspin_registeruser[username]"] = $('username').value.strip();
      parameter["tx_bonspin_registeruser[tstamp]"]   = REU.lastSendTime;
      parameter["no_cache"] = 1;
      
      var param = $H(parameter);
      var url = "index.php?id="+pageid+"";
      var myAjax = new Ajax.Request(
      url,
      {
        method: "post",
        parameters: param.toQueryString(),
        onComplete: REU.finishCheckUnique
      });
  },
  
  finishCheckUnique : function(parameter) {
    var response = parameter.responseText.split("***RESPONSE_MARKER***");
    if(response[1]!='success') 
    {
      //alert(parameter.responseText);
      return;  
    }
    if(response[2].length!=0) 
    {
      alert(response[2]);
      return;  
    } 
    
    if(response[6]!=REU.lastSendTime)return;
    
    REU.INPUTCHECK = true;
    $('email').setStyle(succ_color);
    $('username').setStyle(succ_color);
    $('password').setStyle(succ_color);
    $('password2').setStyle(succ_color);
    
    // input email
    $$('#registeruser_form .email_error').each(function(div){div.hide();});
    if(response[4]!='-1')
    if(response[4]=='0')
    {
      REU.INPUTCHECK = false;
      //$('email_error_3').show();
       $('email').setStyle(error_color2);
    }
      
    // input nickname
    $$('#registeruser_form .nick_error').each(function(div){div.hide();});
    if(response[5]!='-1')
    if(response[5]=='0')
    {
      REU.INPUTCHECK = false;
      //$('nick_error_2').show();
      $('username').setStyle(error_color2);
    }
    
    if(($F('password')!=$F('password2'))||($('password').value.strip().length==0))
    {
        REU.INPUTCHECK = false;
         $('password').setStyle(error_color2);
         $('password2').setStyle(error_color2);
    }
    
    REU.checkINPUTCHECK(null);
  },
  
  
  checkemail : function(str) {
    var testresults
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
    if (filter.test(str))
      testresults=true
    else
    {
      testresults=false
    }
      return (testresults)
  }
};

