function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function formatNumber(numStr,decPoint) {
	numStr = stripCommas(numStr);
	var numValue = parseFloat(numStr);
	numStr = numValue.toString();
	if (numStr=='NaN') numStr = "0.00";
	var x = numStr.split(".");
	var x1 = x[0];
	var x2 = "";
	try {
		decPoint = Math.floor(decPoint*1); // Make sure decPoint is Integer value;
	} catch (ex) {
	    decPoint = 0;
	}

	if (decPoint > 0) {
		x2 = x.length > 1 ? "." + x[1] : ".0000000000";
		x2 = x2+"0000000000";
		x2 = x2.substr(0,decPoint+1);
	}
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, "$1" + "," + "$2");
	}
	if (x1=='') x1='0';
	return x1 + x2;
}

function stripCommas(numStr) {
    var re = /,/g;
    return numStr.replace(re,"");
}
//=================================================================================================
function setNumberEdit(editBox,decPoint) {
    if (editBox == undefined) return;
	if (editBox.isNumberEdit) return;
	editBox.isNumberEdit = true;
	editBox.saveblur = editBox.onblur;
	editBox.saveFocus = editBox.onfocus;
	editBox.saveKey = editBox.onkeydown;
	editBox.style.textAlign = 'right';
	var xForm = editBox.form;
	if (! xForm.setStripCommas) {
        xForm.stripComma = true;
		xForm.setStripCommas = true;
		xForm.numberEditSaveSubmit = xForm.onsubmit;
		xForm.onsubmit = function() {
			var formCnt = document.forms.length;

			for (var ifrm=0;ifrm<formCnt;ifrm++) {
				var workForm = document.forms[ifrm];
				if ((!workForm.setStripCommas)||(!workForm.stripComma)) {
                    if (workForm.numberEditSaveSubmit != null) {
                        return workForm.numberEditSaveSubmit();
                    }
				   continue;
				}
				var elCount = workForm.elements.length;
				for (var idx=0;idx<elCount;idx++) {
					xControl = workForm.item(idx);
					if (xControl.isNumberEdit){
						xControl.value = stripCommas(xControl.value);
					}
				}

				if (workForm.numberEditSaveSubmit != null) {
					return workForm.numberEditSaveSubmit();
				}
				return true;
			}
		}
	}

	if (decPoint == undefined) {
		decPoint = 2;
	}
	var numStr = editBox.value;
    editBox.value = formatNumber(numStr,decPoint);
    if ((editBox.blankZero) && (formatNumber(numStr,0) == "0")) {
        editBox.value = "";
    }


	//right,left
	editBox.onblur = function() {
        if (this.isTextArea) {
            this.value = this.innerText;
        }
		this.style.textAlign = 'right';
		var numStr = this.value;
		this.value = formatNumber(numStr,decPoint);
        if ((formatNumber(numStr,0) == "0") && (this.blankZero)) {
            this.value = "";
        }
		if (this.saveblur != null) {
		   this.saveblur();
		}
	}

	editBox.onfocus = function() {
		this.style.textAlign = 'left';
		var numStr = this.value;
		this.value = stripCommas(numStr);
		this.select();
		if (this.saveFocus != null) {
		   this.saveFocus();
		}
	}

	editBox.onkeypress = function() {
		var evt = window.event;
		if (evt) {
			var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
			if (elem) {
				var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
				if ((charCode < 32 ) || //Control Code
				    (charCode > 44 && charCode < 47) ||  // ,-.
				    (charCode > 47 && charCode < 58)) {	 // 0-9
					return true;
				} else {
					return false;
				}
			}
		}
	}
}

//=================================================================================================
function setTextEdit(editBox) {
    if (editBox == undefined) return;
    if (editBox.isTextEditor) return;

    editBox.isTextEditor = true;
    editBox.saveblur = editBox.onblur;
    editBox.saveFocus = editBox.onfocus;
    editBox.saveKey = editBox.onkeydown;
    editBox.style.textAlign = 'left';
    var xForm = editBox.form;

    editBox.isUpperCase = false;
    editBox.isLowerCase = false;

    if (!editBox.charCase) {
	editBox.charCase = "NORMAL";
    }

    editBox.charCase = editBox.charCase.toUpperCase();

    if (editBox.charCase != "NORMAL") {

		editBox.isUpperCase = editBox.charCase == "UPPERCASE";
		editBox.isLowerCase = editBox.charCase == "LOWERCASE";

		editBox.onkeypress = function() {
			var evt = window.event;
			if (evt) {
				var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
				if (elem) {
					var charCode = (evt.charCode) ? evt.charCode : ((evt.which) ? evt.which : evt.keyCode);
					if (charCode > 32) {
						var charVale = String.fromCharCode(charCode);
						if (this.isUpperCase) charVale = charVale.toUpperCase();
						if (this.isLowerCase) charVale = charVale.toLowerCase();
						charCode = charVale.charCodeAt(0);
						if (evt.charCode) {evt.charCode = charCode;}
						else if (evt.which) {evt.which = charCode;}
						else if (evt.keyCode) {evt.keyCode = charCode;}
					}
				}
			}
			return true;
		} // End onkeypress;
    } //End if (editBox.charCase != "NORMAL") {


    editBox.onfocus = function() {
		this.style.textAlign = 'left';
		this.select();
		if (this.saveFocus != null) {
			this.saveFocus();
		}
	} // End onfocus

	editBox.onblur = function() {
        if (this.isTextArea) {
            this.value = this.innerText;
        }
        var txtValue = this.value;
        if (editBox.charCase != "NORMAL") {
            if (this.isUpperCase) this.value = txtValue.toUpperCase();
            if (this.isLowerCase) this.value = txtValue.toLowerCase();
            if (this.saveblur != null) {
                this.saveblur();
            }
        }
    } // End onblur

} // End Function

// ==============================================================================================

