﻿/*
  to use this ...
  
  create a container on the page you want to use it on
  then, create a document.ready function that calls the loadSurvey function below
  
  MAKE SURE THESE FILES ARE INCLUDED ON YOUR PAGE 
  scripts/Survey.js
  scripts/jquery/jqueryTemplate.js
  scripts/surveyContainer.html
*/

var currentProductInterest = '';
var wrapId;

function loadSurvey(surveyid, containerId, productInterest) {
    currentProductInterest = productInterest;
    wrapId = containerId;
    com.realprosystems.web.corporate.Survey.LoadQuestions(surveyid,
            function(arg) { loadSurveyComplete(arg, containerId); }
            );
}

function loadSurveyComplete(arg, containerId) {
    var output = $('#tmpltSurvey').parseTemplate(arg);
    $(containerId).html(output);
}

function submitSurvey(surveyid) {
	showSavingMsg('Fetching results',surveyid);
	var items = getSurveyAnswersArray(surveyid);
	var firstname = $('#firstname_' + surveyid).val();
	var lastname = $('#lastname_' + surveyid).val();
	var state = $('#state_' + surveyid).val();
	var country = ''; // $('#country_' + surveyid).val();
	var email = $('#email_' + surveyid).val();
	var phone = $('#phone_' + surveyid).val();

	if (validateData(firstname, lastname, state, email,surveyid)) {
		com.realprosystems.web.corporate.Survey.SaveSurvey(surveyid, items, firstname, lastname, state, country, email, phone, currentProductInterest,
            function(arg) { SaveComplete(arg, surveyid); },
            function(arg) { SaveCompleteError(arg, surveyid); },
            function(arg) { SaveCompleteError(arg, surveyid); }
            );
	}
}
function SaveCompleteError(arg, surveyid) {
	alert('save survey error');
	alert(surveyid);
	alert(arg);
}

function getSurveyAnswersArray(surveyid) {
    var items = new Array();
    var questionCount = $('#questionCount_' + surveyid).val();

    for (var i = 0; i < questionCount; i++) {
        var questionId = $('#questionId_' + surveyid + '_' + i).val();
        var answerYes = $('input[name="q' + i + '"]:checked').val();
        var item = new Array();
        item[0] = questionId;
        if (answerYes == 'yes') {
            item[1] = true;
        }
        else item[1] = false;

        items[i] = item;
    }

    return items;
}

function showSavingMsg(msg,surveyId) {
    //do something here to let them know it is in process of saving
    $('#survey_'+surveyId).hide('slow');
    $(wrapId).append('<p id="savingMsg" style="display:none;">' + msg + '</p>');
    $('#savingMsg').show('slow');
}

function SaveComplete(arg, surveyId) {
	//hide the processing message here
	$('#savingMsg').hide('fast');
	$(wrapId).append('<div id="surveyResults" style="display:none;">test</div>');
	$(window).scrollTop(y = $('#survey').offset().top - 30);
	if (arg.indexOf('Error') > -1)
	{
		$('#surveyResults').html(arg);
		$('#surveyResults').show('fast');
		$('#survey_' + surveyId).show('slow');
		//show error message
	}
	else {
		$('#surveyResults').html(arg);
		$('#surveyResults').show('fast');
		//show non error message
	}
}

function validateData(first,last,state,email,surveyId) {
	var noerror = 1;
	var nameReg = /^[A-Za-z\-\s,\']+$/;
	var stateReg = /^([A-Z]{2}|[A-Z]{2}\-[A-Z]{2})$/;
	var emailReg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z\.]{2,6})$/;
	var select = '#survey h3';

	$('#savingMsg').hide('fast');
	$('.errMsg').remove();
	$('.inputError').removeClass('inputError');
	if (!nameReg.test(first)) {
		noerror = 0;
		$(select).after('<p class="errMsg">The First Name field is required.</p>');
		$('#firstname_' + surveyId).addClass('inputError');
	}
	if (!nameReg.test(last)) {
		noerror = 0;
		$(select).after('<p class="errMsg">The Last Name field is required.</p>');
		$('#lastname_' + surveyId).addClass('inputError');
	}
	if (!stateReg.test(state)) {
		noerror = 0;
		$(select).after('<p class="errMsg">The State or Province field is required.</p>');
		$('#state_' + surveyId).addClass('inputError');
	}
	if (!emailReg.test(email)) {
		noerror = 0;
		$(select).after('<p class="errMsg">A valid email address is required.</p>');
		$('#email_' + surveyId).addClass('inputError');
	}
	if (!noerror) {
		$(window).scrollTop(y = $('#survey').offset().top - 30);
		$('#survey_' + surveyId).show('slow');
	}
	return noerror;
}
