﻿/* Extensions */
String.prototype.Format = function() {
    var str = this;
    for (var i = 0; i < arguments.length; i++) {
        while (str.indexOf("{" + i + "}") > 0) {
            str = str.replace("{" + i + "}", arguments[i]);
        }
    }

    return str;
};

Survey = {
    Templates: {
        Question: "<div class=\"questionIndex\">Question {0}:</div><div class=\"questionContent\">{1}</div>{2}",
        Control: "<div class=\"questionResult\"><span>YES</span><input type=\"radio\" id=\"{0}_yes\" name=\"{0}_result\" /><span>NO</span><input type=\"radio\" id=\"{0}_no\" name=\"{0}_result\" /></div>",
        Dialog: "<div class=\"survey\">"
            + "<div class=\"surveyHeader\">"
                + "<div class=\"surveyTitle\">Mini survey</div>"
                + "<div class=\"surveyClose\"><span>Close</span></div>"
            + "</div>"
            + "<div class=\"surveyBody\">{0}</div>"
            + "<div class=\"surveyControl\">"
                + "<div class=\"survey-special01\"><div class=\"surveySubmit\"><span></span></div></div>"
                + "<div class=\"survey-special02\"><div class=\"surveyCancel\"><span>No Thanks</span></div></div>"
            + "</div>"
            + "<div class=\"surveyFooter\"></div>"
           + "</div>"
    },
    Show: function(settings) {
        if (settings) {
            var dialog = Survey.CreateDialog(settings.Survey);

            $("body").append(dialog);


            var position = function() {
                var win = $(window);
                var el = $("div.survey");
                var left = (win.width() / 2) - (el.width() / 2);
                var top = (win.height() / 2) - (el.height() / 2) + win.scrollTop();

                el.css("top", top + "px").css("left", left + "px");
                return el;
            };

            setTimeout(function() {
                position().fadeIn("slow");
            }, 1000);
            $(window).scroll(position).resize(position);

            $("div.surveyCancel span, div.surveyClose").click(function() { Survey.Cancel(settings) });
            $("div.surveySubmit span").click(function() { Survey.Submit(settings) });
        }
    },
    CreateDialog: function(survey) {
        var questions = "";
        for (var i = 0; i < survey.Questions.length; i++) {
            var control = Survey.Templates.Control.Format("" + (i + 1));
            var question = survey.Questions[i];
            questions += Survey.Templates.Question.Format(i + 1, question.Content, control);
        }

        return Survey.Templates.Dialog.Format(questions);
    },
    Cancel: function(settings) {
        $.ajax({
            type: "post",
            url: settings.ProcessUrl,
            data: { "page": settings.Page }
        });
        $("div.survey").remove();
    },
    Submit: function(settings) {
        var results = "";
        for (var i = 0; i < settings.Survey.Questions.length; i++) {
            var q = settings.Survey.Questions[i];
            var result = -1;
            if ($("#" + (i + 1) + "_yes").attr("checked")) {
                result = 1;
            }
            if ($("#" + (i + 1) + "_no").attr("checked")) {
                result = 0;
            }
            results += q.Id + ":" + result + ",";
        }
        $.ajax({
            type: "post",
            url: settings.ProcessUrl,
            data: { "data": results, "page": settings.Page }
        });
        $("div.survey").remove();
    }
};

$(function() {
    if (SurveySettings) {
        Survey.Show(SurveySettings);
    }
});
