     function checkform(of)
     {
		if ( document.myform.company.value == 'unknown' ) {
			document.myform.company.value = ''
		}
	 	if ( document.myform.email.value.match( /\b(earthlink.net|msn.com|aol.com|hotmail.com|gmail.com|mac.com|me.com|mailinator.com|live.com|ymail.com|lycos.com|excite.com)\b/i ) ) {
			var pmail= confirm ( "In order to more easily contact you, GuardianEdge requests that you use a company email when filling out this form. Press OK to adjust your email address or CANCEL to ignore this message." );
			if (pmail== true) { return false; } else { }
		}
     // Test if DOM is available and there is an element called required
       if(!document.getElementById || !document.createTextNode){return;}
       if(!document.getElementById('required')){return;}

     // Define error messages and split the required fields
       var errorID='errormsg';
       var errorClass='error'
       var errorMsg='Please enter or change the field smarked with a ';
 /* changes for linked list */
       //var errorMsg='Please enter or change the following fields:';
 /* end changes for linked list */
       var errorImg='/images/common/alert.gif';
       var errorAlt='Error';
       var errorTitle='This field has an error!';
       var reqfields=document.getElementById('required').value.split(',');

     // Cleanup old mess
       // if there is an old errormessage field, delete it
       if(document.getElementById(errorID))
       {
         var em=document.getElementById(errorID);
         em.parentNode.removeChild(em);
       }
       // remove old images and classes from the required fields
       for(var i=0;i<reqfields.length;i++)
       {
         var f=document.getElementById(reqfields[i]);
         if(!f){continue;}
         if(f.previousSibling && /img/i.test(f.previousSibling.nodeName))
         {
           f.parentNode.removeChild(f.previousSibling);
         }
         f.className='';
       }
     // loop over required fields
       for(var i=0;i<reqfields.length;i++)
       {
     // check if required field is there
         var f=document.getElementById(reqfields[i]);
         if(!f){continue;}
     // test if the required field has an error,
     // according to its type
         switch(f.type.toLowerCase())
         {
           case 'text':
             if(f.value=='' && f.id!='email'){cf_adderr(f)}
     // email is a special field and needs checking
             if(f.id=='email' && !cf_isEmailAddr(f.value)){cf_adderr(f)}
           break;
           case 'textarea':
             if(f.value==''){cf_adderr(f)}
           break;
           case 'checkbox':
             if(!f.checked){cf_adderr(f)}
           break;
           case 'select-one':
             if(!f.selectedIndex && f.selectedIndex==0){cf_adderr(f)}
           break;
         }
       }
       return !document.getElementById(errorID);

       /* Tool methods */
       function cf_adderr(o)
       {
         // create image, add to and colourise the error fields
         var errorIndicator=document.createElement('img');
         errorIndicator.alt=errorAlt;
         errorIndicator.src=errorImg;
         errorIndicator.title=errorTitle;
         o.className=errorClass;
         o.parentNode.insertBefore(errorIndicator,o);

       // Check if there is no error message
         if(!document.getElementById(errorID))
         {
         // create errormessage and insert before submit button
           var em=document.createElement('div');
           em.id=errorID;
           var newp=document.createElement('p');
           newp.appendChild(document.createTextNode(errorMsg))
           em.appendChild(newp);
           // clone and insert the error image
                     newp.appendChild(errorIndicator.cloneNode(true));
 /* added for linked list */
           //var newul=document.createElement('ul');
           //em.appendChild(newul);
 /* end added for linked list */
           // find the submit button
           for(var i=0;i<of.getElementsByTagName('input').length;i++)
           {
             if(/image/i.test(of.getElementsByTagName('input')[i].type))
             {
               var sb=of.getElementsByTagName('input')[i];
               break;
             }
           }
           if(sb)
           {
             sb.parentNode.insertBefore(em,sb);
           }
         }
 /* added for linked list */
//          var em=document.getElementById(errorID).getElementsByTagName('ul')[0];
//          var newli=document.createElement('li');
//          var newa=document.createElement('a');
//          for(var i=0;i<of.getElementsByTagName('label').length;i++)
//          {
//            if(of.getElementsByTagName('label')[i].htmlFor==o.id)
//            {
//              var txt=of.getElementsByTagName('label')[i].firstChild.nodeValue;
//              break;
//            }
//          }
//
//          newa.appendChild(document.createTextNode(txt));
//          newa.href='#'+f.id;
//          newa.onclick=function()
//          {
//            var loc=this.href.match(/#(\w.+)/)[1];
//            document.getElementById(loc).focus();
//            return false;
//          }
//          newli.appendChild(newa);
//          em.appendChild(newli);
 /* end added for linked list */
       }
       function cf_isEmailAddr(str)
       {
           return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
       }
    }