﻿// Returns days in the month for a given month & year
function daysInMonth(year, month){
  // Check for leap year
  if (month == 2 && (year % 4 == 0) || (year % 400 == 0)) return 29;

  var days;
  switch (parseInt(month)){
    case 2: return 28; break;
    case 4: return 30; break;
    case 6: return 30; break;
    case 9: return 30; break;
    case 11: return 30; break;
    default: return 31;
  }
}

// Returns the month name of a given month
function monthName(month, abbrev){
  var name = '';
  switch (month){
    case 1: name = 'January'; break;
    case 2: name = 'February'; break;
    case 3: name = 'March'; break;
    case 4: name = 'April'; break;
    case 5: name = 'May'; break;
    case 6: name = 'June'; break;
    case 7: name = 'July'; break;
    case 8: name = 'August'; break;
    case 9: name = 'September'; break;
    case 10: name = 'October'; break;
    case 11: name = 'November'; break;
    case 12: name = 'December'; break;
  }
  
  return abbrev ? name.substr(0, 3) : name;
}

// Date validation
function validateDate(year, month, day){
  if (! isNumber(year)) return false;
  if (! isNumber(month)) return false;
  if (! isNumber(month)) return false;

  var d = new Date(year, month - 1, day);
  return (d.getFullYear() == year && 
    d.getMonth() == (month - 1) && 
    d.getDate() == day);
}

// Email Validation function
function validateEmail(email){
  var emailRE = /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.(([0-9]{1,3})|([a-zA-Z]{2,6}))$/i;
  return emailRE.test(email);
}

// Name validation
function validateName(name){
  var nameRE = /^[0-9A-Z\s\'\.,\-]+$/i;
  return nameRE.test(name);
}

// Phone number validation
function validatePhone(phone){
  // Strip out any whitespace
  phone = phone.replace(/[\s]/g, '');
  
  var phoneRE = /^((00|\+)(\d{1,3})|0)(\d{9,11})$/;
  return phoneRE.test(phone);
}

// Postcode Validation function
function validatePostcode(postcode){
  var postcodeRE = /^[A-Z]{1,2}[0-9]{1,2}[A-Z]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i;
  return postcodeRE.test(postcode);
}

// URL Validation function
function validateURL(domain){
  var domainRE = /^((http|https|ftp):\/\/)?((.*?):(.*?)@)?([a-z0-9][a-z0-9\-]{0,61}[a-z0-9])((\.[a-z0-9][a-z0-9\-]{0,61}[a-z0-9])*)(:([0-9]{1,5}))?((\/.*?)(\?(.*?))?(\#(.*))?)?$/i;
  return domainRE.test(domain);
}

