/**
 * Recaptcha ajax support module.
 */
var recaptchaForm = null;
var recaptchaErrMsg = "Incorrect, please try again.";

function xmlhttpPost(strURL) {
  var xmlHttpReq = false;
  var self = this;
  // Mozilla/Safari
  if (window.XMLHttpRequest) {
    self.xmlHttpReq = new XMLHttpRequest();
  }
  // IE
  else if (window.ActiveXObject) {
    self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
  }

  self.xmlHttpReq.open('POST', strURL, true);
  self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  self.xmlHttpReq.onreadystatechange = function() {
    if (self.xmlHttpReq.readyState == 4) {
      updatepage(self.xmlHttpReq.responseText);
    }
  }
  self.xmlHttpReq.send(getquerystring());
}

function getquerystring() {
  var response = recaptchaForm.recaptcha_response_field.value;
  var challenge = recaptchaForm.recaptcha_challenge_field.value;
  var qstr = 'recaptcha_response_field=' + escape(response);  // NOTE: no '?' before querystring
  qstr += '&recaptcha_challenge_field=' + challenge;
  return qstr;
}

function updatepage(str){
  var msgdiv = document.getElementById('recaptcha_msg');
  var resultstring = str.split("<div>");
  if (resultstring[0].indexOf("success") != -1)  {
    //alert("reCaptcha success: " + resultstring[0]);
    if (msgdiv)
      {
      msgdiv.className = "rc_nodata";
      msgdiv.innerHTML = "";
      }
    //Recaptcha.destroy();
    CheckInputData(recaptchaForm);
  }
  else {
    // document.location = "#recaptcha";
    // alert("reCaptcha failed: "+resultstring[0]);
    if (msgdiv)
      {
      msgdiv.className = "rc_error";
      msgdiv.innerHTML = recaptchaErrMsg;
      }
    Recaptcha.reload();
  }
}

/**
 * Post the form to recaptcha for validation.
 * @param theform The recaptcha form element.
 */
function checkcaptcha(theform) {
  if (theform == undefined) {
    alert("recaptcha.js arg required!");
    return false;
  }
  recaptchaForm = theform;
  xmlhttpPost("/section/captcha");
  return false;
}

