var Registration_Check = Class.create();

Registration_Check.prototype = {
  initialize: function(){},

  email: function(value) {
    var parameters = { 'method': 'icony.registration.checkEmail', 'format': 'json-prototype', 'value': value };
    new Ajax.Request('/services/rest/', {
      method: 'post',
      parameters: parameters,
      onComplete: function(e) {
        registrationcheck.showStatus(e.responseJSON);
      },
      onFailure: function() {
        response = new Object;
        response.stat = 'fail';
        response.field = 'status_email';
        response.err_field = 'err_email';
        registrationcheck.showStatus(response);
      }
    });
  },
  username: function(value) {
    var parameters = { 'method': 'icony.registration.checkUsername', 'format': 'json-prototype', 'value': value };
    new Ajax.Request('/services/rest/', {
      method: 'post',
      parameters: parameters,
      onComplete: function(e) {
        registrationcheck.showStatus(e.responseJSON);
      },
      onFailure: function() {
        response = new Object;
        response.stat = 'fail';
        response.field = 'status_username';
        response.err_field = 'err_username';
        registrationcheck.showStatus(response);
      }
    });
  },
  cityofzip: function(zip, country) {
    var parameters = { 'method': 'icony.registration.findCityOfZip', 'format': 'json-prototype', 'zip': zip, 'country': country };
    new Ajax.Request('/services/rest/', {
      method: 'post',
      parameters: parameters,
      onComplete: function(e) {
        registrationcheck.showCities(e.responseJSON);
        $('city_search').hide();
      },
      onFailure: function() {
        response = new Object;
        response.stat = 'fail';
        response.field = 'status_zip';
        response.err_field = 'err_zip';
        registrationcheck.showStatus(response);
        $('city_search').hide();
      }
    });
  },
  setFailed: function(response) {
    fields = response.field;
    var elements = fields.split(",");
    $A(elements).each(function(element){
      if ($(element)) {
        if ($(element).hasClassName('status-ok')) $(element).removeClassName('status-ok');
        if ($(element).hasClassName('status-failed')) $(element).removeClassName('status-failed');
        $(element).addClassName('status-failed');
        registration.setErrorMsg(response);
      }
    });
  },
  setOk: function(response) {
    fields = response.field;
    var elements = fields.split(",");
    $A(elements).each(function(element){
      if ($(element)) {
        if ($(element).hasClassName('status-ok')) $(element).removeClassName('status-ok');
        if ($(element).hasClassName('status-failed')) $(element).removeClassName('status-failed');
        $(element).addClassName('status-ok');
        registration.unsetErrorMsg(response);
      }
    });
  },
  showStatus: function(result) {
    if (typeof result != 'object') {
      return false;
    }
    if (!result.stat) {
      return false;
    }

    if (result.stat == "ok") {
      registrationcheck.setOk(result);
    }
    else {
      registrationcheck.setFailed(result);
    }
  },
  showCities: function(result) {
    if (result.stat == "fail") {
      registration.removeCities();
      registrationcheck.setFailed(result);
      return;
    }
    registration.addCities(result);
  }
}
var registrationcheck = new Registration_Check;

