function addEvent(obj, type, fn) {
   if (obj.addEventListener) {
      obj.addEventListener(type, fn, false);
      return true;
   } else if (obj.attachEvent) {
      var r = obj.attachEvent("on"+type, fn);
      return r;
   } else {
      return false;
   }
}

function stopEvent(e) {
   if (e.stopPropagation) {
      e.stopPropagation();   // for DOM-friendly browsers
      e.preventDefault();
   } else {
      e.returnValue = false; // for IE
      e.cancelBubble = true;
   }
}

function validateRequired(field_id, error_message) {
   var field = document.getElementById(field_id);
   if (trim(field.value)=="")
      return error_message;
   return "";
}

function validateEmail(field_id, error_message) {
   var email = document.getElementById("email");
   if (!checkEmail(email))
      return error_message;
   return "";
}

function checkEmail(email) {
   if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email.value))
      return true;
   return false;
}

function trim(str) {
   return str.replace(/^\s+|\s+$/g,"");
}
