//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validText(oText){
	if(trimString(oText.value)==""){
		oText.focus();
		return false;
	}
	return true;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validComboBox(oCombo){
	if(oCombo.value=="" || oCombo.value=="0" || oCombo.value=="-1"){
		oCombo.focus();
		return false;
	}
	return true;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validNumberFormat(value) {
	var valid, code, i;
	valid=true;
	for (i=0; i<value.length; i++) {
		code = value.charAt(i);
		if (!((code >= "0" && code <= "9")	|| (code == ".") || (code == "-"))) { 
			valid=false; 
			break; 
		}
	}
	return valid;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validIntFormat(value) {
	var valid, code, i;
	valid=true;
	for (i=0; i<value.length; i++) {
		code = value.charAt(i);
		if (!((code >= "0" && code <= "9") || (code == "-"))) { 
			valid=false; 
			break; 
		}
	}
	return valid;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validInteger(value) {
	if(value == '')return true;
	if(!validIntFormat(value))return false;
	if(isNaN(parseInt(value)))return false;
	return true;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validNumber(value) {
	if (value == '') return true;
	if (!validNumberFormat(value)) return false;
	if (isNaN(parseFloat(value))==true) return false;
	else return true;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validAlphabet(value) {
	var valid, code, i;
	valid=true;
	for (i=0; i<value.length; i++) {
		code = value.charAt(i);
		if (
			(code >= "0" && code <= "9")
			|| (code >= "A" && code <= "Z")
			|| (code >= "a" && code <= "z")
			|| code == "_"
		) ;
		else { valid=false; break; }
	}
	return valid;
}
//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validASCII(value) {
	var code, i;
	for (i=0; i<value.length; i++) {
		code = value.charCodeAt(i);
		if ( code == 8 || code == 9 || code == 10 || code == 13 || (code >=30 && code <=255) ) ;
		else return false;
	}
	return true;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validPathName(value) {
	var valid, code, i;
	valid=true;
	for (i=0 ; i<value.length ; i++) {
		code = value.charAt(i);
		if (
			code == "*"
			|| code == "?"
			|| code == '"'
			|| code == "<"
			|| code == ">"
			|| code == "|"
		) {
			valid=false;
			break;
		}
	}
	return valid;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validFileName(value) {
	var valid, code, i;
	valid=true;
	for (i=0 ; i<value.length ; i++) {
		code = value.charAt(i);
		if (
			code == "\""
			|| code == "/"
			|| code == ":"
			|| code == "*"
			|| code == "?"
			|| code == '"'
			|| code == "<"
			|| code == ">"
			|| code == "|"
		) {
			valid=false;
			break;
		}
	}
	return valid;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validEmail(value) {
	/*
		Email Address's Format: username@subdomain.domain
		Email Address must be include 3 part:
			part 1: username
			part 2: @
			part 3: <domainname[.domainname,...]>.<domainname>
	*/
	if (value==null || value=="")	return true;
	if (value.indexOf(" ")>=0)		return false;

	var state, code, username, domain, amountOfDot, i;
	state = 1; username=''; domain=''; amountOfDot = 0;
	for (i=0; i<value.length; i++) {
		code = value.charAt(i);
		if (state==1) {
			if (	code == "<" || code == ">" 
					|| code == "(" || code == ")"	) return false;
			else if (	code == "@"	)
				if (username == '') return false;
				else state = 3;
			username += code;
		}
		else if (state==3) {
			if (	(code >= "0" && code <= "9")
					|| (code >= "A" && code <= "Z")
					|| (code >= "a" && code <= "z")
					|| code == "_"
					|| code == "-"
				) ;
			else if (code == ".")
				if (domain == '' || domain.charAt(domain.length-1) == '.') return false;
				else amountOfDot++;
			else return false;
			domain += code;
		}
	}
	if (state != 3) return false;
	if (domain == '' || domain.charAt(domain.length-1) == '.') return false;
	if (amountOfDot <1) return false;
	return true;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function myParseInt(value) {
	if (value==null || value=='') return parseInt('');
	var i; i=0;
	while (i<value.length) {
		if (value.substr(i,1)=='0') i++;
		else break;
	}
	if (i<value.length) return parseInt(value.substr(i));
	else return parseInt(value);
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validTime(tf,datetype) {
	if (tf==null || tf.value=="") return true;
	var m_arr, sep, value;
	m_arr = tf.value.split(" ");
	value = m_arr[0];
	sep = "/";
	if (value.indexOf("-")>0) sep = "-";
///
	var arr;
	arr = value.split(sep);
	if (arr.length<3) { if (! tf.disabled) tf.focus(); return false; }
	arr[0] = myParseInt(arr[0]); arr[1] = myParseInt(arr[1]); arr[2] = myParseInt(arr[2]);
	if (isNaN(arr[0]) || isNaN(arr[1]) || isNaN(arr[2])) { if (! tf.disabled) tf.focus(); return false; }

	var tmp;
	if (datetype=="mm/dd/yyyy") {
		tmp = arr[0];
		arr[0] = arr[1];
		arr[1] = tmp;
	}
	else if (datetype=="yyyy/mm/dd") {
		tmp = arr[0];
		arr[0] = arr[2];
		arr[2] = tmp;
	}
	else {
		;
	}

	// format: dd/mm/yyyy hh:mm:ss AM or format: dd-mm-yyyy hh:mm:ss AM
	if (arr[2]<1900 || arr[2]>9999) { if (! tf.disabled) tf.focus(); return false; }
	if (arr[1]>12 || arr[1]<1) { if (! tf.disabled) tf.focus(); return false; }
	if (arr[0]>31 || arr[0]<1) { if (! tf.disabled) tf.focus(); return false; }
	if (arr[1]==4 || arr[1]==6 || arr[1]==9 || arr[1]==11) {
		if (arr[0]>30) { if (! tf.disabled) tf.focus(); return false; }
	}
	else if (arr[1]==2) {
		if (arr[2]%400==0 || (arr[2]%4==0 && arr[2]%100!=0)) {
			if (arr[0]>29) { if (! tf.disabled) tf.focus(); return false; }
		}
		else {
			if (arr[0]>28) { if (! tf.disabled) tf.focus(); return false; }
		}
	}
	var orgizin;
	orgizin = arr[0] + sep + arr[1] + sep + arr[2];
	if (datetype=="mm/dd/yyyy") {
		orgizin = arr[1] + sep + arr[0] + sep + arr[2];
	}
	else if (datetype=="yyyy/mm/dd") {
		orgizin = arr[2] + sep + arr[1] + sep + arr[0];
	}
	else {
		orgizin = arr[0] + sep + arr[1] + sep + arr[2];
	}

	value = 1;
	while (value<m_arr.length) {
		if (m_arr[value]=='') value++;
		else break;
	}
	if (m_arr.length>1 && value<m_arr.length) {
		k = value+1;
		var hour,minute,second;
		arr = m_arr[value].split(":");

		hour = myParseInt(arr[0]);
		if (isNaN(hour) || hour<0 || hour>23) { if (! tf.disabled) tf.focus(); return false; }
		if (arr.length>1) {
			minute = myParseInt(arr[1]);
			if (isNaN(minute) || minute<0 || minute>59) { if (! tf.disabled) tf.focus(); return false; }
			else if (minute<10) minute = '0' + minute;
			if (arr.length>2) {
				second = myParseInt(arr[2]);
				if (isNaN(second) || second<0 || second>59) { if (! tf.disabled) tf.focus(); return false; }
				else if (second<10) second = '0' + second;
			}
			else second = '00';
		}
		else {
			minute = '00';
			second = '00';
		}
		orgizin = orgizin + ' ' + hour + ':' + minute + ':' + second;
		if (k<m_arr.length) {
			value = m_arr[k].toUpperCase();
			if (value=='PM') orgizin = orgizin + ' ' + value;
			else if (value=='AM' && hour<=12) orgizin = orgizin + ' ' + value;
		}
	}
	tf.value = orgizin;
	return true;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validTimeOnly(tf) {
	var m_arr, arr, value, orgizin, hour, minute, second;
	m_arr = tf.value.split(" ")
	arr = m_arr[0].split(":");

	hour = myParseInt(arr[0]);
	if (isNaN(hour) || hour<0 || hour>23) return false;
	if (arr.length>1) {
		minute = myParseInt(arr[1]);
		if (isNaN(minute) || minute<0 || minute>59) return false;
		else if (minute<10) minute = '0' + minute;
		if (arr.length>2) {
			second = myParseInt(arr[2]);
			if (isNaN(second) || second<0 || second>59) return false;
			else if (second<10) second = '0' + second;
		}
		else second = '00';
	}
	else {
		minute = '00';
		second = '00';
	}
	orgizin = hour + ':' + minute + ':' + second;
	if (m_arr.length>1) {
		value = m_arr[1].toUpperCase();
		if (value=='PM') orgizin = orgizin + ' ' + value;
		else if (value=='AM' && hour<=12) orgizin = orgizin + ' ' + value;
	}
	tf.value = orgizin;
	return true;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validFromTo(value1,value2,datetype) {
	// default format is "mm/dd/yy hh:mi:ss"
	// if value1 is not valid then return 1
	// if value2 is not valid then return 2
	// if from date > to date then return 3
	// else, return 0

	if (value1==null || value1=="") return 1;
  	var i, m_arr, value, arr, sep;
	m_arr = value1.split(" ");
	value = m_arr[0];
	sep = "/";
	if (value.indexOf("-")>0) sep = "-";
	arr = value.split(sep);
	if (arr.length<3) return 1;
	arr[0] = myParseInt(arr[0]); arr[1] = myParseInt(arr[1]); arr[2] = myParseInt(arr[2]);
	if (isNaN(arr[0]) || isNaN(arr[1]) || isNaN(arr[2])) return 1;
	if (datetype=="dd/mm/yyyy") {
		tmp = arr[0];
		arr[0] = arr[1];
		arr[1] = tmp;
	}
	else if (datetype=="yyyy/mm/dd") {
		tmp = arr[0];
		arr[0] = arr[1];
		arr[1] = arr[2];
		arr[2] = tmp;
	}
	else {
		;
	}
	// --- mm/dd/yy ---
	if (arr[2]<1900 || arr[2]>9999) return 1;
	if (arr[0]>12 || arr[0]<1) return 1;
	if (arr[1]>31 || arr[1]<1) return 1;
	if (arr[0]==4 || arr[0]==6 || arr[0]==9 || arr[0]==11) {
		if (arr[1]>30) return 1;
	}
	else if (arr[0]==2) {
		if (arr[2]%400==0 || (arr[2]%4==0 && arr[2]%100!=0)) {
			if (arr[1]>29) return 1;
		}
		else {
			if (arr[1]>28) return 1;
		}
	}
	value = arr[0] + sep + arr[1] + sep + arr[2];
	for (i=1; i<m_arr.length; i++) value = value + " " + m_arr[i];
	value1 = value;

	if (value2==null || value2=="") return 2;
	m_arr = value2.split(" ");
	value = m_arr[0];

	sep = "/";
	if (value.indexOf("-")>0) sep = "-";
	arr = value.split(sep);
	if (arr.length<3) return 2;
	arr[0] = myParseInt(arr[0]); arr[1] = myParseInt(arr[1]); arr[2] = myParseInt(arr[2]);
	if (isNaN(arr[0]) || isNaN(arr[1]) || isNaN(arr[2])) return 2;
	if (datetype=="dd/mm/yyyy") {
		tmp = arr[0];
		arr[0] = arr[1];
		arr[1] = tmp;
	}
	else if (datetype=="yyyy/mm/dd") {
		tmp = arr[0];
		arr[0] = arr[1];
		arr[1] = arr[2];
		arr[2] = tmp;
	}
	else {
		;
	}
	// --- mm/dd/yy ---
	if (arr[2]<1900 || arr[2]>9999) return 2;
	if (arr[0]>12 || arr[0]<1) return 2;
	if (arr[1]>31 || arr[1]<1) return 2;
	if (arr[0]==4 || arr[0]==6 || arr[0]==9 || arr[0]==11) {
		if (arr[1]>30) return 2;
	}
	else if (arr[0]==2) {
		if (arr[2]%400==0 || (arr[2]%4==0 && arr[2]%100!=0)) {
			if (arr[1]>29) return 2;
		}
		else {
			if (arr[1]>28) return 2;
		}
	}
	value = arr[0] + sep + arr[1] + sep + arr[2];
	for (i=1; i<m_arr.length; i++) value = value + " " + m_arr[i];
	value2 = value;

	var fromdate,todate;
	fromdate	= Date.parse(value1);
	todate		= Date.parse(value2);
	if (fromdate==null || todate==null) return 3;
	if (fromdate>todate) return 3;
	return 0;
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function validMustChecked(objForm, inputName) {
	var i, l, listID;
	l = objForm.length;
	listID = '';
	for (i=0; i<l; i++) {
		if (objForm.elements[i].name == inputName) {
			if (objForm.elements[i].checked) {
				listID += ',' + objForm.elements[i].value;
			}
		}
	}
	if (listID != '') return listID.substr(1);
	else return '';
}

//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------
function getMonthDayYear(dateValue, datetype) {
	var arr, tmp;
	var m_arr, sep, value;
	if (dateValue == "" || dateValue == null) return '';
	m_arr = dateValue.split(" ");
	value = m_arr[0];
	sep = "/"; if (value.indexOf("-")>0) sep = "-";

	arr = value.split(sep);
	if (arr.length<3) { return ''; }
	arr[0] = myParseInt(arr[0]); arr[1] = myParseInt(arr[1]); arr[2] = myParseInt(arr[2]);
	if (isNaN(arr[0]) || isNaN(arr[1]) || isNaN(arr[2])) { return ''; }
	if (datetype == "dd/mm/yyyy") {
		tmp = arr[0];
		arr[0] = arr[1];
		arr[1] = tmp;
	}
	else if (datetype == "yyyy/mm/dd") {
		tmp = arr[0];
		arr[0] = arr[1];
		arr[1] = arr[2];
		arr[2] = tmp;
	}
	else {
		;
	}
	return arr;
}
function y2k(number) { return (number < 1000) ? number + 1900 : number; }
function isDate (day,month,year) {
var today = new Date();
year = ((!year) ? y2k(today.getYear()):year);
month = ((!month) ? today.getMonth():month-1);
if (!day) return false
var test = new Date(year,month,day);
if ( (y2k(test.getYear()) == year) &&
(month == test.getMonth()) &&
(day == test.getDate()) )
return true;
else
return false
}
//------------------------------------------------------------------------------------------------------------------------------
//------------------------------------------------------------------------------------------------------------------------------

