var clickedOnce = false;
var formId = "";
var waitId = "wait";

function registerForm(id) {
   formId = id;
}

function setFormToken(tokenWsUrl) {
   if (!formId || formId == "") return;
   if (!tokenWsUrl || tokenWsUrl == "") return;

   var email = $('#email').val();
   var password = $('#password').val();
   var passconf = $('#passconf').val();

   if (isEmpty(email) || isEmpty(password) || isEmpty(passconf)) {
      submitForm();
      return;
   }

   var url = tokenWsUrl + "register?email=" + escape(email) + "&password=" + escape(password) + "&passconf=" + escape(passconf);
   $.getJSON(url + "&callback=?");
}

function processToken(jsonObj) {
   if (jsonObj && !isEmpty(jsonObj.token)) {
      // set token to form
      $('#' + formId + ' #token').val(jsonObj.token);
   }

   submitForm();
}

function submitForm() {
   if (clickedOnce) return false;
   if (!formId || formId == "") return false;
   clickedOnce = true;
   if (window.processPicture && processPicture()) return false;
   processForm();
   showWait();
}

function processForm() {
   if (!formId || formId == "") return;
   var f = element(formId);
   if (f) f.submit();
}

function showWait() {
   setClass(waitId, "visible");
}

function hideWait() {
   setClass(waitId, "hidden");
}

function isEmpty(f) {
   return (!f || f == '');
}

/**
 * This function encodes URI elements in ISO-8859-1, replaces
 * some unicode characters that MS Word creates and removes
 * all other unicode characters that don't make sense to have 
 * in an HTML input field.
 *
 * @author at
 */
function escapeURI(val) {
   var ESCAPE_CHARS = {"%u201[89]":"\'", "%u201[CD]":"\"", "%u2013":"-", "%u0096":"-", "%u0085":"...",
       "%u2026":"...", "%u00BC":"1/4", "%u00BD":"1/2", "%u00BE":"3/4", "%u2039":"<", "%u203A":">",
       "%u20AC":"", "%u009F":"", "%u0152":"", "%u0153":""}; 

  // first escape the input with unicodes
  val = escape(val);

  // then replace all MS Word chars with correct chars
  for (var key in ESCAPE_CHARS) {
    var regex = new RegExp(key, "g");
    val = val.replace(regex, ESCAPE_CHARS[key]);
  }

  // finally unescape the input
  val = unescape(val);

  return val;
}

