var wizardSaved = false;
var accountOk = false;
var domainOk = false;

QuickWizard = {

  /* Codes:
   * 0 = ok
   * 1 = passwords not same
   * 2 = password illegal
   * 3 = username illegal
   * 4 = username taken with different password
   */
  accountValidation: function(code) {
    Element.hide("password_field_error_notequal");
    Element.hide("password_field_error_notvalid");
    Element.hide("email_field_error_notvalid");
    Element.hide("email_field_error_registered");

    if (code == 0) {
      QuickWizard.saveWizard(true, true);
    }
    else if (code == 1) {
      Element.show("password_field_error_notequal");
    }
    else if (code == 2) {
      Element.show("password_field_error_notvalid");
    }
    else if (code == 3) {
      Element.show("email_field_error_notvalid");
    }
    else if (code == 4) {
      Element.show("email_field_error_registered");
    }
  },

  validateAccount: function() {
    var insideAjaxUrl = "";
    if (typeof(ajaxUrl) == 'undefined' ){
      insideAjaxUrl = ajax_public_url;
    } else {
      insideAjaxUrl = ajaxUrl;
    }

    var email = $("email").value;
    var pwd1 = $("password").value;
    var pwd2 = $("password2").value;
    new Ajax.Updater('ajax_response', insideAjaxUrl,
         {parameters:"resource=quickwizard&action=check_account&email=" + email + "&pwd1=" + pwd1 + "&pwd2=" + pwd2,
          asynchronous:true,
          evalScripts:true,
          onComplete:function(){ }});
  },

  /* Codes:
   * 0 = ok
   * 1 = domain not free
   * 2 = domain not valid
   */
  domainValidation: function(code, finalValidation) {
    Element.hide('domain_field_loader');
    Element.hide('domain_field_ok');
    Element.hide('domain_field_error_reserved');
    Element.hide('domain_field_error_notvalid');

    if (code == 0) {
      Element.show('domain_field_ok');
      if (finalValidation == "false")
        setTimeout("QuickWizard.continueAfterDomainValidation()", 500);
      else
        QuickWizard.saveWizard(true, false);
    }
    else if (code == 1) {
      Element.show('domain_field_error_reserved');
      Element.scrollTo('step1');
    }
    else if (code == 2) {
      Element.show('domain_field_error_notvalid');
      Element.scrollTo('step1');
    }
  },
  continueAfterDomainValidation: function() {
    // Used only in moogo wizard
    //Element.show('step4');
    //Element.scrollTo('step4');
  },

  validateDomain: function(finalValidation) {
    var url = $("url_field").value;
    url = escape(escape(url));

    var insideAjaxUrl = "";
    if (typeof(ajaxUrl) == 'undefined' ){
      insideAjaxUrl = ajax_public_url;
    } else {
      insideAjaxUrl = ajaxUrl;
    }

    var domain = ""; //$("domain_field").value;
    for (var i = 0; i < $("domain_field").options.length; i++)
      if ($("domain_field").options[i].selected)
        domain = $("domain_field").options[i].value;

    Element.show('domain_field_loader');
    new Ajax.Updater('ajax_response', insideAjaxUrl,
         {parameters:"resource=quickwizard&action=check_domain&domain=" + domain + "&url=" + url + "&finalValidation=" + finalValidation,
          asynchronous:true,
          evalScripts:true,
          onComplete:function(){ }});
  },

  scaleSpacer: function(step) {
    var viewh = document.viewport.getDimensions().height;
    var steph = Element.getHeight("step" + step);
    $("step_spacer").style.height = (viewh - steph - 30) + "px";
  },


  /**
   * Save the web site
   */
  saveWizard: function(domainValidated, accountValidated) {
    if (wizardSaved == true) return;

    // License
    if ($("license").checked != true) {
      alert(msg_license_not_checked);
      wizardSaved = false;
      return false;
    }

    // URL
    if (domainValidated == false) {
      QuickWizard.validateDomain(true);
      return false;
    }

    if (accountValidated == false) {
      QuickWizard.validateAccount();
      return false;
    }


    if (accountOk == false || domainOk == false) return false;

    // All good, save
    wizardSaved = true;
    Element.hide("wizard_save_button");
    Element.show("wizard_save_loader");
    $("quickwizard_wizard_form").submit();
   }
}

Registration = {
  cleanUrl: function(url) {
      var s = url.toLowerCase();
      s = s.replace(/\s+/g, '');
      return s;
  }
}
