function check_form(form,dont_mark) {
   //return true;
   // Set colors 
   
   var error = false;
   var error_message = 'Veuillez remplir tous les champs obligatoires';
   var msg_wait = "Attende...";

   var first = -1;
   var to_color = new Array;
   var to_disable = new Array;   

   for (var i=0 ; i<form.elements.length ; i++) {
      var el = form.elements[i];
      if (el.type=='submit') {
         to_disable.push(el);      
      }
      else if ( el.getAttribute('required') && (!el.getAttribute('check') || form.elements[el.getAttribute('check')].checked) ){ 
      
         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 {
                     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 (!dont_mark) {
                        to_color.push(equal_parent);
                     }
                  }
               }
         }
                                         
         var parent_node = el.parentNode;
         if(this_error) {
            error = true;
            if (first == -1) {
               first = i;
            }         
            if (!dont_mark) {
               to_color.push(parent_node);
            }
         }
         else {
            if (!dont_mark) {
               parent_node.className = '';         
            }
         }                
      }
   }
   var message_area = document.getElementById('message_area');
   if (error) {
      for (var i=0 ; i<to_color.length ; i++) {
         to_color[i].className = 'mark';
      }
      if (message_area && !dont_mark) {
         message_area.innerHTML = error_message;
         message_area.style.display = 'block';
      }
      else {
         alert(error_message);
      }
      if (first > -1) {
         form.elements[first].focus();
      }
      return false;
   }
   else {
      for (var i=0 ; i<to_disable.length ; i++) {
         to_disable[i].disabled = true;
         if (to_disable[i].type=='submit') {
            to_disable[i].value = msg_wait;
         } 
      }
      form.varified.value = 1;
      return true;   
   }

}


