
/******************************************************************************
Name: 		mask.js
Description:	masking library for formatting: ssn, number, dollar, date, taxids

function			signature		return		desciption

isNumber			string			boolean
isRealNumber		string			boolean
isDigits			string			boolean
isAlphaNumeric		string			boolean
toDigits			string			string		whole numbers
toNumber			string			string		integers
toRealNumber		string			string		real numbers
toAlphaNumeric		string			string
convertToMask		string			string
ssnMask				field			void
taxIdMask			field			void
numMask				field			void
dollarMask			field			void
dateMMDDYYYY		field			void

******************************************************************************/

function isNumber(s) {
	
		var valid = "0123456789.";
		var temp;
		for (var i=0; i<s.length; i++) {
			temp = "" + s.substring(i, i+1);
			if (valid.indexOf(temp) == -1){
				return false;
			}
		}
		return true;
}

function isRealNumber(s) {

		var valid = "0123456789.-";
		var temp;
		for (var i=0; i<s.length; i++) {
			temp = "" + s.substring(i, i+1);
			if (valid.indexOf(temp) == -1){
				return false;
			}
		}
		return true;
}

function isDigits(s) {
	
		var valid = "0123456789";
		var temp;
		for (var i=0; i<s.length; i++) {
			temp = "" + s.substring(i, i+1);
			if (valid.indexOf(temp) == -1){
				return false;
			}
		}
		return true;
}

function isAlphaNumeric(s) {
	
		var valid = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
		var temp;
		for (var i=0; i<s.length; i++) {
			temp = "" + s.substring(i, i+1);
			if (valid.indexOf(temp) == -1){
				return false;
			}
		}
		return true;
}

function toDigits(s) {

	var newStr = "";
	for (var i = 0; i < s.length; i++) {
		if (isDigits(s.charAt(i))) {
			newStr += s.charAt(i);
		}
	}

	return newStr;
}

function toNumber(s) {
	
	var newStr = "";
	for (var i = 0; i < s.length; i++) {
		if (isNumber(s.charAt(i))) {
			newStr += s.charAt(i);
		}
	}

	return newStr;

}
function toRealNumber(s) {
	var newStr = "";
	for (var i = 0; i < s.length; i++) {
		if (isRealNumber(s.charAt(i))) {
			newStr += s.charAt(i);
		}
	}

	return newStr;

}
function toAlphaNumeric(s) {

	var newStr = "";
	for (var i = 0; i < s.length; i++) {
		if (isAlphaNumeric(s.charAt(i))) {
			newStr += s.charAt(i);
		}
	}

	return newStr;

}

function convertToMask(m, s) {
	
	// m = mask
	// s = string
	var count = 0;
	// var delim = null;	// CONV_REM:ED --
	var newS = "";
	// find where not a number and remove it from string
	s = toAlphaNumeric(s);
	for (var i=0; i < s.length; i++) {
		if (m.charAt(i+count) == "#") {
			newS += s.charAt(i);				
		} else {
			newS += m.charAt(i+count);
			if (m.charAt(i+count+1) == "#") {
				newS += s.charAt(i);		
			} else {
				newS += m.charAt(i+count+1);
				newS += s.charAt(i);		
				count++;
			}
			count++;
		}
	}
	return newS;		
}

function ssnMask(someElement) {

	someElement.value = ssnMaskString(someElement.value);

}

function ssnMaskString(str) {

	var mask = "###-##-####";
	var newStr = toDigits(str);
	newStr = convertToMask(mask,newStr);
	newStr = newStr.substring(0,11);
	return newStr;

}

function taxIdMask(someElement) {

	someElement.value = taxIdMaskString(someElement.value);

}

function taxIdMaskString(str) {

	var mask = "##-#######";
	var newStr = toDigits(str);
	newStr = convertToMask(mask,newStr);
	newStr = newStr.substring(0,10); 	// maxsize
	return newStr;
	
}

function dateMMDDYYYY(someElement) {

	someElement.value = dateMMDDYYYYstring(someElement.value);

}

function dateMMDDYYYYstring(str) {

	var mask = "##/##/####";
	var newStr = toDigits(str);
	newStr = convertToMask(mask,newStr);
	newStr = newStr.substring(0,10); 	// maxsize
	return newStr;
	
}

function phoneMask(someElement) {

	someElement.value = phoneMaskString(someElement.value);

}

function phoneMaskString(str) {

	var mask = "(###) ###-####";
	var newStr = toAlphaNumeric(str);
	newStr = convertToMask(mask,newStr);
	newStr = newStr.substring(0,14); 	// maxsize
	return newStr;
}

function numMask(someElement) {

	someElement.value = numMaskString(someElement.value);

}

function numMaskString(str) {

	// var lastChar = str.substring(str.length-1,str.length);	// CONV_REM:ED --
	var ispos = true;
	
	// check for negative sign
	if (str.indexOf("-") > -1) {
		ispos = false;
	}
	// remove current commas
	str = toNumber(str);	

	// replace double decimals
	if (str.length > 1) {
		// round the 1st part of the decimal to absolute value
		aStr = str.split(".");
		str = Math.abs(aStr[0]) + "";
		if (aStr.length >1 ) {
			str += "." + aStr[1];
		}
	}

	// add commas
	pos = str.indexOf('.');	

	if (pos == -1) {
		pos = str.length;
	}
	
	while (pos > 1) 	{
		pos -= 3;
		if (pos <= 0) break;
		str = str.substring(0,pos) + ',' + str.substring(pos, str.length);
	}	
	if (ispos == false) {
		str = "-"+str;
	}	
	if (str.charAt(str.length-1) == ".") {
		str = str.substring(0,str.length -1);
	}
	return str;

}


function dollarMask(someElement) {
	someElement.value = dollarMaskString(someElement.value);
}

function dollarMaskString(str) {

	// var lastChar = str.substring(str.length-1,str.length);	// CONV_REM:ED --
	var ispos = true;
	
	// check for negative sign
	if (str.indexOf("-") > -1) {
		ispos = false;
	}

	// remove current commas
	str = toNumber(str);	

	// replace double decimals
	if (str.length > 1) {
		// round the 1st part of the decimal to absolute value
		aStr = str.split(".");
		str = Math.abs(aStr[0]) + "";
		if (aStr.length >1 ) {
			str += "." + aStr[1];
		}
	}

	// add commas
	pos = str.indexOf('.');	
	if (pos == -1) {
		pos = str.length;
	}

	while (pos > 1) 	{
		pos -= 3;
		if (pos <= 0) break;
		str = str.substring(0,pos) + ',' + str.substring(pos, str.length);
	}	
	if (ispos == false) {
		str = "-"+str;
	}
	
	if (str.charAt(str.length-1) == ".") {
		str = str.substring(0,str.length -1);
	}

	if (str.indexOf('.') != -1) {
		str = str.substring(0,str.indexOf('.')+3);
		if (str.length == str.indexOf('.') +2) {
			str += "0";
		}
	}

	return  "$ " + str;

}

function serviceMask(someElement) {
	someElement.value = serviceMaskString(someElement.value);
}

function serviceMaskString(str) {

	// var lastChar = str.substring(str.length-1,str.length);	// CONV_REM:ED --
	var ispos = true;
	
	// check for negative sign
	if (str.indexOf("-") > -1) {
		ispos = false;
	}

	// remove current commas
	str = toNumber(str);	

	// replace double decimals
	if (str.length > 1) {
		// round the 1st part of the decimal to absolute value
		aStr = str.split(".");
		str = Math.abs(aStr[0]) + "";
		if (aStr.length >1 ) {
			str += "." + aStr[1];
		}
	}

	// add commas
	pos = str.indexOf('.');	
	if (pos == -1) {
		pos = str.length;
	}

	while (pos > 1) 	{
		pos -= 3;
		if (pos <= 0) break;
		str = str.substring(0,pos) + ',' + str.substring(pos, str.length);
	}	
	if (ispos == false) {
		str = "-"+str;
	}
	
	if (str.charAt(str.length-1) == ".") {
		str = str.substring(0,str.length -1);
	}

	if (str.indexOf('.') != -1) {
		str = str.substring(0,str.indexOf('.')+5);
		if (str.length == str.indexOf('.') +4) {
			str += "0";
		}
	}
	return  str;

}


