/* javascript functions for application */

   function getvalue(f,ename)
   {
      var etype = f[ename].type;

      if( !etype ) etype = gettype(f,ename);

      // for multiple -- one of the values -- for checks

      var ret;
      if( etype=='text' ) ret =  f[ename].value;
      else if( etype=='textarea' ) ret = f[ename].value;
      else if( etype=='radio' || etype=='checkbox') 
      {
         var a = f[ename];
         if( a.length==null )
         {
               if( a.checked ) ret = a.value;
         }
         else
         {
            var i;
            for(i=0;i<a.length;i++)
            {
               if( a[i].checked ) ret = a[i].value;
            }
        }
      }
      if( etype=='select-one' || etype=='select-multiple' )
      {
         var a = f[ename];
         var i;
         for(i=0;i<a.length;i++)
         {
            if( a[i].value == 'null' ) continue;
            if( a[i].selected ) ret = a[i].value;
         }
      }

      if (ret == null || ret.length==0 ||  ret == undefined ) return(null);
      return(ret);
   }

   function check_range_int(f,fname,n0,n1)
   {
      var v = getvalue(f,fname);
      if( v == null ) return(''); // return(alertname(fname) + ' is null');
      var vn = parseInt(v);
      var s  = '';
      if( isNaN(vn) ) return( alertname(fname) + ' is not a number'); 
      if( isNaN(n0) && isNaN(n1) ) return(''); // no checks
      if( vn < n0 ) s += alertname(fname) + ' can not be less than ' + n0 + '; ';
      if( vn > n1 ) s += alertname(fname) + ' can not be more than ' + n1 + '; ';
      return(s);
   }

   function check_range_float(f,fname,n0,n1)
   {
      var v = getvalue(f,fname);
      if( v == null ) return(''); // return(alertname(fname) + ' is null');
      var vn = parseFloat(v);
      var s  = '';
      if( isNaN(vn) ) return( alertname(fname) + ' is not a number'); 
      if( isNaN(n0) && isNaN(n1) ) return(' no checks '); // no checks
      if( vn < n0 ) s += alertname(fname) + ' can not be less than ' + n0 + '; ';
      if( vn > n1 ) s += alertname(fname) + ' can not be more than ' + n1 + '; ';
      return(s);
   }

   function gettype(f,ename)
   {
      var i = 0; for(i=0;i<f.elements.length;i++)
      {
         if( f.elements[i].name==ename ) return(f.elements[i].type);
      }
      ;
   }

   function check_rq(f,ename)
   {
      var v = getvalue(f,ename);
      if( v==null) return(alertname(ename) + ' should be specified');
      return('');
   }

   function check_psw(f,ename)
   {
      var v = getvalue(f,ename);
      if( v == null ) return(''); 
      if((v.length<5))  return("Password  ("+alertname(ename)+") is too short");
      return('');
   }
   function check_email(f,ename)
   {
      var v = getvalue(f,ename); 
      if( v == null ) return(''); 
      var rr2 = /^[^@]+@[^\.]+\.[^\.]+$/;
      var rr3 = /^[^@]+@[^\.]+\.[^\.]+\.[^\.]+$/;
      
      if( v.match(rr2) ) return('');
      if( v.match(rr3) ) return('');
      return("'"+alertname(ename)+"'" + ' is not an email address');
   }
   function check_len(f,ename,maxlen)
   {
      var L = f[ename].value.length;
      if( L > maxlen ) return(alertname(ename) + ' is too long');
      return('');
   }

