


function IsValidDate(day, month, year)
{
    var date = new Date(month + "/" + day + "/" + year);
    return date.getDate() == day && date.getMonth() == month - 1 && date.getFullYear() == year;
}

function validDate(myDate){

      var dateRegEx = /^\d{1,2}\/\d{1,2}\/\d{4}$/;

      if(!dateRegEx.test(myDate)){
            return false;     
      }
      else {
            var dateparts = myDate.split('/');                          
            var month = dateparts[0];
            var day = dateparts[1];
            var year = dateparts[2];

            return IsValidDate( day, month, year );
      }
}     

function autoTab(from,to)
{
      if ( event.keyCode !== 9 && from.attr("maxlength") === from.val().length ) {
            to.focus();
      }
}






jQuery(document).ready(function(){

      //
      // Form Validation
      // 
      jQuery(".validatableForm").submit(function(){
            var formName = $(this).attr("id");
            // validation here!
            jQuery("#"+formName+" #validation-messages").html('');
            var missing_info = "";
            var hasAtLeastOne = false;
            
            // required fields
            jQuery("#"+formName+" .is-required").each(function(){
                  if ( jQuery(this).val() === '') {                                       
                        missing_info = missing_info + "<br />" + jQuery(this).attr("title") + " is a required field.";
                  }
            });

            // date validation
            jQuery("#"+formName+" .date-validate").each(function(){
                  if ( jQuery(this).val() !== '' && !validDate( jQuery(this).val() ) ) {
                        missing_info = missing_info + "<br />" + jQuery(this).attr("title") + " must be a valid date in the following format: mm/dd/yyyy.";
                  }
            });
            
            // email validation
            jQuery("#"+formName+" .email-validate").each(function(){
                  var email = jQuery(this).val();
                  if(email !== "" && !email.match(/^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/)) {
                        missing_info = missing_info + "<br />" + jQuery(this).attr("title") + " must be a valid email address.";
                  }
            });

            // final disposition
            if (  missing_info != '') {
                  jQuery("#"+formName+" #validation-messages").html( missing_info );
                  //var targetOffset = jQuery("#editForm").offset().top;
                  //jQuery('html,body').animate({scrollTop:targetOffset}, 500);
            } else {
                  return true;
            }                 
            return false;                 
      });
});
