var boxregister_visible = false;
Event.observe(window, 'load', init, false);

function init(){
    // hijack the form submit
    Event.observe($('boxregister_signup_link'), 'click', boxregister_click);
    Event.observe($('boxregister_submit_link'), 'click', boxregister_submit);
   	textbox_labels_add('boxregister_email');
   	textbox_labels_add('boxregister_name');
   	convertCombo('boxregister_gender');
   	convertCombo('boxregister_country');
   	convertCombo('boxregister_day');
   	convertCombo('boxregister_month');
   	convertCombo('boxregister_year');
}
function boxregister_click(e) {
	if (!boxregister_visible) {
		boxregister_visible	= true;
		
		$('boxregister_submit_link').setStyle({display:'block'});
		$('boxregister_signup_link').setStyle({display:'none'});
		$('boxregister_signup_div').setStyle({display:'none'});
		
		Effect.Appear('boxregister_details', { duration: 2.0 });
		Effect.Appear('boxregister_info', { duration: 2.0 });
		Effect.Appear('boxregister_signup_div', { duration: 2.0 });
		
	}
}

function boxregister_showform() {
	$('boxregister_loader').setStyle({display:'none'});
	var aform = $('boxregisterform');	
 	aform.enable(); // enable the form
    aform.show();
}

function boxregister_hideform() {
	var aform = $('boxregisterform');
	aform.disable();
    aform.hide();
	$('boxregister_loader').setStyle({display:'block'});
}

function boxregister_submit() {
    var aform = $('boxregisterform');
    var ajaxurl = aform.action;
    var formparameters = aform.serialize(true); // take the form field values before you disable it

    //disable the form elements while beeing processed
	boxregister_hideform();
	
    var myAjax = new Ajax.Request(
	    ajaxurl,
	    { method: 'post', 
	      parameters: formparameters, 
	      onSuccess: boxregister_handlereq, 
	      onFailure: boxregister_handleFail // what to do if the server return something else than 2xx status.
    });
	
}

function boxregister_handlereq(req) {
	
	boxregister_showform();
	//alert(req.responseText);
	//$('error_misc').update(req.responseText);
	if (req.responseText.isJSON()) {
        var json = req.responseText.evalJSON(true);
        
        if (json.result){	// Successful registration
        /* Show message 
          ['boxregister-success'].each(Element.show);
          ['boxregisterform'].each(Element.hide);
          */
          /* Direct log in (no confirmation) */
          $('boxlogin_email').value = $("boxregister_email").value;
          $("boxlogin_pwd").value = $("boxregister_password").value;
          login();
          
        }
        else {	// Display errors
          ['boxregister-success'].each(Element.hide);
          ['boxregister-error'].each(Element.show);
          /*
          $('error_name').update(json.error_name);
          $('error_user').update(json.error_user);
          $('error_password').update(json.error_password);
          $('error_gender').update(json.error_gender);
          $('error_birthday').update(json.error_day);
          $('error_birthday').insert(json.error_month);
          $('error_birthday').insert(json.error_year);
          $('error_country').update(json.error_country);
          if (json.error_misc){
            $('error_misc').update(json.error_misc);
          }
          */
	      $('boxregister-error-messages').update(json.allerrors);
        }
    }
	else{
		['boxregister-success'].each(Element.hide);
  		['boxregister-error'].each(Element.show);
		$('boxregister-error-messages').update(req.responseText);
	}
	
}
function boxregister_handleFail() {
    boxregister_showform();
	$('boxregister-error-messages').update("Couldn't connect, please retry");

}