function check_form(form,dont_mark) {
   //return true;
   // Set colors 
   
   var error = false;
   var error_message = 'Please fill in all required fields';

   var first = -1;

   for (var i=0 ; i<form.elements.length ; i++) {
      var el = form.elements[i];
      el.value = strtrim(el.value);

      if ( el.getAttribute('required') && (!el.getAttribute('check') || form.elements[el.getAttribute('check')].checked || form.elements[el.getAttribute('check')].value!='') ){ 
      
         var this_error = false;
         
         switch(el.type) {
            case 'checkbox':
            case 'radio':
               var this_name = el.name;
               var none_checked = true;
               for (var j=0; j<form.elements.length ; j++) {
                  if(form.elements[j].name==this_name && form.elements[j].checked) {
                     none_checked = false;
                  }
               }
               if (none_checked) {
                  this_error = true;
               }
            break;
               
            default:
            
               if (   el.value==''   ||   ( el.getAttribute('pattern') && !el.value.match(RegExp(el.getAttribute('pattern'),"i")) )   ){
                  if (el.getAttribute('visible')) {
                     var state_element = document.getElementById(el.getAttribute('visible'));
                     if (!state_element || state_element.style.display!='none') {
                        this_error = true;
                     }
                  }
                  else if (el.getAttribute('checkelement') && el.getAttribute('checkvalue')) {
                     var check_element = form.elements[el.getAttribute('checkelement')];
                     var check_value = el.getAttribute('checkvalue');
                     if (check_element.value==check_value) {
                        this_error = true;
                     }
                  }         
                  else {
                     this_error = true;
                  }
               }
               else if (el.getAttribute('equal')) {
                  var equal_element = form.elements[el.getAttribute('equal')];
                  if (equal_element.value!=el.value) {
                     this_error = true;
                     var equal_parent = equal_element.parentNode;
                  }
               }
         }

         if(this_error) {
            error = true;
            if (first == -1) {
               first = i;
            }         
         }
      }
   }
   if (error) {
      alert(error_message);
      if (first > -1) {
         form.elements[first].focus();
      }
      return false;
   }
   else {
      return true;   
   }

}


function strtrim(str) {
   return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}


