    function formatCurrency(value, bIncludeCents, languageCode) {

        if (languageCode == null)
            languageCode = 'EN';
    
        if (bIncludeCents == null)
            bIncludeCents = false;
    
        var sDelim = ',';
        var sDecimal = '.';
        var sCurrSymbolPos = 'BEGIN';

        if (languageCode.toLowerCase() == 'fr') {
            sDelim = ' ';
            sDecimal = ',';
            sCurrSymbolPos = 'END';
        } // if
    
        value = value.toString().replace(/\$|\,/g,'');
        
        if (isNaN(value)) value = '0';
        
        sign = (value == (value = Math.abs(value)));
        
        if (!bIncludeCents)
            value = Math.ceil(value);
                
        value = Math.floor(value * 100 + 0.5000000001);
        cents = value%100;
        value = Math.floor(value/100).toString();
        
        for (var i = 0; i < Math.floor((value.length - (1+i))/3); i++) {
            value = value.substring(0,value.length-(4*i+3)) + sDelim + value.substring(value.length-(4*i+3));
            break;
        }
        
        if (cents < 10) cents = '0' + cents;
        
        if (sCurrSymbolPos == 'BEGIN') {
            if (bIncludeCents)
                return ('$' + ((sign)?'':'-') + value + sDecimal + cents);
            return ('$' + ((sign)?'':'-') + value);
        } else {
            if (bIncludeCents)
                return (((sign)?'':'-') + value + sDecimal + cents) + ' $';
            return (((sign)?'':'-') + value) + ' $';
        }
    }
    
    function unformatNumber(value, languageCode) {
        if (languageCode == null) {
            languageCode = "EN";
        }
        
        if (languageCode.toLowerCase() == 'fr') {
            value = value.replace(/[^\d-^,^\.]/g, ''); 
            //Safari doesn't seem to think the thousands char is actually a space
            value = value.replace(String.fromCharCode(160), '');
            if(value.indexOf(".") == -1){
                value = value.replace(',','.');           
            }
        } else {
            value = value.replace(/[^\d-^\.]/g, '');
        }

        value = parseFloat(value);
        if (isNaN(value)) {
            return 0;
        }
                
        return value;
    }
    
    function formatPercent(value, languageCode) {
    
        if (languageCode == null)
            languageCode = "EN";
        
        var sDelim = ",";
        var sDecimal = ".";
        var sCurrSymbolPos = "BEGIN";

        if (languageCode.toLowerCase() == 'fr') {
            sDelim = " ";
            sDecimal = ",";
            sCurrSymbolPos = "END";
        } // if

        value = value.toString().replace(/\$|\,/g,'');

        if (isNaN(value)) value = "0";
        
        sign = (value == (value = Math.abs(value)));
        value = Math.floor(value * 100 + 0.5000000001);

        fractionDigits = value%100;

        value = Math.floor(value/100).toString();

        return (((sign)?'':'-') + value + sDecimal + fractionDigits) + '%';
    
    }
    
    function getkey(e) {		
        var keynum;
        if(window.event) {
            keynum = e.keyCode;
        } else if (e.which) {
            keynum = e.which;
        }
        return keynum;
	}   
    
    function getSelectedText(field) {
        var txt = '';
        if (window.getSelection) {
            if (field != null) {
            
            	var el = null;
            	if (typeof(field) != 'string') {
            		el = field;
            	} else {
            		el = document.getElementById(field);
            	}            
                var start = el.selectionStart;
                var end = el.selectionEnd;
                txt = el.value;
                txt = txt.substring(start, end);
                
            } else {
                txt = window.getSelection();
            }

        } else if (document.getSelection) {
            txt = document.getSelection();
            
        } else if (document.selection) {
            txt = document.selection.createRange().text;
            
        } 
        
        return txt;
    }
    
    function dollarAmountsOnly(objEvent, field, maxDigits, languageCode) {
        
        
        if (!NumbersOnly(objEvent, field, false, languageCode)) {
            return false;
        }
        
        var iKeyCode = getkey(objEvent);
        if (iKeyCode == null) { return false; }
                
        //Keys 0 - 9, numpad 0 - 9
        if ((iKeyCode>=48 && iKeyCode<=57) || (iKeyCode>=96 && iKeyCode<=105)) {
                             
            selectedText = getSelectedText(field);
            // Replacing text
            if ( (selectedText != null) && (selectedText != '') && (unformatNumber(selectedText, languageCode) > 0) ) {
                return true;    
            }
            
            floatValue = unformatNumber(field.value, languageCode);            
            if ( (floatValue / Math.pow(10, maxDigits - 1)) > 1)
                return false;                
        }
        
        return true;
    }
    
	//Purpose: Prevent an non numerical characters from being entered
	//Require: 
	//Promise:
	//use: onkeypress="return NumbersOnly(event, 'text1', false)
	function NumbersOnly(objEvent, field, bAllowDecimal, languageCode) {
                        
        if (languageCode == null) { languageCode = "EN"; }
    
        languageCode = languageCode.toLowerCase();
    
	    //MSIE and new browsers pass the key pressed in the keyCode property
	    //Netscape and Mozilla use the which property.
	    //Therefore the script checks for the which and keyCode properties.  KeyCode
	    //is the preferred property
	 	var iKeyCode = getkey(objEvent);
        if (iKeyCode == null) { return false; }
        
	    //Allow the arrow keys, backspace
	    if ((iKeyCode >=35 && iKeyCode <=40) || (iKeyCode >=96 && iKeyCode <=105) || iKeyCode == 46 || iKeyCode == 8 || iKeyCode == 9 || iKeyCode == 0) {
	        return true;
	    }
    
	    //Keys 0 - 9
	    if ((iKeyCode>=48 && iKeyCode<=57)) {
	        return true;
	    }
	    if(bAllowDecimal && (iKeyCode == 46 || iKeyCode == 190 || iKeyCode == 110 || iKeyCode == 188)) {
	        //check to see if there is already a decimal
	        
	        if( field != null ) {   
	            if( field.value.indexOf(".") == -1 ) {
	                //check to see if the decimal is the first char to be entered
	                if( field.value.length < 1 ) {
	                    field.value = "0.";
	                }
	                return true;
	            }

                if(languageCode=='fr' && field.value.indexOf(",") == -1 ) {
	                //check to see if the decimal is the first char to be entered
	                if( field.value.length < 1 ) {
	                    field.value = "0,";
	                }
	                return true;
	            }
	        }
	    }
	    return false;
	}
    
    function validatePercent(objText, oldValue, maxDigits, maxFractionDigits, languageCode) {
        var value = ''+unformatNumber(objText.value, languageCode);
        var decimalPos = value.indexOf('.');

        if (languageCode=='fr' && decimalPos == -1){
          decimalPos = value.indexOf(',');  
        }
        
        if (decimalPos == -1)
            decimalPos = value.length;
            
        var digits = value.substring(0, decimalPos);
        var fractionDigits = value.substring(decimalPos + 1, value.length);
        if (digits.length > maxDigits) {            
            objText.value=oldValue;
        } else if (fractionDigits.length > maxFractionDigits) {
            objText.value=oldValue;
        }
        
    }
    