function validate(groups, cssclass, scrolling)
{
   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.focus();
   if (first && scrolling) scroll.toElement(first);
   return flag;
}

function e(id)
{
  return document.getElementByID(id);
}

function resizeIFrame(el)
{
   var ifh = el.height;
   var bh = document.body.scrollHeight;
   var dh = document.documentElement.scrollHeight;
   if (bh > 0 && dh > 0) el.height = (bh != ifh) ? bh : dh;
}

function parseSiteURL( strURL )
{
   if ( strURL == '#' ) return strURL;
   var s = strURL.replace(/[^a-zA-Z0-9-\.]/g,'-');
   return s.toLowerCase();
}

function setCookie(name, value, expires, path, domain, secure)
{
  expires instanceof Date ? expires = expires.toGMTString() : typeof(expires) == 'number' && (expires = (new Date(+(new Date) + expires * 1e3)).toGMTString());
  var r = [name + '=' + escape(value)], s, i;
  for(i in s = {expires: expires, path: path, domain: domain})
    s[i] && r.push(i + '=' + s[i]);
  return secure && r.push('secure'), document.cookie = r.join(';'), true;
}

function getCookie(name)
{
  var cookie = " " + document.cookie;
  var search = " " + name + "=";
  var setStr = null;
  var offset = 0;
  var end = 0;
  if (cookie.length > 0)
  {
    offset = cookie.indexOf(search);
    if (offset != -1)
    {
      offset += search.length;
      end = cookie.indexOf(";", offset)
      if (end == -1)
        end = cookie.length;
      setStr = unescape(cookie.substring(offset, end));
    }
  }
  return(setStr);
}

function trim(str, charlist)
{
  charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
  var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');
  return str.replace(re, '');
}

function intval( mixed_var, base )
{
  var tmp;
  if( typeof( mixed_var ) == 'string' )
  {
    tmp = parseInt(mixed_var);
    if(isNaN(tmp))
      return 0;
    else
      return tmp.toString(base || 10);
  }
  else if( typeof( mixed_var ) == 'number' )
    return Math.floor(mixed_var);
  else
    return 0;
}

function selectAll(id, classname, parent)
{
  // Tree
  $$('input').each(function(item){
    if (item.className == (classname + id))
      item.checked = $(parent + id).checked;
  });
}
function expandData(id, parent, child)
{
  if ($(child + id)) $(child + id).display();
  if ($(parent + id)) $(parent + id).toggleClass('ButtonRound2Right');
}

function expandActivities(id, parent, child)
{
  $(parent + id).toggleClass('ButtonRound2Right');
  $$('ul').each(function(item){
    if ((item.className.substr(7)) == (child + id))
      item.display();
  });
}

function expandActivities2(parent, child)
{
  $(parent).toggleClass('ButtonRound2Right');
  $$('ul').each(function(item){
    if ((item.className.substr(7)) == (child))
      item.display();
  });
}

var isIE = (document.all) ? 1 : 0;
function keyFilter(e, strPattern)
{
  var chr = (isIE) ? e.keyCode : e.which;
  var ch = String.fromCharCode(chr);
  if (chr != 13 && chr != 8 && chr != 0)
  {
    var re = new RegExp(strPattern);
    if (ch.search(re) == -1)
    {
      if(isIE)
        e.returnValue = false;
      else
        e.preventDefault();
    }
  }
}

function getAbsolutePos(el)
{
  var r = { x: el.offsetLeft, y: el.offsetTop };
  if (el.offsetParent)
  {
    var tmp = getAbsolutePos(el.offsetParent);
    r.x += tmp.x;
    r.y += tmp.y;
  }
  return r;
}

function myRound (val, precision)
{
  return parseFloat(val).toFixed(precision);
}

function convCtoF(tC)
{
  return myRound(tC * 9 / 5 + 32, 0);
}

function convFtoC(tF)
{
  return myRound((tF - 32) * 5 / 9, 0);
}

function convINtoMM(vIN)
{
  return myRound(vIN * 25.4, 2);
}

function convMMtoIN(vMM)
{
  return myRound(vMM / 25.4, 2);
}

function changeTemperature(id)
{
  for (i = 1; i <= 12; i++)
  {
    $(id + '_high_' + i).display();
    $(id + '_highf_' + i).display();
    $(id + '_low_' + i).display();
    $(id + '_lowf_' + i).display();
  }
  $(id + '_c').toggleClass('bold');
  $(id + '_f').toggleClass('bold');
}
function changeRain(id)
{
  for (i = 1; i <= 12; i++)
  {
    $(id + '_rain_' + i).display();
    $(id + '_rainm_' + i).display();
  }
  $(id + '_in').toggleClass('bold');
  $(id + '_mm').toggleClass('bold');
}


