 function validateForm() {
  
  jQuery('#messageSent').removeClass('success error_down').hide('normal');
  
  var valid = true;
  
  // E-mail validation RE
  var email_re = new RegExp('^[a-z0-9\._-]+@[a-z0-9][a-z0-9_-]*(\.[a-z0-9_-]+)*\.' + 
        '([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel)$');

  // Form values:
  var email = jQuery('#emailField').val(); 
  var message = jQuery('#messageField').val();
  var informer = jQuery('#informerField').val();
  var c_informer = jQuery('#customInformerField').val();
  var se_informer = jQuery('#searchEngineInformerField').val();
  var o_se_informer = jQuery('#otherSearchEngineInformerField').val();

  // Validate e-mail:
  if (email == "" || email.replace(/^\s+|\s+$/g,"") == "") {
    showValidFailMessage("Please enter your email address.", "email");
    valid = false;              
  } else if (!(email_re.test(email))) { 
    showValidFailMessage("Please enter a valid Email.", "email");
    valid = false;              
  } else {
      jQuery('#emailValid').hide('normal');
  }
  
  if (message == "" || message.replace(/^\s+|\s+$/g,"") == "") {
    showValidFailMessage("Please enter a message.", "message");
    valid = false;              
  } else {
      jQuery('#messageValid').hide('normal');
  } 
  
  // Exit if errors exists:
  if (valid == false) return valid;
  
  
  // Disable all form elements while sending:
  jQuery('#contactForm input, #contactForm textarea, #contactForm select').attr('disabled', 'disabled');

  // Post data by AJAX:
  jQuery.post('messageProcess.php', {
      email: email,
      message: message,
      informer: informer,
      c_informer: c_informer,
      se_informer: se_informer,
      o_se_informer: o_se_informer,
      referrer: window.location.href
  }, function (data) {
      
      // process result:
      var result_string = 'Message sent.';
      if (data == 0) result_string = 'An error occured!';
      var class_name = (data != 0 ? 'success' : 'error_down');
      
      //result_string = 'Message sent.' + '<br /><br />' + data;
      
      // display result:
      jQuery('#messageSent').html(result_string).addClass(class_name).show('normal');
      
      // enable all form elements:
      jQuery('#contactForm input, #contactForm textarea, #contactForm select').attr('disabled', '');
      
      // clear all inputs if success:
      if (data == 1) {
          jQuery('#contactForm input, #contactForm textarea, #otherSearchEngineInformerField, #customInformerField').val('');
          jQuery('select#informerField option:first, select#searchEngineInformerField option:first').attr('selected', 'selected');
          jQuery('#searchEngineInformer, #customInformer').hide();
      }
      
  });
  
  // Deny submit form:
  return false;
}

function showValidFailMessage(message, type) {
  if (type == "email" && jQuery("#emailValid").is(':hidden')) {
    jQuery("#emailValid").html(message).show('normal');
  }
  if (type == "message" && jQuery("#messageValid").is(':hidden')) {
    jQuery("#messageValid").html(message).show('normal');
  }
}



function informer_changed(select) {
            
    var informer = select.value;
    var c_informer = jQuery('#customInformer');
    var se_informer = jQuery('#searchEngineInformer');
    
    
    if (informer == 'personal_reference' || informer == 'reference_link' || informer == 'other') {
        // Show custom informer field:
        c_informer.show('normal');
        
        // Set label:
        var ci_label = '';
        switch (informer) {
            case 'personal_reference': 
                ci_label = 'Personal reference'; 
                break;
            case 'reference_link': 
                ci_label = 'Reference link'; 
                break;
            case 'other': 
                ci_label = 'Other'; 
                break;
        }
        var ci_label_span = document.getElementById('customInformerLabel');
        ci_label_span.innerHTML = ci_label;
        
    } else {
        c_informer.hide('normal');
    }
    
    // search engine:
    if (informer == 'search_engine') {
        se_informer.show('normal');
    } else {
        se_informer.hide('normal');
    }
    
}


function se_informer_changed(select) {
            
    var informer = select.value;
    var o_se_informer = jQuery('#otherSearchEngineInformer');
    
    if (informer == 'other') {
        o_se_informer.show('normal');
    } else {
        o_se_informer.hide('normal');
    }
    
}


// Process onload event:
jQuery(document).ready(function(){
    // Select first informer in select (onload):
    jQuery('select#informerField option:first').attr('selected', 'selected');
    
    // Select first informer in search engine select (onload):
    jQuery('select#searchEngineInformerField option:first').attr('selected', 'selected');
    
    // Change submit button text while sending:
    var submit_btn_text = '';
    jQuery("#submitButton")
        .ajaxStart(function() {
            submit_btn_text = jQuery(this).val();
            jQuery(this).val('Sending...');
        })
        .ajaxSuccess(function() {
            jQuery(this).val(submit_btn_text);
        });
});







