﻿function PertenOrder() {}

PertenOrder.prototype.initQuestionnaire = function (options) {
    options = options || {};
    this.formContainer = options.formContainer || $("#request-form");
    this.url = this.formContainer.data("url");
    this.pageId = this.formContainer.data("pageId");
    this.messageField = options.messageField || $("#request-form-question");
    this.emailField = options.emailField || $("#request-form-email");
    this.companyField = options.companyField || $("#request-form-company");
    this.positionField = options.positionField || $("#request-form-position");
    this.countryField = options.countryField || $("#request-form-country");
    this.postButton = options.postButton || $("#request-form-button");
    this.successOverlay = $("#request-form-success");
    this.formBox = $("#form-box");
    this.errorOverlay = $("#request-form-error");
    this.errorMessage = $(".error-message", this.errorOverlay);

    var currentInstance = this;

    $("a.close", this.successOverlay).click(function (e) {
        e.preventDefault();
        currentInstance.messageField.val('');
        currentInstance.emailField.val('');
        currentInstance.successOverlay.fadeOut("fast");
    });

    $("a.close", this.errorOverlay).click(function (e) {
        e.preventDefault();
        currentInstance.errorOverlay.fadeOut("fast");
    });

    this.postButton.click(function (e) {
        e.preventDefault();
        var data = currentInstance.getQuestionnaireData();
        var validationMessages = currentInstance.validate(data);
        if (validationMessages.length > 0) {
            currentInstance.onErrorPostedQuestionnaire(validationMessages.join("\n"));
            return false;
        }

        currentInstance.postQuestionnaire(data);
    });
};

PertenOrder.prototype.validate = function (data) {
	var messages = [];
	if (data.message.length <= 0) {
		messages.push("Question is mandatory. <br/>");
	}
	if (data.email.length <= 3) {
		messages.push("E-mail is mandatory. ");
	}

	return messages;
}

PertenOrder.prototype.postQuestionnaire = function (data) {
    var currentInstance = this;
    $.ajax({
        url: currentInstance.url,
        type: "GET",
        cache: false,
        data: data,
        success: function (data, textStatus, jqXHR) {
            currentInstance.onSuccessPostedQuestionnaire(data, textStatus, jqXHR);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            currentInstance.log(jqXHR.responseText);
            currentInstance.onErrorPostedQuestionnaire("Form could not be sent. Please try again later.");
        }
    });
};

PertenOrder.prototype.getQuestionnaireData = function () {
    return {
		message : this.messageField.val(),
		email : this.emailField.val(),
		pageId : this.pageId,
		company: this.companyField.val(),
		country: this.countryField.val(),
		position: this.positionField.val()
}
};

PertenOrder.prototype.onSuccessPostedQuestionnaire = function (data, textStatus, jqXHR) {
    this.successOverlay.show();
};

PertenOrder.prototype.onErrorPostedQuestionnaire = function (message) {
    this.log(message);
	this.errorMessage.html(message);
	this.errorOverlay.show();	
};

PertenOrder.prototype.log = function (msg) {
	if(window && window.console)
		window.console.log(msg);
};


