﻿function FeedbackBox() {
    this._feedback = null;
    this._hidden = true;

    this.init = function() {
        var self = this;

        this._feedback = $('<div class="feedback"><div class="feedback-form ui-frame"><div class="feedback-form-cont"><div><h5>We want your feedback!</h5>Tell us what you like, don’t like, what needs to be improved, inaccurate location data or anything else.</div><div>Name (optional)<br/><input type="text" class="feedback-name editbox" /></div><div>Email (optional)<br/><input type="text" class="feedback-email editbox" /></div><div>Feedback <span class="error-message-text hidden feedback-message-label"></span><br/><textarea class="feedback-message editbox"></textarea></div><div><button class="feedback-submit">Submit</button>&nbsp;<button class="feedback-cancel">Cancel</button></div></div><div class="feedback-thanks hidden"><div style="position:absolute; top:50%; left:50%; margin-top:-40px; margin-left:-70px;"><h5>Thank you!</h5></div></div></div><a href="javascript://"><span>Feedback</span></a><div class="end"></div></div>');
        this._feedback.appendTo(document.body);

        $('a', this._feedback).click(function() {
            if (self._hidden) self._show(); else self._hide();
        });

        $('.feedback-submit', this._feedback).button().click(function() {
            self._showError();

            var message = $('.feedback-message', self._feedback);
            if (message.val().length == 0) {
                self._showError('feedback-message-label', '- please fill this field in');
                message.focus();
                return;
            }

            var name = $('.feedback-name', self._feedback);
            var email = $('.feedback-email', self._feedback);

            $.api('WebAPI', 'SaveFeedback', { name:name.val(), email:email.val(), feedback: message.val(), url: document.location.href }, function() {
                $('.feedback-form-cont', self._feedback).hide();
                $('.feedback-thanks', self._feedback).show();
                window.setTimeout(function() { self._hide(); }, 1000);
            });
        });

        $('.feedback-cancel', this._feedback).button().click(function() {
            self._hide();
        });

    }

    this._showError = function(cls, msg) {
        if (msg) $((cls ? '.' + cls : '.error-message-text'), this._feedback).show().html(msg);
        else $((cls ? '.' + cls : '.error-message-text'), this._feedback).hide();
    }

    this._hide = function() {
        this._feedback.animate({ 'left': '-300px' }, 100);
        this._hidden = true;
    }

    this._show = function() {
        $('.feedback-form-cont', this._feedback).show();
        $('.feedback-thanks', this._feedback).hide();
        this._showError();
        this._feedback.animate({ 'left': '0px' }, 100);
        this._hidden = false;
        $('.feedback-name', this._feedback).val('').focus();
    }

    this.init();
}

if (!($.browser.msie && $.browser.version.substr(0, 1) < 7)) {
    $(document).ready(function() {
        new FeedbackBox();

    });
}
