        //
        // FIELD TYPE VALIDATION
        //
        
        var failedFields = '';
        var failedFieldCount = 0;
        
        function addFailure(name) {
            if ( failedFields != '' ) failedFields = failedFields + ', ';
            failedFields = failedFields + name;
            failedFieldCount ++;
        }
        function isEmail(name) {
            var val = document.getElementById(name).value;
            var reg = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
            var OK = reg.test(val);
            if ( !OK ) { addFailure(name); }
            return OK;
        }
        
        function isPhone(name) {
            var val = document.getElementById(name).value;
            var reg = /^[\(]*[0-9]{3}[\) -]*[0-9]{3}[ -]*[0-9]{4}$/;
            var OK = reg.test(val);
            if ( !OK ) { addFailure(name); }
            return OK;
        }
        
        function isZip(name){            
            var zip = document.getElementById(name).value;
            
            if(zip.match(/^[0-9]{5}$/)){ return true; }
            
            zip = zip.toUpperCase();
            if(zip.match(/^[A-Z][0-9][A-Z][0-9][A-Z][0-9]$/)){ return true; }
            if(zip.match(/^[A-Z][0-9][A-Z].[0-9][A-Z][0-9]$/)){ return true; }
 
            addFailure(name);
        }
        
        function isSSN(name) {
            var val = document.getElementById(name).value;
            var reg = /^([0-9]{3})[ -]*([0-9]{2})[ -]*([0-9]{4})$/;
            var OK = reg.test(val);
            if ( !OK ) { addFailure(name); }
            return OK;
        }
        
        function isDate(name) {
            var val = document.getElementById(name).value;
            var reg = /^([0-9]{1,2})[/-]([0-9]{1,2})[/-]([0-9]{2,4})$|^([0-9]{2,4})[/-]([0-9]{1,2})[/-]([0-9]{1,2})$/;
            var OK = reg.test(val);
            if ( !OK ) { addFailure(name); }
            return OK;
        }
        
        function isCabotDate(name) {
            var val = document.getElementById(name).value;
            // var reg = /^([0-9]{1,2})/([0-9]{1,2})/([0-9]{4})$/;
            var reg = /^([0-9]{1,2})[/]([0-9]{1,2})[/]([0-9]{4})$/;
            var OK = reg.test(val);
            if ( !OK ) { addFailure(name); }
            return OK;
        }
        
        function isYear(name) {
            var val = document.getElementById(name).value;
            var OK = ( val > 1900 && val < 2100 );
            if ( !OK ) { addFailure(name); }
            return OK;
        }
        
        function isNumeric(name) {
            var val = document.getElementById(name).value;
            var reg = /^([0-9\.]+)$/;
            var OK = reg.test(val);
            if ( !OK ) { addFailure(name); }
            return OK;
        }
        
        function isNotEmpty(name) {
            var obj = document.getElementById(name);
            var val = getFieldValue(name);
            if ( val != '' ) return true;
            addFailure(name);
            return false;
        }

        function getFieldValue(name) {
            var obj = document.getElementById(name);
            if(obj == null){
                return;
            } else {
                if ( obj.type == 'text') {
                    return obj.value;
                }
                if ( obj.type == 'textarea') {
                    return obj.value;
                }
                if ( obj.type == 'checkbox') {
                    return obj.checked;
                }
                if ( obj.type == 'radio') {
                    return getCheckedValue(name);
                }
                if ( obj.type == 'select-one') {
                    return obj.options[obj.selectedIndex].value;
                }
            }
        }

        function getCheckedValue(name) {
            var val = '';
            var i=0;
            for(i=0; i<100; i++) {
                if ( val == '' ) {
                    if ( i == 0 ) is = ''; else is = i;
                    var obj = document.getElementById(name + is);
                    if ( obj ) {
                        if ( obj.checked ) val = obj.value;
                    }
                }
            }
            return val;
        }
