document.observe('dom:loaded', main);

function main() {
  activeMenu();
  observeNewsletterSignUp();
}

/**
 * Set a menu item to class active if the page title matches the menu item
 * name.
 */
function activeMenu() {
  $$('ul.menu li a').each(function(a) {
    if(document.title.match(a.innerHTML)) { a.addClassName('active'); }
  });
}

/** 
 * Enhance the newsletter sign up form.
 */
function observeNewsletterSignUp() {
  var div = 'markupfactory-getnewslettersignup-email';
  var submit = 'markupfactory-getnewslettersignup-submit';
  var defaultValue = 'email address';
  var emailPattern = 
    /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        
  // Disable the submit button by default
  if($(submit)) { $(submit).disabled = true; }

  if($(div)) {
    /**
     * Clear the default value of the newsletter sign up field when clicked.
     */
    $(div).observe('click', function() {
      if($F(div) == defaultValue) { $(div).value = ''; }
    });
    /**
     * Put the default value back if the field is empty
     */
    $(div).observe('blur', function() {
      if($F(div) == '') { $(div).value = defaultValue; }
    });
    /**
     * Don't allow submission without a valid email address
     */
    $(div).observe('keyup', function() {
      if($(submit)) {
        if(emailPattern.exec($F(div))) { 
          $(submit).disabled = false;
        } else { $(submit).disabled = true }
      }
    });
  }
}
