function validate(groups, cssclass)
{
  var first, flag = validators.isValid(groups);
  for (var cid in validators.results)
  {
    if ($type(validators.results[cid]) != 'number') continue;
    if (validators.results[cid]) $(cid).removeClass(cssclass);
    else
    {
      if (!first) first = $(cid);
      $(cid).addClass(cssclass);
    }
  }
  if (first && first.style.display != 'none')
  {
    if (valscroll) valscroll.toElement(first);
    else first.focus();
  }
  return flag;
}

function validateNoScroll(groups, cssclass)
{
  var first, flag = validators.isValid(groups);
  for (var cid in validators.results)
  {
    if ($type(validators.results[cid]) != 'number') continue;
    if (validators.results[cid]) $(cid).removeClass(cssclass);
    else
    {
      if (!first) first = $(cid);
      $(cid).addClass(cssclass);
    }
  }
  return flag;
}

function novalid(el, cssclass)
{
  if (!cssclass) cssclass = 'valinput';
  if ($(el))
  {
    $(el).addClass(cssclass);
    valscroll.toElement($(el));
  }
  return false;
}
function valid(el, cssclass)
{
  if (!cssclass) cssclass = 'valinput';
  if ($(el)) $(el).removeClass(cssclass);
  return false;
}
function createURL(value)
{
  return trim(value).toLowerCase().replace(/(\s)+/g, " ").replace(/[^a-z0-9-]+/g, "-").replace(/(-)+/g, "-");
}
function trim(str)
{
  return str.replace(/^\s+|\s+$/g, '');
}
function done(el, redirect, text, cssclass)
{
  if (!el) el = 'btns';
  if (!$(el)) return false;
  if (!text) text = 'Done';
  if (!cssclass) cssclass = 'done';
  $(el).innerHTML = '<span class="'+cssclass+'">'+text+'</span>';
  if (redirect) setInterval(function(){window.location.assign(redirect)}, 2000);
  return false;
}

