function validateAlert (id,caption,warning)
{
  if (warning != '')
    alert(warning);
  else
    alert(validateWarning.replace('[caption]',caption));

  $('#' + id)[0].focus();
}

function validateMinLength (id,name,caption,minLength)
{
  var oField = $('#' + id)[0];
  var text   = oField.value.trim();

  if (text.length < minLength)
  {
    alert(lengthWarning.replace('[caption]',caption).replace('[minLength]',minLength));
    oField.focus();

    return false;
  }

  return true;
}

function validateText (id,name,caption,warning)
{
  var oField = $('#' + id)[0];

  if (oField.value.trim() == '')
  {
    validateAlert(id,caption,warning);

    return false;
  }

  return true;
}

function validateRadio (_id,name,caption,warning)
{
  var checked = false;
  var id      = null;

  $('input[type=radio][name=' + name + ']').each(
    function ()
    {
      if (id == null)
        id = this.id;
      if (this.checked)
        checked = true;
    }
  );

  if (!checked)
  {
    validateAlert(id,caption,warning);

    return false;
  }

  return true;
}

function validateCheckbox (id,name,caption,warning)
{
  if (!$('#' + id)[0].checked)
  {
    validateAlert(id,caption,warning);

    return false;
  }

  return true;
}

function validateEMail (id,name,caption,warning)
{
  var oField  = $('#' + id)[0];
  var eMail   = oField.value.trim();

  if ((eMail == '') || !/^\S+@\S+\.[a-zA-Z]{2,}$/.test(eMail))
  {
    validateAlert(id,caption,warning);

    return false;
  }

  return true;
}

function validateAlphanumeric (id,name,caption,warning)
{
  if (!validateText(id,name,caption,warning))
    return false;

  var oField    = $('#' + id)[0];
  var text      = oField.value.trim();
  var nChars    = text.length;
  var nLetters  = text.replace(/[^a-zA-Z]/g,'').length;
  var nDigits   = text.replace(/[^\d]/g,'').length;

  if ((nChars - nLetters - nDigits) != 0)
  {
    validateAlert(id,caption,warning);

    return false;
  }

  return true;
}

function validateLargerThanZero (id,name,caption,warning)
{
  if (!validateText(id,name,caption,warning))
    return false;

  var oField = $('#' + id)[0];

  if (Number(oField.value.trim()) <= 0)
  {
    validateAlert(id,caption,warning);

    return false;
  }

  return true;
}

function checkForm (id)
{
  var jThis   = $('#' + id);
  var jSubmit = jThis.find('input[type=submit]');

  jSubmit.addClass('inactive');

  eval('var ok = checkForm_' + id + '();');

  if (!ok)
  {
    jSubmit.removeClass('inactive');
    return false;
  }

  return true;
}

function initForm (id,submitScript)
{
  if (typeof(submitScript) != 'undefined')
    $('#' + id).submit(submitScript);
  else
  {
    $('#' + id).submit(
      function (e)
      {
        if (!checkForm(this.id))
        {
          e.preventDefault();
          return false;
        }

        return true;
      }
    );
  }
}
