var Warning = '';

function CheckForm(Form)
{
  var returnValue = true;
  Warning = 'The following fields are empty or invalid:\n\n';
  
  
  var requiredFields = Array();
  requiredFields['name']      = true;
  requiredFields['fname']     = true;
  requiredFields['lname']     = true;
  requiredFields['address']   = true;
  requiredFields['pc']        = true;
  requiredFields['city']      = true;
  requiredFields['tel']       = true;
  requiredFields['email']     = true;
  requiredFields['login']     = true;
  requiredFields['password']  = true;
  
  for (i=0; i < Form.elements.length; i++)
  {        
    if (requiredFields[Form.elements[i].name] && Form.elements[i].value == '' )
    {
      Warning += ' - ' + Form.elements[i].name + '\n';
      returnValue = false;
    }
    else if (Form.elements[i].name == 'email')
    {
      returnValue = CheckEmail(Form.elements[i].value);
    }
    else if (Form.elements[i].name == 'pc')
    {
      Form.elements[i].value = Form.elements[i].value.toUpperCase();
    }
    else if (Form.elements[i].name == 'tel')
    {
      returnValue = CheckNumber(Form.elements[i].value, 'Tel');
    }
    else if (Form.elements[i].name == 'fax')
    {
      returnValue = CheckNumber(Form.elements[i].value, 'Fax');
    }
    
  }
  
  if (!returnValue) alert(Warning);

  return returnValue;
}

function CheckNumber(number, type)
{
  var returnValue = true;
  var AllowedChars = "0123456789-";
  
  for (var i=0; i < number.length; i++)
    if( AllowedChars.indexOf(number.charAt(i)) == -1)  returnValue = false;      
      
  
  if (!returnValue) Warning += ' - '+type+'number "'+ number +'" is not a valid number\n';
  
  return returnValue;
}


DomainExtension = new Array();
DomainExtension['a'] = true;
DomainExtension['ac'] = true;
DomainExtension['ad'] = true;
DomainExtension['ae'] = true;
DomainExtension['af'] = true;
DomainExtension['ag'] = true;
DomainExtension['ai'] = true;
DomainExtension['al'] = true;
DomainExtension['am'] = true;
DomainExtension['an'] = true;
DomainExtension['ao'] = true;
DomainExtension['aq'] = true;
DomainExtension['ar'] = true;
DomainExtension['as'] = true;
DomainExtension['at'] = true;
DomainExtension['au'] = true;
DomainExtension['aw'] = true;
DomainExtension['az'] = true;
DomainExtension['ba'] = true;
DomainExtension['bb'] = true;
DomainExtension['bd'] = true;
DomainExtension['be'] = true;
DomainExtension['bf'] = true;
DomainExtension['bg'] = true;
DomainExtension['bh'] = true;
DomainExtension['bi'] = true;
DomainExtension['biz'] = true;
DomainExtension['bj'] = true;
DomainExtension['bm'] = true;
DomainExtension['bn'] = true;
DomainExtension['bo'] = true;
DomainExtension['br'] = true;
DomainExtension['bs'] = true;
DomainExtension['bt'] = true;
DomainExtension['bv'] = true;
DomainExtension['bw'] = true;
DomainExtension['by'] = true;
DomainExtension['bz'] = true;
DomainExtension['ca'] = true;
DomainExtension['cc'] = true;
DomainExtension['cf'] = true;
DomainExtension['cg'] = true;
DomainExtension['ch'] = true;
DomainExtension['ci'] = true;
DomainExtension['ck'] = true;
DomainExtension['cl'] = true;
DomainExtension['cm'] = true;
DomainExtension['cn'] = true;
DomainExtension['co'] = true;
DomainExtension['com'] = true;
DomainExtension['cr'] = true;
DomainExtension['cs'] = true;
DomainExtension['cu'] = true;
DomainExtension['cv'] = true;
DomainExtension['cx'] = true;
DomainExtension['cy'] = true;
DomainExtension['cz'] = true;
DomainExtension['de'] = true;
DomainExtension['dj'] = true;
DomainExtension['dk'] = true;
DomainExtension['dm'] = true;
DomainExtension['do'] = true;
DomainExtension['dz'] = true;
DomainExtension['ec'] = true;
DomainExtension['edu'] = true;
DomainExtension['ee'] = true;
DomainExtension['eg'] = true;
DomainExtension['eh'] = true;
DomainExtension['er'] = true;
DomainExtension['es'] = true;
DomainExtension['et'] = true;
DomainExtension['eu'] = true;
DomainExtension['fi'] = true;
DomainExtension['fj'] = true;
DomainExtension['fk'] = true;
DomainExtension['fm'] = true;
DomainExtension['fo'] = true;
DomainExtension['fr'] = true;
DomainExtension['fx'] = true;
DomainExtension['ga'] = true;
DomainExtension['gb'] = true;
DomainExtension['gd'] = true;
DomainExtension['ge'] = true;
DomainExtension['gf'] = true;
DomainExtension['gh'] = true;
DomainExtension['gi'] = true;
DomainExtension['gl'] = true;
DomainExtension['gm'] = true;
DomainExtension['gn'] = true;
DomainExtension['gov'] = true;
DomainExtension['gp'] = true;
DomainExtension['gq'] = true;
DomainExtension['gr'] = true;
DomainExtension['gs'] = true;
DomainExtension['gt'] = true;
DomainExtension['gu'] = true;
DomainExtension['gw'] = true;
DomainExtension['gy'] = true;
DomainExtension['hk'] = true;
DomainExtension['hm'] = true;
DomainExtension['hn'] = true;
DomainExtension['hr'] = true;
DomainExtension['ht'] = true;
DomainExtension['hu'] = true;
DomainExtension['id'] = true;
DomainExtension['ie'] = true;
DomainExtension['il'] = true;
DomainExtension['in'] = true;
DomainExtension['info'] = true;
DomainExtension['io'] = true;
DomainExtension['iq'] = true;
DomainExtension['ir'] = true;
DomainExtension['is'] = true;
DomainExtension['it'] = true;
DomainExtension['jm'] = true;
DomainExtension['jo'] = true;
DomainExtension['jp'] = true;
DomainExtension['ke'] = true;
DomainExtension['kg'] = true;
DomainExtension['kh'] = true;
DomainExtension['ki'] = true;
DomainExtension['km'] = true;
DomainExtension['kn'] = true;
DomainExtension['kp'] = true;
DomainExtension['kr'] = true;
DomainExtension['ku'] = true;
DomainExtension['ky'] = true;
DomainExtension['kz'] = true;
DomainExtension['la'] = true;
DomainExtension['lb'] = true;
DomainExtension['lc'] = true;
DomainExtension['li'] = true;
DomainExtension['lk'] = true;
DomainExtension['lr'] = true;
DomainExtension['ls'] = true;
DomainExtension['lt'] = true;
DomainExtension['lu'] = true;
DomainExtension['lv'] = true;
DomainExtension['ly'] = true;
DomainExtension['ma'] = true;
DomainExtension['mc'] = true;
DomainExtension['md'] = true;
DomainExtension['mg'] = true;
DomainExtension['mh'] = true;
DomainExtension['mil'] = true;
DomainExtension['mk'] = true;
DomainExtension['ml'] = true;
DomainExtension['mm'] = true;
DomainExtension['mn'] = true;
DomainExtension['mo'] = true;
DomainExtension['mp'] = true;
DomainExtension['mq'] = true;
DomainExtension['mr'] = true;
DomainExtension['ms'] = true;
DomainExtension['mt'] = true;
DomainExtension['mu'] = true;
DomainExtension['mv'] = true;
DomainExtension['mw'] = true;
DomainExtension['mx'] = true;
DomainExtension['my'] = true;
DomainExtension['mz'] = true;
DomainExtension['na'] = true;
DomainExtension['nc'] = true;
DomainExtension['ne'] = true;
DomainExtension['net'] = true;
DomainExtension['nf'] = true;
DomainExtension['ng'] = true;
DomainExtension['ni'] = true;
DomainExtension['nl'] = true;
DomainExtension['no'] = true;
DomainExtension['np'] = true;
DomainExtension['nr'] = true;
DomainExtension['nt'] = true;
DomainExtension['nu'] = true;
DomainExtension['nz'] = true;
DomainExtension['om'] = true;
DomainExtension['org'] = true;
DomainExtension['pa'] = true;
DomainExtension['pe'] = true;
DomainExtension['pf'] = true;
DomainExtension['pg'] = true;
DomainExtension['ph'] = true;
DomainExtension['pk'] = true;
DomainExtension['pl'] = true;
DomainExtension['pm'] = true;
DomainExtension['pn'] = true;
DomainExtension['pr'] = true;
DomainExtension['pt'] = true;
DomainExtension['pw'] = true;
DomainExtension['py'] = true;
DomainExtension['qa'] = true;
DomainExtension['re'] = true;
DomainExtension['ro'] = true;
DomainExtension['ru'] = true;
DomainExtension['rw'] = true;
DomainExtension['sa'] = true;
DomainExtension['sb'] = true;
DomainExtension['sc'] = true;
DomainExtension['sd'] = true;
DomainExtension['se'] = true;
DomainExtension['sg'] = true;
DomainExtension['sh'] = true;
DomainExtension['si'] = true;
DomainExtension['sj'] = true;
DomainExtension['sk'] = true;
DomainExtension['sl'] = true;
DomainExtension['sm'] = true;
DomainExtension['sn'] = true;
DomainExtension['so'] = true;
DomainExtension['sr'] = true;
DomainExtension['st'] = true;
DomainExtension['su'] = true;
DomainExtension['sv'] = true;
DomainExtension['sy'] = true;
DomainExtension['sz'] = true;
DomainExtension['tc'] = true;
DomainExtension['td'] = true;
DomainExtension['tf'] = true;
DomainExtension['tg'] = true;
DomainExtension['th'] = true;
DomainExtension['tj'] = true;
DomainExtension['tk'] = true;
DomainExtension['tm'] = true;
DomainExtension['tn'] = true;
DomainExtension['to'] = true;
DomainExtension['tp'] = true;
DomainExtension['tr'] = true;
DomainExtension['tt'] = true;
DomainExtension['tv'] = true;
DomainExtension['tw'] = true;
DomainExtension['tz'] = true;
DomainExtension['ua'] = true;
DomainExtension['ug'] = true;
DomainExtension['uk'] = true;
DomainExtension['um'] = true;
DomainExtension['us'] = true;
DomainExtension['uy'] = true;
DomainExtension['uz'] = true;
DomainExtension['va'] = true;
DomainExtension['vc'] = true;
DomainExtension['ve'] = true;
DomainExtension['vg'] = true;
DomainExtension['vi'] = true;
DomainExtension['vn'] = true;
DomainExtension['vu'] = true;
DomainExtension['wf'] = true;
DomainExtension['ws'] = true;
DomainExtension['ye'] = true;
DomainExtension['yt'] = true;
DomainExtension['yu'] = true;
DomainExtension['za'] = true;
DomainExtension['zm'] = true;
DomainExtension['zr'] = true;
DomainExtension['zw'] = true;

function CheckEmail(email)
{
  // The maximum total length of a user name or other local-part is 64 characters.
  // The maximum total length of a domain name or number is 255 characters.  
  // Valid characters are A through Z, 0 through 9, and hyphen (-)
  
  var msg = ' - "' + email + '" is not a valid email address\n';
  var returnValue = true;

  var emailParts  = email.split('@');
  if (emailParts.length > 1) var domainParts = emailParts[1].split('.');

  if      (emailParts.length == 1)                                returnValue = false; // this is not an email address at all
  else if (emailParts[0].length > 64)                             returnValue = false; // exceeds user name length
  else if (emailParts[1].length > 255)                            returnValue = false; // exceeds domain name length
  else if (domainParts.length == 1)                               returnValue = false; // there is no 'dot'
  else if (!DomainExtension[domainParts[domainParts.length-1]])   returnValue = false; // Domain Extension doesn't exists
  
  // it passes the simple test, now take a closer look
  var allowedChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.@";
  
  for (var i=0; i < email.length; i++)
    if( allowedChars.indexOf(email.charAt(i)) == -1)              returnValue = false; // character used not allowed

  if (!returnValue) Warning += msg; // issue warning

  return returnValue;
}


