function formatCurrency(num) {
    num = num.toString().replace(/\$|\,/g,'');        
    if(isNaN(num))
        num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num*100+0.50000000001);
    cents = num%100;    
    num = Math.floor(num/100).toString();
    if(cents<10)
        cents = "0" + cents;
    return (((sign)?'':'-') + num + '.' + cents);
}

function validatePhoneNumber(fieldNameA,fieldNameB,fieldNameC,name) {
    var actualNumber = fieldNameA.value + fieldNameB.value + fieldNameC.value;
    if (isNaN(actualNumber) || (fieldNameA.value.length != 3) || (fieldNameB.value.length != 3) || (fieldNameC.value.length != 4)) {
        alert('INVALID ENTRY: A PART OF THE ENTERED ' + name + ' PHONE NUMBER IS INVALID');
        fieldNameB.select();
        fieldNameB.focus();
        return 0;
    }
    return 1;
}

// validates a text field
function validateTextField(objAddressField,min,max,type,required,name) {
	var textEntered = objAddressField.value;
    var myText, myRegEx, result
    if (required == 1 && textEntered.length == 0) {
        alert('INVALID ENTRY : YOU NEED TO ENTER ' + name);
        objAddressField.select();
        objAddressField.focus();
        return 0;
    }
	if (required == 1 || textEntered.length > 0) {
        switch (type) {
            case 'wn':
	            if (isNaN(textEntered) || textEntered.indexOf('.') > 0) {
	                alert('INVALID ENTRY : ' + name + ' MUST BE AN INTEGER');
	                objAddressField.select();
	                objAddressField.focus();
	                return 0;
	            }
                break;
            case 'wnp':
	            if (isNaN(textEntered)) {
	                alert('INVALID ENTRY : ' + name + ' MUST BE AN INTEGER GREATER THAN OR EQUAL TO ZERO');
	                objAddressField.select();
	                objAddressField.focus();
	                return 0;
	            }
                else {
	                if ((textEntered.indexOf('.') > -1) || (Number(textEntered) < 0)) {
    	              alert('INVALID ENTRY : ' + name + ' MUST BE A WHOLE NUMBER GREATER THAN OR EQUAL TO ZERO');
    	              objAddressField.select();
    	              objAddressField.focus();
    	              return 0;	                
	                }
	            }
                break;
            case 'wnp+':
 	            if (isNaN(textEntered)) {
	                alert('INVALID ENTRY : ' + name + ' MUST BE AN INTEGER GREATER THAN ZERO');
	                objAddressField.select();
	                objAddressField.focus();
	                return 0;
	            }
                else {
	                if ((textEntered.indexOf('.') > -1) || (Number(textEntered) <= 0)) {
    	              alert('INVALID ENTRY : ' + name + ' MUST BE A WHOLE NUMBER GREATER THAN ZERO');
    	              objAddressField.select();
    	              objAddressField.focus();
    	              return 0;	                
	                }
	            }
                break;
            case 'n':
	            if (isNaN(textEntered)) {
	                alert('INVALID ENTRY : ' + name + ' MUST BE A NUMBER');
	                objAddressField.select();
	                objAddressField.focus();
	                return 0;
                }            
                break;
            case 't':
    	      if (checkForInvalidCharacters(objAddressField,name) == false) {return 0;}                
                break;
            case 'phone':
  	            if (textEntered.length < 7) {
	                alert('INVALID ENTRY : IMPROPER ' + name + ' FORMAT');
	                objAddressField.select();
	                objAddressField.focus();
	                return 0;	            
	            }
	            if (textEntered.indexOf('-') > -1) {
	                if (textEntered.indexOf('-') != 3) {
    	                alert('INVALID ENTRY : IMPROPER ' + name + ' FORMAT');
    	                objAddressField.select();
    	                objAddressField.focus();
    	                return 0;
                    }
                }
    		myText = new String(textEntered);
    		myRegEx = new RegExp('-','g');
    		myText = myText.replace(myRegEx,'');
    		myRegEx = new RegExp(' ','g');
    		myText = myText.replace(myRegEx,'');
    		myRegEx = new RegExp('[0-9][0-9][0-9][0-9][0-9][0-9][0-9]','g');
    		result = myText.match(myRegEx);
    		if (result == null) {
    			alert('INVALID ENTRY : IMPROPER ' + name + ' FORMAT');
    			objAddressField.select();
    			objAddressField.focus();
    			return 0;
    		}      
                break;
        }
        if ((textEntered.length < min || textEntered.length > max) && (type != 'f')) {
            if (min == max) {
                alert('INVALID ENTRY : ' + name + ' MUST BE ' + min +' CHARACTERS');
                objAddressField.select();
                objAddressField.focus();
                return 0;                
            }
            else {
                alert('INVALID ENTRY : ' + name + ' MUST BE BETWEEN ' + min + ' AND ' + max +' CHARACTERS');
                objAddressField.select();
                objAddressField.focus();
                return 0;
            }
        }
    }
    return 1;
}
// checks for bad characters
function checkForInvalidCharacters(objAddressField,name) {
    // need to check for any characters that cause Access a problem
    if (objAddressField.value.indexOf('\!') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \! IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }    
    if (objAddressField.value.indexOf('\@') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \@ IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\#') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \# IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\$') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \$ IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\%') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \% IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }    
    if (objAddressField.value.indexOf('\^') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \^ IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\&') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \& IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\*') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \* IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\(') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \( IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\)') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \) IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\_') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \_ IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\[') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \[ IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\]') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \] IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\{') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \{ IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\}') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \} IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\|') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \| IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\\') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \\ IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }    
    if (objAddressField.value.indexOf('\:') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \: IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }        
    if (objAddressField.value.indexOf('\;') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \; IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    } 
    if (objAddressField.value.indexOf('\"') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \" IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\<') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \< IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\>') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \> IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\?') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \? IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\/') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \/ IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\+') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \+ IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }
    if (objAddressField.value.indexOf('\=') >= 0) {
        alert('INVALID ENTRY : ' + name + ' CANNOT HAVE ANY \= IN IT');
        objAddressField.select();
        objAddressField.focus();
        return 0;        
    }    
    return 1;
}
// validates an email address
function validateEmail(objAddressField,required,max) {
	var emailAddressEntered = objAddressField.value;
	if (required == 1 || emailAddressEntered.length > 0) {
        if (objAddressField.value.indexOf('\,') >= 0) {
            alert('INVALID ENTRY : Email CANNOT HAVE ANY \, IN IT');
            objAddressField.select();
            objAddressField.focus();
            return 0;        
        }
		if ((emailAddressEntered.length > max) || (emailAddressEntered.indexOf('@') < 1) || (emailAddressEntered.lastIndexOf('.') < (emailAddressEntered.indexOf('@') + 2)) || (emailAddressEntered.indexOf('\'') > -1) || (emailAddressEntered.indexOf('"') > -1) ) {
			alert('INVALID ENTRY : IMPROPER EMAIL ADDRESS');
			objAddressField.focus();
			objAddressField.select();
			return 0;
		} else {
			return 1;
		}
    }
    return 1;
}
// validates a postal Code
function validatePostalCode(objAddressField,required) {
    var myText, myRegEx, result
	var postalCodeEntered = objAddressField.value;
	if (required == 1 || postalCodeEntered.length > 0) {
		if (postalCodeEntered.length != 6) {
			alert('INVALID ENTRY : IMPROPER POSTAL CODE');
			objAddressField.select();
			objAddressField.focus();
			return 0;
		}
		myText = new String(postalCodeEntered);
		myRegEx = new RegExp('[A-Z][0-9][A-Z][0-9][A-Z][0-9]','g');
		result = myText.match(myRegEx);
		if (result == null) {
			alert('INVALID ENTRY : IMPROPER POSTAL CODE FORMAT');
			objAddressField.select();
			objAddressField.focus();
			return 0;
		}	 
    }
    return 1;
}
// validates a select field
function validateSelect(objAddressField,required,name) {
	var optionSelected = false;
	if (required == 1) {
        if (objAddressField.options[objAddressField.selectedIndex].value.length > 0) {
            optionSelected = true;
	    }        		
	}
	if (optionSelected == false && required == 1) {
	    alert('INVALID ENTRY : YOU MUST SELECT A ' + name);
	    objAddressField.focus();
	    return 0;
    } else {return 1;}
}
// validates a check box
function validateCheckBox(objAddressField,required,name,num) {
	var optionSelected = false;
	if (required == 1) {
	    if (num > 1) {
            for (var i=0; i<num; i++) {
                if (objAddressField[i].checked == true) {
                    optionSelected = true;
                }
            }        		
	    } else {
	        if (objAddressField.checked == true) {
                optionSelected = true;
	        }
	    }
	}
	if (optionSelected == false) {
	    alert('INVALID ENTRY : YOU MUST SELECT A ' + name);
	    return 0;
    } else {return 1;}
}

