﻿$.extend(M8, function() {

    var _searchDialog = function(type) {
        var _parentDiv = null;
        var _dlg = null;
        var _type = type;
        var _this = this;

        var _showDialog = function() {
            _dlg.dialog("open");
        };

        var _onLoadDiv = function()
        {
            _dlg = $(".searchdlg", _parentDiv);
            _dlg.dialog({ autoOpen: false, modal: true, resizable: false, width: 600, height: 500, position: [150, 150] });

            $(".searchbutton", _dlg).click(
            function(e)
            {
                $(".searchresults", _dlg).hide();
                $(".searchwait", _dlg).show();
                $(".searchresults", _dlg).load(M8.SiteRoot + '/search/' + _type + 'results.m8', $("form", _dlg).serialize(),
                    function() 
                    {
                        $(".searchwait", _dlg).hide();
                        $(".searchresults", _dlg).show();
                        $(".searchresults table tbody tr", _dlg).click(
                            function(e) 
                            {
                                _this.hide();
                                _this.onSelect(
                                {
                                    id: $(e.currentTarget).attr("resultid"),
                                    name: $(e.currentTarget).attr("resultname"),
                                    publicid: $(e.currentTarget).attr("resultpublicid"),
                                    rostercount: $(e.currentTarget).attr("resultrostercount"),
                                    rostersize: $(e.currentTarget).attr("resultrostersize")
                                 });
                            });
                    });

                return false;
            });

            _showDialog();
        };

        // public stuff
        this.show = function() {
            if (_parentDiv == null) {
                _parentDiv = $("<div></div>").css("display", "none").appendTo("body");
                _parentDiv.load(M8.SiteRoot + '/search/' + _type + '.m8', null, _onLoadDiv);
            }
            else {
                _showDialog();
            }
        };

        this.hide = function() {
            _dlg.dialog("close");
        }

        this.onSelect = function(result) {
        console.log("Selected item (" + result.id + ": " + result.name + ": " + result.publicid + ": " + result.rostercount + ": " + result.rostersize + ")");
        };
    };

    return {
        SearchDialog: _searchDialog
    }
} ());
