/*******************************************************************************
    Verify form items
    $Rev: 210 $   $Id: form.js 210 2006-07-30 16:01:44Z hanjy $
    Copyright(C) 2001, 2006 Han-soft Software. All rights reserved.
*******************************************************************************/

/* Form CSS 

.form_caption {
  font-family: "Verdana", "Arial", "Helvetica", "sans-serif";
  font-size: 10px;
}

.form_hint {
  font-family: "Verdana", "Arial", "Helvetica", "sans-serif";
  font-size: 10px;
  font-weight: bold;
  color: #FF0000;
  display: none;
}

.form_text {
  font-family: "Verdana", "Arial", "Helvetica", "sans-serif";
  font-size: 10px;
  width: 100%;
}

*/

// Verify defination ===========================================================

var required_suffix          = '_req';     // Required property: required

var test_suffix              = '_test';    // Email property: email

var change_element_color     = false;
var element_error_color      = '#FFDDDD';
var element_normal_color     = '';

var caption_suffix           = '_cap';     // Id of caption tag: FieldName_cap
var change_caption_color     = true;
var bold_caption_font        = true;
var caption_error_color      = "4A5966";
var caption_normal_color     = "";

var background_suffix        = '_bg';      // Id of background tag: FieldName_bg
var change_background_color  = true;
var background_error_color   = '#FFD0D0';
var background_normal_color  = '';

var server_hint              = 'svr_hint'; // Id of server respond string

var common_hint              = 'com_hint'; // Id of common hint string


// Strings functions ===========================================================

function empty_str(str) {
  for (var i = 0; i < str.length; i++) {
    var ch = str.charAt(i);
    if ((ch != ' ') && (ch != '\n') && (ch != '\r') && (ch != '\t'))
      return false;
  }
  return true;
}

function trim(str) {
  var find = false;
  var lresult = '';
  for (var i = 0; i < str.length; i++) {
    var ch = str.charAt(i);
    if (find || ((ch != ' ') && (ch != '\n') && (ch != '\r') && (ch != '\t'))) {
      lresult = lresult + ch;
      find = true;
    }
  }
  find = false;
  var result = '';
  for (var i = lresult.length - 1; i >= 0; i--) {
    var ch = lresult.charAt(i);
    if (find || ((ch != ' ') && (ch != '\n') && (ch != '\r') && (ch != '\t'))) {
      result = ch + result;
      find = true;
    }
  }
  return result;
}

function isempty(ele) {
  return ((ele.value == "") || (ele.value == null) || empty_str(ele.value))
}

function ismatched(str, partten) {
  var pat = new RegExp(partten);
  return pat.test(trim(str));
}


// Elements functions ==========================================================

function highlightelement(ele, hint_suffix)
{
  // Highlight element
    if (change_element_color) ele.style.backgroundColor = element_error_color;
        
  // Highlight caption
  if (document.getElementById(ele.name + caption_suffix)) {
      if (bold_caption_font)
      document.getElementById(ele.name + caption_suffix).style.fontWeight =
        "bold";
      if (change_caption_color)
      document.getElementById(ele.name + caption_suffix).style.color =
        caption_error_color;
    }
  
  // Highlight background
    if (change_background_color &&
    (document.getElementById(ele.name + background_suffix)))
    document.getElementById(ele.name +
      background_suffix).style.backgroundColor = background_error_color;

  // Highlight element hint
  if (document.getElementById(ele.name + hint_suffix))
    document.getElementById(ele.name + hint_suffix).style.display = "inline";

  // Highlight common hint
  if (document.getElementById(common_hint))
    document.getElementById(common_hint).style.display = "inline";

  ele.focus();
}
                        
function  resetelement(ele, hint_suffix)
{
  // Reset element
  if (change_element_color) ele.style.backgroundColor = element_normal_color;
    
  // Reset caption
  if (document.getElementById(ele.name + caption_suffix)) {
    if (bold_caption_font)
      document.getElementById(ele.name + caption_suffix).style.fontWeight =
        "normal";
    if (change_caption_color)
      document.getElementById(ele.name + caption_suffix).style.color =
        caption_normal_color;
    }

  // Reset background
  if (change_background_color &&
    (document.getElementById(ele.name + background_suffix)))
    document.getElementById(ele.name +
      background_suffix).style.backgroundColor = background_normal_color;

  // Reset element hint
  if (document.getElementById(ele.name + hint_suffix))
    document.getElementById(ele.name + hint_suffix).style.display = "none";
}

function resetall(frm) {

  // Reset server hint
  if (document.getElementById(server_hint)) 
    document.getElementById(server_hint).style.display = "none";

  // Reset common hint
  if (document.getElementById(common_hint)) 
    document.getElementById(common_hint).style.display = "none";
        
  for (var i = 0; i < frm.elements.length; i++) {

    // Reset required hint
    if (frm.elements[i].required)
      resetelement(frm.elements[i], required_suffix);

    // Reset test hint
    if (frm.elements[i].test)
      resetelement(frm.elements[i], test_suffix);
  }

  if (frm.elements[0]) frm.elements[0].focus();
  return true;

}


// Public functions ============================================================

function test(condition, element, hint_suffix) {
  if(!condition)
    highlightelement(element, hint_suffix);
  else
    resetelement(element, hint_suffix);
  return condition;
}

function verify(frm) 
{
  var res = true;
  resetall(frm);
  for (var i = frm.elements.length - 1; i >= 0; i--) {
    if ((frm.elements[i].type=="text")||(frm.elements[i].type=="textarea")) {
      if ((frm.elements[i].required) && isempty(frm.elements[i])) {
        highlightelement(frm.elements[i], required_suffix);
        res = false;
      } else if ((frm.elements[i].test) && !ismatched(frm.elements[i].value,
        frm.elements[i].partten)) {
        highlightelement(frm.elements[i], test_suffix);
        res = false;
      }
    }
  }
  return res;
}
                
function resetform(frm) {
  resetall(frm);
  for (var i = 0; i < frm.elements.length; i++) {
    if ((frm.elements[i].type=="text")||(frm.elements[i].type=="textarea"))
      frm.elements[i].value = "";
  }
  return false;
}
                
function defaultfocus()
{
  var i = 0;

  //For PayPal Donate Button
  if ((document.forms[i]) && (document.forms[i].name == '')) i++;

  if (document.forms[i] && document.forms[i].elements[0])
    document.forms[i].elements[0].focus();
}


// End =========================================================================

