                function checkform(of)
                {
                // 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 fields marked with a ';
                        var errorImg='images/alert.gif';
                        var errorAlt='Error:   ';
                        var errorTitle='This field has an error!';
                        var reqfields=document.getElementById('required').value.split(',');
                        var haserr;

                        // 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,
                                switch(f.type.toLowerCase())
                                {
                                        case 'text':
                                        // email field needs checking
                                        if(f.id=='email' && !cf_isEmailAddr(f.value)){cf_adderr(f)}
                                        break;
                                }
                        }
                        if(haserr){
                          return false;
                        } else{
                          return true;
                        }


                        function cf_adderr(o)
                        {
                        // create image, and add color to 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))
                                {
                                //  Error
                                haserr=true;
                                }
                        }
                        function cf_isEmailAddr(str)
                        {
                            return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
                        }
                }
