﻿function InitializeGrid(_colNames, _colModel, _pager, _rowNum, _sortName, _gridTitle, _gridContainer, _gridName, _gridToolBar, _selectedRow, _popupButton, _DataSvcPath, _PopupSearch, _InlineSearch, _xCoordinate, _yCoordinate, _PositionType, _DynamicDataCtrl, _ExtraPostData) {
  var dyData = $(_DynamicDataCtrl).val();
  if (dyData != "") _ExtraPostData = $.extend(_ExtraPostData, JSON.parse(dyData));

  $(_DynamicDataCtrl).change(function() {
    $(_gridName).trigger("reloadGrid");
  });

  var _grid = $(_gridName).jqGrid({
    datatype: function(postData) {
      mtype: "POST",
            $.ajax({
              async: true,
              url: _DataSvcPath,
              data: JSON.stringify({ "gridParameters":  $.extend(postData, JSON.parse($(_DynamicDataCtrl).val())) }),
              datatype: "json",
              type: "POST",
              contentType: "application/json; charset=utf-8",
              complete:
                function(jsondata, stat) {
                  if (stat == "success") {
                    var thegrid = $(_gridName)[0];
                    thegrid.addJSONData(JSON.parse(jsondata.responseText).d);
                  }
                },
              error: function(jsondata, stat) {
                alert("ajax error");
              }
            })
    },
    postData: _ExtraPostData,
    scrollOffset: 0,
    scrollrows: false,
    emptyrecords: "No Records Found",  //message when no data
    colNames: _colNames,
    colModel: _colModel,  //array []
    sortname: _sortName, //initial sort by
    sortorder: "asc",  //initial sortorder
    rowNum: _rowNum, // number of rows per page
    rowList: [10, 20, 30], // page size
    imgpath: "/Shared/css/images",  // path to our theme icons
    pager: $(_pager), //div where paging content will be placed
    viewrecords: false,
    caption: _gridTitle,
    height: "auto",
    width: "auto",
    loadui: "block",
    hoverrows: true,
    sortable: true,
    loadError:
        function() {
          alert("load error");
        },

    onSelectRow:
       function(id) {
         if (id) {
           $(_selectedRow).attr({ value: id });
           $(_selectedRow).trigger('change');
           $(_gridContainer).dialog('close');
         }
       }
  });

  $(_gridName).jqGrid('navGrid', _pager, { edit: false, add: false, del: false, search: _PopupSearch, refresh: true },
    {}, //prmEdit,
    {}, //prmAdd,
    {}, //prmDel,
    {closeAfterSearch: true, closeOnEscape: true }, //prmSearch,
    {});
  if (_InlineSearch == "true") {
    $(_gridName).jqGrid('filterToolbar', {
      afterClear: function() { var bar = $(_gridName)[0]; bar.triggerToolbar(); },
      afterSearch: function() { var bar = $(_gridName)[0]; bar.clearToolbar(); }
    });

    //      $(_gridName).jqGrid('navButtonAdd', _pager,
    //      {
    //        caption: "Filter",
    //        title: "Toggle Search",
    //        onClickButton: function() {
    //          var bar = $(_gridName)[0];
    //          bar.toggleToolbar();
    //        }
    //      });
  }

  var jqgrid = $(_gridContainer).children('div:first');

  $(_gridContainer).dialog({
    closeOnEscape: true,
    bgiframe: true,
    autoOpen: false,
    resizable: false,
    dialogClass: "popupDialog",
    width: $(_gridContainer).width(),
    height: "auto"
  });

  var xpos = _xCoordinate;
  var ypos = _yCoordinate;
  var posType = _PositionType;

  if (posType == "UnderTextBox") {
    xpos = $(_selectedRow).position().left;
    ypos = $(_selectedRow).position().top + 25;
    $(_gridContainer).dialog('option', 'position', [xpos, ypos]);
  }
  else if (posType == "Coordinates") {
    $(_gridContainer).dialog('option', 'position', [xpos, ypos]);
  }

  $(_popupButton).click(function() {
    if ($(_gridContainer).dialog("isOpen"))
      $(_gridContainer).dialog("close");
    else {
      $(_gridContainer).find('.ui-jqgrid-titlebar:first').hide();
      $(_gridContainer).css('padding', '0');
      $('.ui-jqgrid-bdiv').css('overflow', 'hidden');
      $(_gridContainer).parent().find('.ui-dialog-title').html($(_gridContainer).find('.ui-jqgrid-title:first').html());
      $(_gridContainer).dialog("open");
    }
  });

}
