// Define error messages and split the required fields
var errExists;
var errorID		= 'errormsg';
var errorClass	= 'error'
var errorMsg	= 'Please enter or fix the fields marked with ';
var errorSrc	= '/jscripts/images/alert.gif';
var errorAlt	= 'Error';
var errorTitle	= 'This field has an error!';

// create image, add to and colourise the error fields
var errorIndicator = '<img alt="'+errorAlt+'" src="'+errorSrc+'" title="'+errorTitle+'" class="errorIndicator"/>';

$(function(){
	bindSave();
	bindLater();
	bindPrev();
});
var errExists;
function bindSave(){
	$("#btnSubmit").click(function(){
		errExists = false;
		$this = $(this);
		$("#"+errorID).remove();
		$(".errorIndicator").remove();
		$("."+errorClass).removeClass(errorClass);
		var reqfields = $("#reqfields").val();
		if(reqfields!=""){
			reqfields = $("#reqfields").val().split(",");
			var theField;
			var theFieldVal;
			for(var i=0;i<reqfields.length;i++){
				// check if required field is there
				var parts = reqfields[i].split("_");
				switch(parts[0]){
					case "i":
						theField = $("input[@name='"+parts[1]+"']");
						break;
					case "r":
						theField = $("input[@name='"+parts[1]+"']");
						break;
					case "c":
						theField = $("input[@name='"+parts[1]+"[]']");
						break;
					case "s":
						theField = $("select[@name='"+parts[1]+"']");
						break;
				}
				if(theField.hasClass("text")){
					theFieldVal = theField.val();
					if(theFieldVal=='' || (parts[2]=="e" && !cf_isEmailAddr(theFieldVal))){
						cf_adderr(theField);
					}
				}else if(theField.hasClass("select-one")){
					theFieldVal = theField.val();
					if(theFieldVal==''){
						cf_adderr(theField);
					}
				}else if(theField.hasClass("radio") || theField.hasClass("checkbox")){
					if(theField.hasClass("radio")){
						theFieldVal = $("input[@name='"+parts[1]+"'][@checked]").val();
					}else{
						theFieldVal = $("input[@name='"+parts[1]+"[]'][@checked]").val();
					}
					if(typeof theFieldVal == "undefined" || theFieldVal == ""){
						$(theField)
							.filter(":last")
							.parent()
							.parent()
							.after('<p class="error">choose one</p>');
						errExists = true;
					}
				}
			}
		}
		
		if(errExists){
			$("#surveyHolder").after('<div id="'+errorID+'"><p>'+errorMsg+' '+errorIndicator+'</p></div>');
			return false;
		}

		$("#msgHolder").html('<img src="/jscripts/images/loader.gif">');
		$("#Option").val("Save");
		$("#isAjax").val(1);
		var data = $("#frmSurvey").formSerialize();
		$.post(
			$("#scriptName").val(),
			data,
			function(txt){
				$("#msgHolder").html("");
				var parts = txt.split("{|}");
				$("#surveyHolder").html(parts[0]);
				if(parts.length==5){
					// next step is comming
					$("#sid").val(parts[1]);
					$("#ssStep").val(parts[2]);
					$("#prevStep").val(parts[3]);
					if(parts[1]=="0" || parts[2]==parts[4]){
						if(parts[2]==parts[4]){
							$("#btnSubmit").val("Finish");
						}
						$("#btnLater").hide();
					}else{
						$("#btnLater").show();
					}
					if(parts[3]=="0"){
						$("#btnPrev").hide();
					}else{
						$("#btnPrev").show();
					}
				}else{
					$("#btnPrev").hide();
					$("#btnSubmit").hide();
					$("#btnLater").hide();
				}
				txt = null;
			}
		)
		return false;
	});
}
function bindLater(){
	$("#btnLater").click(function(){
		$("#msgHolder").html('<img src="/jscripts/images/loader.gif">');
		$("#Option").val("ContLater");
		var data = $("#frmSurvey").formSerialize();
		$.post(
			$("#scriptName").val(),
			data,
			function(txt){
				$("#msgHolder").html(txt);
				$("#frmSurvey").hide();
				txt = null;
			}
		)
		return false;
	});
}
function bindPrev(){
	$("#btnPrev").click(function(){
		$("#msgHolder").html('<img src="/jscripts/images/loader.gif">');
		$("#Option").val("Previous");
		var data = $("#frmSurvey").formSerialize();
		$.post(
			$("#scriptName").val(),
			data,
			function(txt){
				$("#msgHolder").html("");
				var parts = txt.split("{|}");
				$("#surveyHolder").html(parts[0]);
				if(parts.length==5){
					// next step is comming
					$("#sid").val(parts[1]);
					$("#ssStep").val(parts[2]);
					$("#prevStep").val(parts[3]);
					if(parts[1]=="0" || parts[2]==parts[4]){
						if(parts[2]==parts[4]){
							$("#btnSubmit").val("Finish");
						}
						$("#btnLater").hide();
					}else{
						$("#btnLater").show();
					}
					if(parts[3]=="0"){
						$("#btnPrev").hide();
					}else{
						$("#btnPrev").show();
					}
				}
				txt = null;
			}
		)
		return false;
	});
}
function cf_adderr(o){
	$(o)
		.addClass(errorClass)
		.before(errorIndicator);
	errExists = true;
}
function cf_isEmailAddr(str){
	return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
}
