var submitcount=0;

var today = new Date();
var yearToday  = today.getFullYear();
var monthToday = today.getMonth()+1;
var mdayToday  = today.getDate();

var msg = {
    req_edt:"The selected field must be filled in.",
    req_edt1:"",
    req_edt2:"",
    req_sel:"A selection from the list must be made.",
    req_diffsel:"A different selection from the list must be made.",
    req_radio:"Please make a selection",
    req_checkbox:"You must agree to this item to be eligible. ",
    req_gen:"All required fields must be completed before moving to the next page.",
    req_nonhead:"Items marked with --- cannot be selected",
    req_num_only:"The selected field accepts numbers only.",
    req_min_size:"The selected field requires ",
    req_min_size2:"The selected field requires either ",
    req_min_is_max:"The selected field must be completely filled in.",
    req_valid_email:"A valid e-mail address is required. Example: name@example.com",
    req_matching_email:"Your e-mail addresses do not match",
    req_must_be_age:"You must be 18 to register for this offer",
    
    returns:".\n\n"
};

var fields = {
    EMAL:"",
    FNAM:"",
    LNAM:"",
    ADD1:"",
    CITY:"",
    STAT:"",
    ZIPC:"",
    CTRY:"",
    PHON:"",
	IATC:"",
    FCOM:"",
	GS03:"",
    NEMA:"",
    GS14:"",
    GS03:"",
    GS13:"",
    GS11:"",
    GS12:"",
    GS02:""
};

function validate(form) {
    if (submitcount==0) {
        ++submitcount;
        var obj;
        var error='';
        var br="\n";

        for (var field in fields) {
            eval("obj = form.elements[field]");
            eval("fieldspan = '"+field+"_SPAN'");
            if (typeof(obj) == "undefined")  continue;
            else if (document.getElementById && document.getElementById(fieldspan) && document.getElementById(fieldspan).style.visibility == 'hidden') { // is W3C-DOM
                 continue;
		  }
            else if (obj.type == "text") {
                if (obj.value == "") {
                    switch (field) {
                        default: {
                            error='missingreq';
                            break;
                        }
                    }
                }
                else if (field == "EMAL" && (obj.value.indexOf("@",0)==-1 || obj.value.indexOf(".",0)==-1 || hasWhitespace(obj.value))) error='bademail';
				//else if (form.EMAL.value != form.EMALC.value) error='emailmatch';
            } 
            else if (obj.type == "select-one") {
                if (obj.selectedIndex <= -1 || obj.options[obj.selectedIndex].value == "") {
                    switch (field) {
                        default: {
                            error='missingsel';
                            break;
                        }
                    }
                }
                else if (field == "YEAR") { 
                    error = badDate(form.YEAR.options[form.YEAR.selectedIndex].value, form.MNTH.options[form.MNTH.selectedIndex].value, form.DAYS.options[form.DAYS.selectedIndex].value, "2007", "08", "31"); 
                }
            } else if (obj.type == "checkbox") {
                var foundchecked=0;
                if (field == "IATC"  && !form.elements['IATC'].checked || field == "FCOM" && !form.elements['FCOM'].checked ) {
                    error='requiredcheckbox';
                }
             } else if (obj[0] && obj[0].type == "radio") {
                var foundchecked=0;
                for (var i=0; i < obj.length; i++) {
                    if (obj[i].checked) {
                        foundchecked=1;
                        break;
                    }
                }
                if (!foundchecked) {
                    switch (field) {
                        default:
                            error='missingradio';
                            break;
                    }
                }
            }
            
            // Begin custom field validation for Senseo Survey
            
            // if the street address is supplied, require everything else
			/*
			var addr_fields = {
			    CITY:"",
			    STAT:"",
			    ZIPC:"",
			    CTRY:""
			};
			eval("add1 = form.elements.ADD1");
			if (add1 != '') {
				for (var field in addr_fields) {
            		eval("obj = form.elements[field]");
            		
            	        switch (field) {
            	        	case "CITY": {
            	        		if (obj.value == "") {
									error='missingreq';
                    			}
            	        		break;	
            	        	}
            	        	case "STAT": {
            	        		if (obj.selectedIndex <= -1 || obj.options[obj.selectedIndex].value == "") {
									error='missingsel';
                    			}
            	        		break;	
            	        	}
            	        	case "ZIPC": {
            	        		if (obj.value == "") {
									error='missingreq';
                    			}
            	        		break;	
            	        	}
            	        	case "CTRY": {
            	        		if (obj.selectedIndex <= -1 || obj.options[obj.selectedIndex].value == "") {
									error='missingsel';
                    			}
            	        		break;	
            	        	}
            	            default: {
            	                break;
            	            }
            	        }
            	}
            }
            */
			
			// Begin error > response logic
            if (error) {
                window.scroll(0,0);
                (error == 'missingradio') ? obj[0].focus() : obj.focus();
                switch (error) {
                    case 'req_num_only':
                    case 'min_size2':
                    case 'min_size4':
                        alert( msg[error] + br + msg['req_gen'] );
                        break;
                    case 'bademail':
                        alert( msg['req_valid_email'] + br + msg['req_gen'] );
                        break;
                    case 'emailmatch':
                        alert( msg['req_matching_email'] + br + msg['req_gen'] );
                        break;
                    case 'month':
                    case 'day':
                    case 'year':
                        alert( msg['req_diffsel'] );
                        break;
                    case 'missingsel':
                    case 'missingradio':
                        alert( msg['req_radio'] + br + msg['req_gen'] );
                        break;
                    case 'requiredcheckbox':
                        alert( msg['req_checkbox'] + br + msg['req_gen'] );
                        break;
                    case 'missingreq':
                    default:
                        alert( msg['req_edt'] + br + msg['req_gen'] );
                        break;
                }
                submitcount--;
                return false;
            }
        }
        return true;
    }
    return false;
}

function validateAgePage(form) {
	var		error = '';
	
    if (submitcount==0) {
        ++submitcount;
        
		theirAge = DeriveAge ( form.YEAR.value, form.MNTH.value, form.DAYS.value, yearToday, monthToday, mdayToday );
               
		if ( theirAge < 18 ) {
			error='tooYoung';
		}
	
		if (error) {
			switch (error) {
				case 'tooYoung':
					alert( msg['req_must_be_age'] );
					break;
				default:
					alert( msg['req_edt'] + br + msg['req_gen'] );
					break;
			}
			submitcount--;
			return false;
		}
	}	


	return true;
}

var DHTML = (document.getElementById || document.all || document.layers);

function getObj(name) {
    if (document.getElementById) {
          return document.getElementById(name);
    }
    else if (document.all) {
          return document.all[name];
    }
    else if (document.layers){
          return document.layers[name];
    }
}


