var intset = "0123456789";
var valint = intset + ", -";
var valnum = intset + "., -";
var alphaset = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var symbolset = ",._- ~!@#$%^&*()=+[{}]\|;:<?>/";
var valemail = alphaset + intset + "@._-";
var valtext = alphaset + symbolset + "'\"";
var valalphanum = valtext + intset;
var valpw = alphaset + intset + symbolset;

function trimString (str) {
  str = this != window? this : str;
  return str.replace(/^\s+/g, '').replace(/\s+$/g, '');
}

function ValidateSize(field,minsize,maxsize,errmsg) {
	field.value = trimString(field.value);
	var chkval = field.value;
	if (chkval.length < minsize) {
		alert(errmsg+'\nMinimum size is '+minsize+'!')
		if (field.type != 'hidden') field.focus();
		return false;
	}
	if (maxsize > -1 && chkval.length > maxsize) {
		alert(errmsg+'\nMaximum size is '+maxsize+'')
		if (field.type != 'hidden') field.focus();
		return false;
	}
	return true;
}

function ValidateIt(field,filter,minsize,maxsize,errmsg) {
	if (ValidateSize(field,minsize,maxsize,errmsg)) {
		var chkval = field.value;
		for (var i=0; i < chkval.length; i++) {
			if (filter.indexOf(chkval.charAt(i)) == -1) {
				alert(errmsg);
				if (field.type != 'hidden') field.focus();
				return false;
			}   
		}
		return true;
	}
	return false;
}

function ValidateText(field,minsize,maxsize,errmsg) {
	return ValidateIt(field,valtext,minsize,maxsize,errmsg);
}

function ValidateAlphaNum(field,minsize,maxsize,errmsg) {
	return ValidateIt(field,valalphanum,minsize,maxsize,errmsg);
}

function ValidatePassword(field,minsize,maxsize,errmsg) {
	return ValidateIt(field,valpw,minsize,maxsize,errmsg);
}

function ValidateIntegerOnly(field,minsize,maxsize,errmsg) {
	return ValidateIt(field,intset,minsize,maxsize,errmsg);
}

function ValidateInteger(field,minsize,maxsize,errmsg) {
	return ValidateIt(field,valint,minsize,maxsize,errmsg);
}

function ValidateNumber(field,minsize,maxsize,errmsg) {
	return ValidateIt(field,valnum,minsize,maxsize,errmsg);
}

function ValidateEmail(field,minsize,maxsize,errmsg) {
	if (ValidateIt(field,valemail,minsize,maxsize,errmsg)) {
		var chkval = field.value;
		if (chkval.length == 0 && minsize == 0) {
			return true;
		} else {
			var i = chkval.indexOf('@');
			if (i > 0 && i < (chkval.length-3)) {
				chkval = chkval.substring(i+1,chkval.length);
				j = chkval.indexOf('.');
				if (j > 0 && j < (chkval.length-1)) {
					if (chkval.indexOf('..') == -1)
						return true;
				}
			}
			alert(errmsg);
			if (field.type != 'hidden') field.focus();
		}
	}
	return false;
}

function daysInMonth(m,y) {
	if (m == 4 || m == 6 || m == 9 || m == 11) {
		return 30;
	} else if (m == 2) {
		return (((y % 4 == 0) && ( (!(y % 100 == 0)) || (y % 400 == 0))) ? 29 : 28 );
   } else {
   	return 31;
   }
}

function DateCheck(sName,doc) {
	var frmMonth = doc.getElementById(sName+"_Month");
	var frmDay = doc.getElementById(sName+"_Day");
	var frmYear = doc.getElementById(sName+"_Year");
	
	var month = parseInt(frmMonth.options[frmMonth.selectedIndex].text,10);
	var day = parseInt(frmDay.options[frmDay.selectedIndex].text,10);
	var year = parseInt(frmYear.options[frmYear.selectedIndex].text,10);

	return !(month < 1 || month > 12 || day < 1 || day > daysInMonth(month,year));
}

function isDate(sName,doc,errmsg) {
	if (!DateCheck(sName,doc)) {
		alert(errmsg);
		doc.getElementById(sName+"_Day").focus();
		return false;
	}
	return true;
}

function isDate2(sName,doc,errmsg,bNull) {
	var el = doc.getElementById(sName);
	var sVal = el.value.replace(/^\s+|\s+$/g,'');
	if (sVal.length == 0) {
		if (bNull) {
			return true;
		} else {
			alert(errmsg);
			el.focus();
			return false;
		}
	}
	var aryD = new Array();
	if (sVal.indexOf("/") > -1) {
		aryD = sVal.split("/");
	} else if (sVal.indexOf("-") > -1) {
		aryD = sVal.split("-");
	}
	var month = 0;
	var day = 0;
	var year = 0;
	if (aryD.length == 3) {
		month = parseInt(aryD[0],10);
		day = parseInt(aryD[1],10);
		year = parseInt(aryD[2],10);
		if (year < 100) year += 2000;
	} else if (aryD.length == 2) {
		day = 1;
		month = parseInt(aryD[0],10);
		year = parseInt(aryD[1],10);
		if (year < 100) year += 2000;
	}
	if (month < 1 || month > 12 || day < 1 || day > daysInMonth[month,year]) {
		alert(errmsg);
		el.focus();
		return false;
	}
	return true;
}

function submitOnce(f) {
	if (document.all || document.getElementById) {
		var elType;
		for (i=0; i < f.elements.length; i++) {
			elType = f.elements[i].type;
			if (elType) {
				elType = elType.toLowerCase();
				if (elType == "submit" || elType == "reset" || elType == "button")
					f.elements[i].disabled = true;
			}
		}
	}
}
//
