function doChallengeResponse(frm) {
  if (! frm) {
    frm = document.login
  }
  var challengeValue;
  if (frm.challenge && frm.challenge.value) { // hidden challenge form field
    challengeValue=frm.challenge.value;
  } else if (typeof(challenge)!='undefined' && challenge) {
	  // global challenge var fetched by getchallenge act
    challengeValue=challenge;
  }
  var loginSalt1='';
  if (frm.loginSalt1 && frm.loginSalt1.value) {
    loginSalt1=frm.loginSalt1.value;
  }
  var loginRSAPublicKey='';
  if (frm.loginRSAPublicKey && frm.loginRSAPublicKey.value) {
    loginRSAPublicKey=frm.loginRSAPublicKey.value;
  }
  var loginRSAModulus='';
  if (frm.loginRSAModulus && frm.loginRSAModulus.value) {
    loginRSAModulus=frm.loginRSAModulus.value;
  }
  if (challengeValue) {
//    window.alert(frm.loginPassword.value);
    var str = frm.loginUsername.value + ":" +
          MD5(frm.loginPassword.value+loginSalt1) + ":" +
          challengeValue;
    if (loginRSAPublicKey && loginRSAModulus) {
      setMaxDigits(76);
      var k= new RSAKeyPair(loginRSAPublicKey,'', loginRSAModulus)
      frm.loginEncryptedPassword.value = encryptedString(k, str);
    } else {
      frm.loginEncryptedPassword.value = MD5(str);
    }
    frm.loginPassword.setAttribute('autocomplete', 'off');
    frm.loginPassword.value = "";
//    frm.challenge.value = "";
  }
//  frm.submit();
}

function setFocus(frm) {
  if (! frm) {
    frm = document.login
  }
  // Activate the appropriate input form field.
  if (frm.loginUsername.value == '') {
    frm.loginUsername.focus();
  } else {
    frm.loginPassword.focus();
  }
}

