// Generic String Parsing and Validating rouintes
// StrParse.js v.1.4
//
// Last Update: 08/28/2000
//
// AUTHOR:	dZ <dz@caribe.net>
//
// HISTORY:
// =========================================================
// 1.0 - First release!
// 1.2 - Fixed a bug in the IsValidInt() function that
//       allowed a single letter char to go thru as valid.
//     - Added [αινσϊρΡ] as valid characters in TxtStrings
// 1.3 - Added function trimPhone to take out dashes in
//       phone number strings.
// 1.4 - Added [&] as valid characters in TxtStrings
//     - Added IsValidMoney() function to validate dollar
//       amounts and other money fields.
// =========================================================

// IsDigit
function IsDigit( chr ) {
	return (chr >= '0' && chr <= '9');
}

// IsChar
function IsChar( chr ) {
	var tmpStr = "αινσϊρΡ#',.:&()-@/ ";

	return  ( IsLetter(chr) ||
			( tmpStr.indexOf( chr ) >= 0 ));
}

// IsLetter
function IsLetter( chr ) {
	return  (( chr >= 'A' && chr <= 'Z' ) ||
			( chr >= 'a' && chr <= 'z' ));
}

// IsValidInt
function IsValidInt( str ) {
	var i;

	if ( str.length < 1 ) return false;
	if ( str.length == 1 &&
		!IsDigit(str)) return false;

	if (!IsDigit(str.charAt(0) &&
		str.charAt(0) != '-')) return false;

	for ( i=1; i < str.length; i++ ) {
		if ( !IsDigit( str.charAt(i) )) return false;
	}
	return true;
}

// IsValidUserName
function IsValidUserName( str, min, max ) {
	var i;

	if (str.length < min ||
		str.length > max ||
		IsDigit(str.charAt(0)) ||
		str.charAt(0) == '-') return false;

	for ( i=0; i < str.length; i++ ) {
		if ( !( IsLetter(str.charAt(i)) ||
				IsDigit(str.charAt(i))  ||
				str.charAt(i) == '-' )) return false;
	}
	return true;
}

// IsValidNumStr
function IsValidNumStr( str, min, max ) {
	var i;

	if ( str.length < min || str.length > max) return false;

	for ( i=0; i < str.length; i++ ) {
		if ( !IsDigit( str.charAt(i) )) return false;
	}
	return true;
}

// IsValidTxtStr
function IsValidTxtStr( str, min, max ) {
	var i;

	if ( str.length < min || str.length > max) return false;

	for ( i=0; i < str.length; i++ ) {
		if ( !( IsChar( str.charAt(i)) ||
			IsDigit( str.charAt(i) ) )) return false;
	}
	return true;
}

// IsValidPhone
function IsValidPhone( str ) {
	// Check if no dash was entered
	// FORMAT: /#######/
	if ( str.length == 7 ) {
		return IsValidNumStr(str, 7, 7);
	}

	// Check if a dash was entered
	// FORMAT: /###-####/
	//alert (str.charAt(3) + '::' + str.substring(0, 3) + '::' + str.substring(4, 8));
	if ( str.length == 8 ) {
		if ( str.charAt(3) != '-' ) return false;
		if ( !IsValidNumStr(str.substring(0, 3)) ) return false;
		if ( !IsValidNumStr(str.substring(4, 8)) ) return false;

		return true;
	}

	return false;
}

// IsValidMoney
function IsValidMoney( str, min, max ) {
	// First check if the string is null
	if ( str.length == 0 ) {
		return false;
	}

	// Now, make sure its a valid numeric
	if (isNaN(str)) {
		return false;
	}

	// Now we check if its got a decimal point
	// and make sure it has only 2 digits
	// at the right of it.
	var pos = str.indexOf('.');
	if (pos > 0  && pos < str.length - 3) {
		return false;
	}

	// Last but not least, if min and max
	// were supplied, make sure the value
	// is within range.
	if (min && (str * 100 < min * 100)) {
		return false
	}
	if (max && (str * 100 > max * 100)) {
		return false
	}

	return true;
}

// Delete '-' from Phone Number string
function trimPhone(thePhone) {
	var pos;
	var tmpStr;

	pos = thePhone.indexOf('-');
	if (pos < 0) return thePhone;

	tmpStr  = thePhone.substring(0, pos);
	tmpStr += thePhone.substring(pos + 1, thePhone.length);

	return tmpStr;
}

// Display BadFieldMSG
function BadFieldMSG(field) {
	alert( field + ' is not valid.\n' +
			'Please try again.' );
}


