function validateCheckbox(checkbox , field, msg, min, max) {
 if (checkbox.checked == true) {
  return validateString(field, msg, min, max);
 } else {
  return true;
 }	
}

function validateNumber(field, msg, min, max) {
 if (!min) { min = 0 }
 if (!max) { max = 255 }
 if ((parseInt(field.value, 10) != field.value) || 
    field.value.length < min || 
    field.value.length > max) {
  alert(msg);
  field.focus();
  field.select();
  return false;
 }
 return true;
}

function validateString(field, msg, min, max) {
 if (!min) { min = 1 }
 if (!max) { max = 65535 }
 if (!field.value || 
    field.value.length < min || 
    field.value.max > max) {
  alert(msg);
  field.focus();
  field.select();
  return false;
 }
 return true;
}

function validateEmail(field, msg, optional) {
 if (!field.value && optional) {
  return true;
 }
 var re_mail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z])+$/;
 if (!re_mail.test(field.value)) {
  alert(msg);
  field.focus();
  field.select();
  return false;
 }
 return true;
}

var dateMsg;
function validateDate(field, msg) {
 dateMsg=msg;
 if (isDate(field.value)==false){
  alert(dateMsg);
  field.focus();
  field.select();
  return false;
 }
 return true;
}

function isDate(dtStr){
 var daysInMonth = daysArray(12);
 var pos1=dtStr.indexOf("/");
 var pos2=dtStr.indexOf("/",pos1+1);
 var strMonth=dtStr.substring(0,pos1);
 var strDay=dtStr.substring(pos1+1,pos2);
 var strYear=dtStr.substring(pos2+1);
 strYr=strYear;
 if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
 if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
 for (var i = 1; i <= 3; i++) {
  if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
 }
 month=parseInt(strMonth)
 day=parseInt(strDay)
 year=parseInt(strYr)
 if (pos1==-1 || pos2==-1){
  dateMsg += "\nThe date format must be : MM/DD/YYYY";
  return false;
 }
 if (strMonth.length<1 || month<1 || month>12){
  dateMsg += "\nthe month is invalid";
  return false;
 }
 if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
  dateMsg += "\nthe day is invalid";
  return false;
 }
 if (strYear.length != 4 || year==0 || year<1995 || year>2025){
  dateMsg += "\nthe year is invalid";
  return false;
 }
 if (dtStr.indexOf("/",pos2+1)!=-1 || isInteger(stripSlashes(dtStr, "/"))==false){
  dateMsg += "\nThe date format must be : MM/DD/YYYY";
  return false;
 }
 date1 = new Date();
 date2 = new Date(year, month-1, day);
 if ((Date.parse(date1) + (7 * 86400000)) < Date.parse(date2)){
  dateMsg += "\nThe date can not be more than 7 days in the future";
  return false;
 }
 return true;
}

function isInteger(s){
 var i;
 for (i = 0; i < s.length; i++){   
  var c = s.charAt(i);
  if (((c < "0") || (c > "9"))) {
   return false;
  }
 }
  return true;
}

function stripSlashes(s, bag){
 var i;
 var returnString = "";
 for (i = 0; i < s.length; i++){   
  var c = s.charAt(i);
  if (bag.indexOf(c) == -1) returnString += c;
 }
 return returnString;
}

function daysInFebruary (year){
 return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function daysArray(n) {
 for (var i = 1; i <= n; i++) {
  this[i] = 31;
  if (i==4 || i==6 || i==9 || i==11) {
   this[i] = 30;
  }
  if (i==2) {
   this[i] = 29;
  }
 } 
 return this;
}

function maskEmail(username, linktext, hostname, subject) {
 if (!hostname) var hostname = "quikx.com";  
 if (!linktext) var linktext = username + "@" + hostname;
 if (!subject) {
  document.write("<a href=" + "mail" + "to:" + username + "@" + hostname + ">" + linktext + "</a>")
 } else {
  document.write("<a href=" + "mail" + "to:" + username + "@" + hostname + "?subject=" + subject + ">" + linktext + "</a>")
 }
}
