function trimZero(s) {
	while (s.substr(0,1) == '0' && s.length>1) { s = s.substr(1, s.length); }
	return s;
}

function isInt(x) {
	var y=parseInt(x);
	
	if (isNaN(y)) return false;
	return true;
}

function isEmptyStr(str) {
	return (str.length == 0);
}

function validEmptyField(txtFD, errFD, err) {
	if (isEmptyStr(txtFD.value)) {
		errFD.innerHTML = err;
		return false;
	} else {
		errFD.innerHTML = '';
		return true;
	}
}

function isStrInRange(str, minVal, maxVal) {
	return ((str.length >= minVal) && (str.length <= maxVal));
}

function validStrInRangeField(minVal, maxVal, txtFD, errFD, err) {
	if (!isStrInRange(txtFD.value, minVal, maxVal)) {
		errFD.innerHTML = err;
		return false;
	} else {
		errFD.innerHTML = '';
		return true;
	}
}

function isNumInRange(str, minVal, maxVal) {
	if (!isInt(str)) { return false; }
	
	return ((parseInt(str) >= minVal) && (parseInt(str) <= maxVal));
}

function validNumInRangeField(minVal, maxVal, txtFD, errFD, err) {
	if (!isNumInRange(txtFD.value, minVal, maxVal)) {
		errFD.innerHTML = err;
		return false;
	} else {
		errFD.innerHTML = '';
		return true;
	}
}

function isRegExp(str, regExpStr) {
	var re = new RegExp(regExpStr);
	return str.match(re);
}

function isEmailStr(str) {
	return isRegExp(str, '^([a-zA-Z0-9\\-\\.\\_]+)(\\@)([a-zA-Z0-9\\-\\.]+)(\\.)([a-zA-Z]{2,4})$');
}

function validEmailField(txtFD, errFD, err) {
	if (!isEmailStr(txtFD.value)) {
		errFD.innerHTML = err;
		return false;
	} else {
		errFD.innerHTML = '';
		return true;
	}
}

function isIDStr(str) {
	return isRegExp(str, '^([a-zA-Z0-9]{6,10})$');
}

function validIDField(txtFD, errFD, err) {
	if (!isIDStr(txtFD.value)) {
		errFD.innerHTML = err;
		return false;
	} else {
		errFD.innerHTML = '';
		return true;
	}
}

function isPasswdStr(str) {
	return isRegExp(str, '^([a-zA-Z0-9]{6,10})$');
}

function validPasswdField(txtFD, errFD, err) {
	if (!isPasswdStr(txtFD.value)) {
		errFD.innerHTML = err;
		return false;
	} else {
		errFD.innerHTML = '';
		return true;
	}
}

// valid date = 2006-12-20
function isDateStr(str) {
	var date_array = str.split("-");
	
	if (date_array.length != 3) { return false; }
	
	if (date_array[0].length != 4) { return false; }		// yr
	if (date_array[1].length != 2) { return false; }		// mm
	if (date_array[2].length != 2) { return false; }		// dd
	
	if (!isInt(date_array[0])) { return false; }
	if (!isInt(date_array[1])) { return false; }
	if (!isInt(date_array[2])) { return false; }
	
	var cDate = new Date(date_array[0], date_array[1]-1, date_array[2], 0, 0, 0);
	var cYr = eval( cDate.getYear() >= 2000 ? '0':'1900') + cDate.getYear();
	var cMon = cDate.getMonth()+1;
	var cDay =cDate.getDate();
	
	if (cYr != parseInt(trimZero(date_array[0]))) { return false; }
	if (cMon != parseInt(trimZero(date_array[1]))) { return false; }
	if (cDay != parseInt(trimZero(date_array[2]))) { return false; }
	
	return true;
}

function validDateField(txtFD, errFD, err) {
	if (!isDateStr(txtFD.value)) {
		errFD.innerHTML = err;
		return false;
	} else {
		errFD.innerHTML = '';
		return true;
	}
}

function isNum(str) {
	return isInt(str);
}

function validNumField(txtFD, errFD, err) {
	if (!isNum(txtFD.value)) {
		errFD.innerHTML = err;
		return false;
	} else {
		errFD.innerHTML = '';
		return true;
	}
}

function isMatchPasswd(passwd1, passwd2) {
	return (passwd1 == passwd2);
}

function validMatchPasswdField(txtFD1, txtFD2, errFD, err) {
	if (!isMatchPasswd(txtFD1.value, txtFD2.value)) {
		errFD.innerHTML = err;
		return false;
	} else {
		errFD.innerHTML = '';
		return true;
	}
}

function validateRGBField(str) {
	var reg = new RegExp('^([#]{1}[a-fA-F0-9]{6})$');
	
	return reg.test(str);
}