$(document).ready(function() {
	if(typeof progressiveFill == 'function') {
		progressiveFill(); 
		progrsseiveForm();
	}else{
		return;
	}
});

var validateFields = [];
	
function progrsseiveForm(){	
	var phase1_complete = 0;
	for ( var i in phase1 ){
		//always validate phase1 elements
		validateFields.push($("#"+phase1[i]));
		if($("#"+phase1[i]).val()){
	    	phase1_complete++;
	    }
	} 

	if(phase1_complete == (parseInt(i)+1)){
		//all of phase1 is complete
		//leave email and one random field showing 
		var randomNumber = (Math.floor(Math.random() * phase1_complete));
		randomNumber = 0;
		if(phase1[randomNumber] == "email"){
			(randomNumber > 0) ? randomNumber-- : randomNumber=0;
		}
		for ( var i in phase1 ){
			// (but keep first_name & last_name showing together) 
			if( (phase1[randomNumber] == 'first_name' && phase1[i] == 'last_name') ||
					(phase1[randomNumber] == 'last_name' && phase1[i] == 'first_name') ){
				continue;
			}else if(phase1[i] != 'email' && parseInt(i) != randomNumber){
				$(".form_"+phase1[i]).css("display", "none");
			}
		}
		//show phase2 items
		var phase2_shown = 0;
		for(i=0; i < phase2.length; i++){
			var element = $("#"+phase2[i]);
			if(!element.is('input')){
				element = $('#select-'+phase2[i]);
			}
			if(phase2_shown > 1){
				$(".form_"+phase2[i]).css("display", "none");
		    }else if(element.val() && element.val() != 0 && element.val() != '--'){
				$(".form_"+phase2[i]).css("display", "none");
			}else{
				//add validation to element
				validateFields.push(element);
				phase2_shown++;
			}
		}
		
	}else{
		//hide phase2
		for ( var i in phase2 ){
			$(".form_"+phase2[i]).css("display", "none");
		} 
	}
	//require all phase3
	for ( var i in phase3 ){
		validateFields.push($("#text-mtcaptcha"));
	} 
}


function validate(){
	var valid = true;
	for (var i in validateFields){
		var eValue = validateFields[i].val();
		var eID = validateFields[i].attr('id');
		
		if (!eValue && eID == 'text-mtcaptcha') {
			if (jQuery.trim(eValue.toLowerCase()) != 'mindtouch') {
				putErrorMsg(validateFields[i], 'You did not input the correct phrase.');				
				valid = false;
			}
		}else if(eID == 'select-state' && eValue == 0 && !$("#text-province").val() ){
			putErrorMsg(validateFields[i], 'This is a required field.');
			valid = false;
		}else if(eID == 'select-country' && eValue == "--"){
			putErrorMsg(validateFields[i], 'This is a required field.');
			valid = false;
		}else if(!eValue){
			putErrorMsg(validateFields[i], 'This is a required field.');
			valid = false;
		}else{
			putErrorMsg(validateFields[i], '');
		}
		
		if (eValue && eID == 'email') {
			var emailValid = /^[a-zA-Z0-9_!&=`~#%'\/\$\^\|\+\?\{\}-]+(\.[a-zA-Z0-9_!&=`~#%'\/\$\^\|\+\?\{\}-]+)*@[a-zA-Z0-9]([a-zA-Z0-9_-])*(\.[a-zA-Z0-9][a-zA-Z0-9_-]*)+$/; 
			if (!emailValid.test(eValue)) {
				putErrorMsg(validateFields[i], 'You did not input a valid email address.');
				valid = false;
			}
		}
	}
	return valid;
}


function putErrorMsg(element, message){
	var next = element.next();
	if(next.length){
		next.next().remove();
	}
	if(message){
		element.after('<br><span class="error">'+message+'</span>');
	}
}


