
var regsvr = "/rpcreg.cm";
var regtimeout = 12000;
var regprocessing = false;

function _pageQuery()
{
	var wind = window.parent || window;
	var page = wind.location.search;
	var inx = page.indexOf("page=");
	if (inx >= 0)
		page = page.substring(inx + 5);
	else 
		page = "";
	return page;
}

function RegBeginProcessing()
{
	if (regprocessing) return false;
  regprocessing = true;
  return true;
}

function RegEndProcessing()
{
  regprocessing = false;
}

function RegistrationRpcValidation()
{
	if (!RegBeginProcessing()) return;
	var form = document.registration_form;
  RPC(regsvr, "ValidateRegistration",
  {
    Email: form.Email_Address ? form.Email_Address.value : form.User_Id.value
  }, 
  onRegistrationRpcValidation, 
  regtimeout);
}

function onRegistrationRpcValidation(obj)
{
  if (CheckRPC(obj))
    document.registration_form.submit();
  RegEndProcessing();
}

function ChangeEmailRpcValidation()
{
	if (!RegBeginProcessing()) return;
	var form = document.changeemail_form;
  RPC(regsvr, "ValidateEmailChange",
  {
    OldEmail: form.Old_Email_Address.value,
    NewEmail: form.Email_Address.value,
    Password: form._Password.value
  }, 
  onChangeEmailRpcValidation, 
  regtimeout);
}

function onChangeEmailRpcValidation(obj)
{
  if (CheckRPC(obj))
    document.changeemail_form.submit();
  RegEndProcessing();
}

function ChangePasswordRpcValidation()
{
	if (!RegBeginProcessing()) return;
	var form = document.changepassword_form;
  RPC(regsvr, "ValidatePassword",
  {
    Password: form._Old_Password.value
  }, 
  onChangePasswordRpcValidation, 
  regtimeout);
}

function onChangePasswordRpcValidation(obj)
{
  if (CheckRPC(obj))
    document.changepassword_form.submit();
  RegEndProcessing();
}

function ChangeRegistrationLoad()
{
  RPC(regsvr, "Registration",
  {
    __all: null,
    _RememberMe: null
  },
  onChangeRegistrationLoad, 
  regtimeout);
}

function onChangeRegistrationLoad(obj)
{
  var form = document.change_registration_form;
  if (obj && obj.ok && obj.fields)
    for (var prop in obj.fields)
      setValue(form[prop], obj.fields[prop]);
  if (form._Password) form._Password.focus();
}

function ChangeRegistrationRpcValidation()
{
	if (!RegBeginProcessing()) return;
  var form = document.change_registration_form;
  RPC(regsvr, "ValidatePassword",
  {
    Password: form._Password.value
  }, 
  onChangeRegistrationRpcValidation, 
  regtimeout);
}

function onChangeRegistrationRpcValidation(obj)
{
  if (CheckRPC(obj))
  {
    var form = document.change_registration_form;
    FixCheckboxFields(form);
    form.submit();
  }
  RegEndProcessing();
}

function ForgotPasswordRpcValidation()
{
	if (!RegBeginProcessing()) return;
  var form = document.forgotpassword_form;
  RPC(regsvr, "ValidateEmail",
  {
    Email: form.Email_Address.value        
  }, 
  onForgotPasswordRpcValidation, 
  regtimeout);
}

function onForgotPasswordRpcValidation(obj)
{
  if (CheckRPC(obj))
		document.forgotpassword_form.submit();	
  RegEndProcessing();
}

function SignInLoad()
{
  RPC("/rpcreg.cm", "Registration",
  {
    Email_Address: null,
    _RememberMe: null
  }, 
  onSignInLoad, 
  regtimeout);
}

function onSignInLoad(obj)
{
  var form = document.signin_form;
  var key = "Email_Address";
  if (!form[key]) key = "User_Id";
  if (obj && obj.ok && obj.fields)
  {
    var fields = obj.fields;
    if (fields._RememberMe && form._RememberMe)
      form._RememberMe.checked = true;
    if (fields[key])
    {
      form[key].value = fields[key];
      if (form._Password)
				form._Password.focus();
			else
				form[key].focus();
    }
    else form[key].focus();
  }
  else form[key].focus();
  form.onkeydown = onKeydownSignIn;
  form._page.value = _pageQuery();
}

function onKeydownSignIn()
{
  if (window.event && window.event.keyCode == 13)
  {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
    if (Validate('signin_form'))
      document.signin_form.submit()
  }
}

function SignInRpcValidation()
{
	if (!RegBeginProcessing()) return;
  var form = document.signin_form;
  RPC(regsvr, "ValidateSignIn",
  {
    Email: form.Email_Address ? form.Email_Address.value : form.User_Id.value,
    Password: form._Password ? form._Password.value : ""
  }, 
  onSignInRpcValidation, 
  regtimeout);
}

function onSignInRpcValidation(obj)
{
  if (CheckRPC(obj))
		document.signin_form.submit();
  RegEndProcessing();
}

function ResendLoad()
{
  RPC("/rpcreg.cm", "Registration",
  {
    Email_Address: null
  }, 
  onResendLoad, 
  regtimeout);
}

function onResendLoad(obj)
{
  var form = document.resend_form;
  var key = "Email_Address";
  if (obj && obj.ok && obj.fields)
  {
    var fields = obj.fields;
    if (fields[key])
      form[key].value = fields[key];
  }
  form[key].focus();
  form.onkeydown = onKeydownResend;
  form._page.value = _pageQuery();
}

function onKeydownResend()
{
  if (window.event && window.event.keyCode == 13)
  {
    window.event.cancelBubble = true;
    window.event.returnValue = false;
    if (Validate('resend_form'))
      document.resend_form.submit()
  }
}

function ResendRpcValidation()
{
	if (!RegBeginProcessing()) return;
  var form = document.resend_form;
  RPC(regsvr, "ValidateResend",
  {
    Email: form.Email_Address.value
  }, 
  onResendRpcValidation, 
  regtimeout);
}

function onResendRpcValidation(obj)
{
  if (CheckRPC(obj))
		document.resend_form.submit();
  RegEndProcessing();
}

function RegisterLoad()
{
  var form = document.registration_form;
  form._page.value = _pageQuery();
}

function RegInitForm(form)
{
  RPC(regsvr, "Registration",
  {
    __all: null
  },
  onRegInitForm, 
  regtimeout, form);
}

function onRegInitForm(obj, form)
{
  if (obj && obj.ok && obj.fields)
    for (var prop in obj.fields)
      setValue(form[prop], obj.fields[prop]);
}

