//this executes when page is ready to be loaded
$(document).ready(function() {
    $('.survey_form').submit(function () {
    	var formValid = true;
    	//alert(this);
    	var inputs = this.elements;
    	//alert(inputs+"###length:"+inputs.length);
    	var currInputName = ''; //handle check and radio
    	var prevInputName = '';
    	var multiInputHasResponse = false;
    	var handlingMultiInput = false; //we are handling a mullt input
    	var prevInput = null;
    	var invalidInput = null;
    	for(var i = 0; i < inputs.length; i++){   
    		if ( fieldsToSkipValidation.indexOf(inputs[i].name) >= 0){
    			//alert("skipping yall");
    			continue;
    		}
    		//alert("i:"+i+"###"+inputs[i].name+'####'+inputs[i].type+'####'+inputs[i].value+"###"+fieldsToSkipValidation+"####"+fieldsToSkipValidation.indexOf(inputs[i].name));
    		if ( (inputs[i].type == "text" || inputs[i].type == "textarea") && inputs[i].value == ''){
    			formValid = false;
    			if ( handlingMultiInput ) formValid = formValid && multiInputHasResponse;
    			handlingMultiInput = false;
    			prevInput = inputs[i];
    		}else if ( inputs[i].type == "select-one"){
    			//alert("selected index:"+ inputs[i].selectedIndex+"\t value+"+inputs[i].options[inputs[i].selectedIndex].value);
    			var selectValue = inputs[i].options[inputs[i].selectedIndex].value;
    			if ( selectValue == ""){
    				formValid = false;
    				if ( handlingMultiInput ) formValid = formValid && multiInputHasResponse;
    					handlingMultiInput = false;
    			}
    			prevInput = inputs[i];
    		}else if ( inputs[i].type == "radio" || inputs[i].type == "checkbox"){
    			currInputName = inputs[i].name;
    			//alert(inputs[i].name+'#radio or checkbox#'+inputs[i].type+"####checked:"+inputs[i].checked);
    			if ( currInputName == prevInputName || prevInputName == ''){
    				multiInputHasResponse = multiInputHasResponse || inputs[i].checked;
    			}else{
    				if ( handlingMultiInput ){ //if we are already handling a multi input
    					//we have the next input
    					formValid = formValid && multiInputHasResponse;
    				}
    				multiInputHasResponse = false;
    				multiInputHasResponse = multiInputHasResponse || inputs[i].checked;
    			}
    			handlingMultiInput = true;
    			prevInputName = inputs[i].name;
    			if ( !formValid && invalidInput == null && i > 0){
        			invalidInput = inputs[i-1];
        		}
    			prevInput = inputs[i];
    		}
    		//alert("i:"+i+"###"+inputs[i].name+'####'+inputs[i].type+'####'+inputs[i].value+"multiInputHasResponse:"+multiInputHasResponse+"####checked:"+inputs[i].checked+"formValid:"+formValid+"###handlingMultiInput:"+handlingMultiInput+"####multiInputHasResponse:"+multiInputHasResponse);
    		if ( !formValid && invalidInput == null){
    			invalidInput = inputs[i];
    		}
    		if ( !formValid){
    			break;//break the loop if form is not valid
    		}
    	}
    
    	if ( handlingMultiInput ){ //we are still handling a multi input
    		formValid = formValid && multiInputHasResponse;
    		//alert("handlingMultiInput LAST formValid:"+formValid+"####multiInputHasResponse:"+multiInputHasResponse);
    		if ( !formValid && invalidInput == null){
    			invalidInput = prevInput;
    		}
    	}
    	if ( !formValid){
    		alert("Please provide an answer for all questions before moving forward.");
    		//console.log($(invalidInput));
    		if ( invalidInput != null){
    			$(document).scrollTop($(invalidInput).parents('.survey_question:eq(0)').find('>h2').append(focusImg).parent().offset().top - 5);
    		}
    		return false;
    	}else{
    		return true;
    	}
    	return false;
    });    
});

