
        var $myStatus       = true;
        var $failedFields   = '';

        function reformattedDate(date) {
            var dte     = new Date(date);
            var m       = dte.getMonth()+1;
            var d       = dte.getDate();
            var y       = dte.getFullYear();
            
            y < 2000    ? y = parseInt(y)+100 : '';
            m < 10      ? m = '0'+m : '';
            d < 10      ? d = '0'+d : '';
            
            return m +'/'+ d +'/'+ y;
        }

        function fieldFailed(name){
            var def = $(name).attr('default');
            
            $(name).addClass('bad');
            if($failedFields != ''){ $failedFields += ', '; }
            $failedFields += def;
            
		}

        function fieldOK(name){
            var val         = $(name).val();
            var def         = $(name).attr('default');
            
            if(val != '' && val != def){
                $(name).removeClass('bad');
                
                return true;
            } else {
                $(name).addClass('bad');
                if($failedFields != ''){ $failedFields += ', '; }
                $failedFields += def;
                
                return false;
            }
        }
        
        function selectOK(name) {
            var val = $(name).val();
            var def = $(name).attr('default');
            
            if(val == ''){
                $(name).addClass('bad');
                if($failedFields != ''){ $failedFields += ', '; }
                $failedFields += def;
                
                return false;
            } else {
                $(name).removeClass('bad');
                
                return true;
            }
        }
                
        function emailOK(name){
            var val          = $(name).val();
            var def          = $(name).attr('default');
            
			var illegalChars = /[\(\)\<\>\,\;\:\\\/\"\[\]]/;
			var emailFilter  = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
			
			// ALTERNATIVE REGEX EMAIL FILTERS
			// var emailFilter  = /^.+@.+\..{2,3,4,6}$/;
			// var emailFilter  = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
            
            if(val != '' && val != def){
				if (val.match(illegalChars)) {
				    window.alert('The email address contains illegal characters.');
					fieldFailed(name);
            		return false;
				}
				if (!(emailFilter.test(val))) { 
				    window.alert('Please enter a valid email address.');
					fieldFailed(name);
            		return false;
				}            

                $(name).removeClass('bad');
                return true;
           } else {
				fieldFailed(name);
            	return false;
            }
        }

		//
		// FIELD TYPE VALIDATION
		//
		function addFailure(name) {
			if ( failedFields != '' ) failedFields = failedFields + ', ';
			failedFields = failedFields + name;
		}
		function isEmail(name) {
			val = document.getElementById(name).value;
			reg = /\w{1,}[@][\w\-]{1,}([.]([\w\-]{1,})){1,3}$/;
			OK = reg.test(val);
			if ( !OK ) { addFailure(name); }
			return OK;
		}
		
		function isPhone(name) {
			val = document.getElementById(name).value;
			reg = /^[\(]*[0-9]{3}[\) -]*[0-9]{3}[ -]*[0-9]{4}$/;
			OK = reg.test(val);
			if ( !OK ) { addFailure(name); }
			return OK;
		}
		
		function isZip(name) {
			val = document.getElementById(name).value;
			reg = /^(\d{5}-[0-9]{4}|\d{5})$/;
			OK = reg.test(val);
			if ( !OK ) { addFailure(name); }
			return OK;
		}
		
		function isSSN(name) {
			val = document.getElementById(name).value;
			reg = /^([0-9]{3})[ -]*([0-9]{2})[ -]*([0-9]{4})$/;
			OK = reg.test(val);
			if ( !OK ) { addFailure(name); }
			return OK;
		}
		
		function isDate(name) {
			val = document.getElementById(name).value;
			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})$/;
			OK = reg.test(val);
			if ( !OK ) { addFailure(name); }
			return OK;
		}
		
		function isNotEmpty(name) {
			val = document.getElementById(name).value;
			if ( val != '' ) return true;
			addFailure(name);
			return false;
		}

