

function checkLength(widget,len) {
  if(typeof(len)=='undefined') len = 1;
  if((widget.value).length >= len) {
    return true;
  } else {
    return false;
  }
}

function isAttachedFile(widget) {
  if((widget.value).length >= 1) {
    return true;
  } else {
    return false;
  }
}

function textareaCheckLength(widget,len) {
  if(typeof(len)=='undefined') len = 1;
  if(widget.value && (widget.value).length >=len) {
    return true;
  } else if((widget.innerHTML).length >= len) {
    return true;
  } else {
    return false;
  }
}

function isCheckLengthInRange(widget, minL, maxL) {
  if((widget.value).length >= minL && (widget.value).length <= maxL) {
    return true;
  } else {
    return false;
  }
}

/**
 * The second widget must be in the same form as the first one
 */
function mustMatch(widget1,widget2) {
    if(widget1.value!=widget2.value) {
        return false;
    } else {
        return true;
    }
}

function isChecked(widget) {
    if(typeof(widget.length)=='undefined') {
        if(widget.checked) return true;
    }
  var i=0;
  while(typeof(widget[i]) != "undefined") {
      if(widget[i].checked) return true;
       i++;
  }
  return false;
}

function isDate(widget) {
  var re1 = /^\d\d\/\d\d\/\d\d\d\d$/;
  return re1.test(widget.value);
}

function isDomain(widget) {
    var val = widget.value;
    var regexp1= /^[a-z\d][a-z\d\-]*[a-z\d]$/;
    var regexp2= /-{2,}/;
    if(!regexp1.test(val)) {
        return false;
    } else {
        if(regexp2.test(val)) {
            return false;
        } else {
            return true;
        }
    }
}

function isEmail(widget) {
  var re = /^\+?\w+([\+\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;

  /* object and string tests from http://www.crockford.com/javascript/remedial.html */
  if (typeof widget == 'string') // widget is a string
    return re.test(widget.toLowerCase());
  else if ((widget && typeof widget == 'object') || (typeof widget == 'function')) // widget is an object
    return re.test(widget.value.toLowerCase());
  else // we can't deal with the type of widget ...
    return false;
}

function checkEmailList(widget) {
  var i;
  var val;
  var temp = widget.value;
  // end-of-lines characters
  var re_win = /\r\n/g;
  var re_unix = /\n/g;
  var re_mac = /\r/g;
  // trim the orginal string
  while (temp.substring(0,1) == ' ') {
    temp = temp.substring(1,temp.length);
  }
  while (temp.substring(temp.length-1,temp.length) == ' ') {
    temp = temp.substring(0,temp.length-1);
  }
  temp = temp.replace(re_win,';');
  temp = temp.replace(re_mac,';');
  temp = temp.replace(re_unix,';');

  // split the string into an array of individual emails
  val = temp.split(';');
  // test each different found email
  for (i=0 ; i<val.length ; i++) {
    if (!isEmail(val[i])) return false; // not a valid email
  }
  return true;
}

function isInRange(widget, minVal, maxVal) {
   if ((widget.value >= minVal) && (widget.value <= maxVal)) {
      return true;
   } else
      return false;
}

function isDifferent(widget, val) {
   if (widget.value != val) {
      return true;
   } else
      return false;
}

function isInteger(widget) {
  return (parseInt(widget.value)==widget.value);
}

function isTelephone(widget) {
  var re = /^[ +.\(\)0-9]{6,}$/;
  return re.test(widget.value);
}
function isOrdered(widget) {
    return true;
}

function isValidDate(widget) {
    return true;
}

function isUnique(widget,arg0,arg1) {
    return true;
}

function onlyAlphaNumeric(widget) {
  var re = /^[\w\-]+$/;
  return re.test(widget.value);
}
function onlyAlphaNumericOrEmpty(widget) {
  if(widget.value=='') return true;
  var re = /^[\w\-]+$/;
  return re.test(widget.value);
}
/*
function is_text(str) {
  var re = /^[a-zA-Z0-9,\.\-_@\S\s]+$/;
  return re.test(str);
}

function is_number(str) {
  if (str.length == 0) { return false; }  // this is needed because isNaN on an empty string gives false
  str = str.replace(/,/, ".");
  return !isNaN(str);
}

function is_float(str) {
  str = str.replace(/,/, ".");
  return (parseFloat(str)==str);
}


function is_regexp(str, reg) {
  var re = new RegExp(reg);
  return re.test(str);
}
*/

function isMultiChecked(widget) {
    if(widget.selectedIndex >= 0)
        return true;
    return false;
}

function isSingleChecked(widget) {
    if(widget.selectedIndex > 0)
        return true;
    return false;
}
function isSelected(widget) {
    if(widget.selectedIndex > 0)
        return true;
    return false;
}

function isRadioChecked(widget) {
  var i=0;
  while(typeof(widget[i]) != "undefined") {
      if(widget[i].checked) return true;
       i++;
  }
  if ( (widget.type == 'radio') && (widget.checked) ) return true;
  return false;
}

function isTextChecked(widget) {
    if(widget.value != '')
        return true;
    return false;
}

function onlyNumericChars(widget) {
  var re = /^[0-9]+$/;
  return re.test(widget.value);
}

function onlyNumericCharsOrEmpty(widget) {
  if(widget.value=='') return true;
  var re = /^[0-9]+$/;
  return re.test(widget.value);
}

function onlyFloatChars(widget) {
  var re = /^[0-9.,]+$/;
  return re.test(widget.value);
}

function onlyFloatCharsOrEmpty(widget) {
  if(widget.value=='') return true;
  var re = /^[0-9.,]+$/;
  return re.test(widget.value);
}



function onlyAlphaChars(widget) {
  var re = /^[a-zA-Z]+$/;
  return re.test(widget.value);
}

function onlyAlphaCharsOrEmpty(widget) {
  if(widget.value=='') return true;
  var re = /^[a-zA-Z]+$/;
  return re.test(widget.value);
}

function zipcode(widget) {
  var re = /^[0-9]{5}$/;
  return re.test(widget.value);
}

function isYear(widget) {
  var re = /^[0-9]{4}$/;
  return re.test(widget.value);
}

function isName(widget)  {
  var re = /^[a-zA-Z-]+$/;
  return re.test(widget.value);
}

function isIdentityName(widget)  {
  return true;
}

function matchRegexp(widget, regexp)  {
    reg = new RegExp(regexp,"g");
    res = reg.test(widget.value);
    return res;
}

function notMatchRegexp(widget, regexp)  {
    res = matchRegexp(widget, regexp);
    res1 = (res==true) ? false : true;
    return res1;
}

var widgetsWithError;
function putInnerText(element, text) {
  if(widgetsWithError[element] == true) {
      if(text=="") {
          return;
      }
  }
  if(document.all) {
    document.all(element).innerText = text;
  } else {
    spanElt = document.getElementById(element);
    tempText = document.createTextNode(text);
    spanElt.replaceChild(tempText, spanElt.childNodes[0]);
  }
  if(text!="") {
    widgetsWithError[element] = true;
  }
}

