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(field_id);
   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,"");
}

function handleSelect(type,args,obj) {
   var dates = args[0]; 
   var date = dates[0];
   var year = date[0], month = date[1], day = date[2];
            
   var txtDate1 = document.getElementById("date_field");
   txtDate1.value = formatDate(parseDate(month + "/" + day + "/" + year), "NNN. d, y");
   document.getElementById("calendar_container").style.display = "none";
}

function updateCal() {
   var txtDate1 = document.getElementById("date_field");
   if (txtDate1.value != "") {
      var date_val = txtDate1.value.replace(".","");
      var date_val = formatDate(parseDate(date_val), "M/d/y");
      YAHOO.calendar.cal1.select(date_val);

      var firstDate = YAHOO.calendar.cal1.getSelectedDates()[0];
      YAHOO.calendar.cal1.cfg.setProperty("pagedate", (firstDate.getMonth()+1) + "/" + firstDate.getFullYear());

      YAHOO.calendar.cal1.render();
      document.getElementById("calendar_container").style.display = "block";
   }
}

function calendar_init() {
   YAHOO.calendar.cal1 = new YAHOO.widget.Calendar("cal1","calendar_container", { close:true } );
   YAHOO.calendar.cal1.selectEvent.subscribe(handleSelect, YAHOO.calendar.cal1, true);
   YAHOO.calendar.cal1.render();
   YAHOO.util.Event.addListener("show", "click", updateCal);
   YAHOO.util.Event.addListener("show", "click", YAHOO.calendar.cal1.show, YAHOO.calendar.cal1, true);
}

function hide_animation() {
   document.getElementById("flash-animation").style.display = "none";
}

