/**
 * @example
 *  $('#formID').mithra({
 *      "selectorInitMsg"   : "#divId1",
 *      "selectorExecMsg"   : "#divId2",
 *      "selectorOkMsg"     : "#divId3",
 *      "selectorNgMsg"     : "#divId4",
 *      "selectorErrMsg"    : "#divId5"
 *  });
 *
 * @copyright Copyright &copy; 2010 GMO HOSTING &amp; SECURITY, INC.
 * @version   $Id: jquery.simplemonitor.js 4945 2010-06-07 06:16:46Z iwasaki $
 */
(function($) {
    $.fn.extend({
        mithra: function (opt) {
            var url = 'https://web.alert-me.jp/Monitor/Simple/api.php?n=?';
            var selectorMsgs = {
                "init"  : $(opt.selectorInitMsg),
                "exec"  : $(opt.selectorExecMsg),
                "ok"    : $(opt.selectorOkMsg),
                "ng"    : $(opt.selectorNgMsg),
                "err"   : $(opt.selectorErrMsg)
            };

            selectorMsgs["init"].css('display', 'block');
            selectorMsgs["exec"].css('display', 'none');
            selectorMsgs["ok"].css('display', 'none');
            selectorMsgs["ng"].css('display', 'none');
            selectorMsgs["err"].css('display', 'none');

            return this.each(function (){
                $(this).submit(function(){
                    if ($(this).hasClass('_mithraGet')) {
                        return false;
                    }

                    var targetForm = $(this);
                    var msgs = selectorMsgs;

                    targetForm.addClass('_mithraGet');
                    msgs["init"].css('display', 'none');
                    msgs["exec"].css('display', 'block');
                    msgs["ok"].css('display', 'none');
                    msgs["ng"].css('display', 'none');
                    msgs["err"].css('display', 'none');

                    // JSON リクエスト
                    $.getJSON(url, {
                        't': targetForm.find('[name=type]').eq(0).val(),
                        'p': targetForm.find('[name=param]').eq(0).val()
                    }, function (json) {
                        targetForm.removeClass('_mithraGet');

                        msgs["init"].css('display', 'none');
                        msgs["exec"].css('display', 'none');
                        msgs["ok"].css('display', 'none');
                        msgs["ng"].css('display', 'none');
                        msgs["err"].css('display', 'none');

                        if (json.result == 1) {
                            msgs["ok"].css('display', 'block')
                                .find('.msg').text(json.msg);
                        } else if (json.result == 2) {
                            msgs["ng"].css('display', 'block')
                                .find('.msg').text(json.msg);
                        } else {
                            msgs["err"].css('display', 'block')
                                .find('.msg').text(
                                    (json.errmsg) ? json.errmsg : '監視に失敗しました。'
                                );
                        }
                    });

                    return false;
                });
            });
        }
    });
})(jQuery);

