﻿/*HELPER FUNCTIONS
*****************************************************/
function addColumnChooser(grid, pager) {
    grid.jqGrid('navButtonAdd', '#' + pager,
    {
        caption: 'Columns',
        title: 'Reorder Columns',
        onClickButton: function () {
            jQuery(grid).jqGrid('columnChooser', {
                done: function (perm) {
                    if (perm) { grid.jqGrid("remapColumns", perm, true, false); }
                    autoResizeGrid(grid);
                }
            });
        }
    });
}
function saveColumnConfiguration(grid, url) {
    if (url.length > 0) {
        var colArray = new Array();
        var colModel = grid[0].p.colModel;
        for (var i = 0; i < colModel.length; i++) {
            if (colModel[i].name != "rn" && colModel[i].name != "cb") {
                colArray.push({
                    Name: colModel[i].name,
                    Width: colModel[i].width,
                    Visible: !colModel[i].hidden
                });
            }
        }
        $.ajax({
            url: url,
            type: 'POST',
            data: 'columnConfiguration=' + JSON.stringify(colArray)
        });
    }
}
function autoResizeGrid(grid) {
    var gridParent = grid.closest('.ui-jqgrid-wrapper');

    var parentHeight = gridParent.outerHeight();
    var parentWidth = gridParent.innerWidth();
    var parentOffset = gridParent.offset().top;

    //Calculation uses hardcoded fix (95) which should be calculated.
    //var height = $('body').innerHeight() - parentOffset - 95;  //- (tabPanelHeight - parentHeight);
    //grid.jqGrid('setGridHeight', height);

    var width = gridParent.innerWidth();
    if (width < 1100) width = 1100;
    grid.jqGrid('setGridWidth', width - 3);
}

function checkIfSelected(grid) {
    var ids = grid.jqGrid('getGridParam', 'selarrrow');

    if (ids.length > 0) {
        return true;
    }
    else {
        alert("Please select item.");
        return false;
    }
}
function createModalDialog(data, title, grid) {
    var dialog = $('<div title="' + title + '" style="display:none;"></div>');

    dialog.html(data);

    var form = dialog.find('form');
    form.submit(function () {
        // TODO: Call validation engine before submit.
        $(this).ajaxSubmit({
            success: function (data) {
                if (data == true) {
                    if (grid != null) {
                        grid.trigger('reloadGrid');
                    }
                    dialog.dialog('close');
                }
                else {
                    //alert('Operation failed.\n\nMessage:\n\n' + data.message);
                }
            },
            error: function (data) {
                alert('Error occured.\n\nMessage:\n\n' + data.responseText);
            }
        });
        return false;
    });

    dialog.appendTo('body');
    dialog.dialog({
        position: 'center',
        resizable: false,
        width: 'auto',
        height: 'auto',
        modal: true,
        close: function () {
            $(this).dialog('destroy').remove();
        },
        buttons: {
            "Save": function () {
                form.submit();
            },
            "Cancel": function () {
                $(this).dialog("close");
            }
        }
    }).dialog('open');
}
/*NEW | EDIT | DELETE | SEARCH
--------------------------------------------------------------------------------*/
function newData(url, grid, postData) {
    $.ajax({
        type: 'GET',
        url: url,
        data: postData,
        dataType: 'html',
        success: function (data, status) {
            createModalDialog(data, "Create", grid);
        },
        error: function (data, status) {
            alert('Error occured.\n\nMessage:\n\n' + data.responseText);
        }
    });
}
function editData(url, grid) {
    var id = grid.jqGrid('getGridParam', 'selrow');
    if (id != undefined) {
        $.ajax({
            type: 'GET',
            url: url,
            data: 'id=' + grid.jqGrid('getGridParam', 'selrow'),
            dataType: 'html',
            success: function (data, status) {
                createModalDialog(data, "Edit", grid);
            },
            error: function (data, status) {
                alert('Error occured.\n\nMessage:\n\n' + data.responseText);
            }
        });
    }
    else {
        alert('Please select an item from the grid.');
    }
}
function deleteData(url, grid) {
    var id = grid.jqGrid('getGridParam', 'selrow');
    if (id != undefined) {
        var res = confirm("Are you sure?");
        if (res == true) {
            $.ajax({
                type: 'POST',
                url: url,
                data: 'id=' + grid.jqGrid('getGridParam', 'selrow'),
                success: function (data, status) {
                    if (data == true) {
                        if (grid != null) grid.trigger('reloadGrid');
                    }
                    else {
                        //alert('Operation failed.\n\nMessage:\n\n' + data.message);
                    }
                },
                error: function (data, status) {
                    alert('Error occured.\n\nMessage:\n\n' + data.responseText);
                }
            });
        }
    }
    else {
        alert('Please select an item from the grid.');
    }
}

//To be used in future for binding context menu
/*function addContextMenu(grid) {
grid.find(".jqgrow").contextMenu('myMenu1'
, {
bindings: {
'btn': function (t) {
doSomething();
},
onContextMenu: function (event, menu) {
var rowId = $(event.target).parent("tr").attr("id")
var grid = $("#JQGrid1");
grid.setSelection(rowId);

return true;
}
});
}*/

/*function onCompleteGrid(grid) {
var ids = grid.jqGrid('getDataIDs');
for (var i = 0; i < ids.length; i++) {
var id = ids[i];
var rowData = grid.jqGrid('getRowData', id);
$('#' + id, grid[0]).attr('title', '__value__');
}
}*/
/*CUSTOM FORMATTERS
*****************************************************/
var tooltipContainer;

function cellInfoFormatter(cellvalue, options, rowObject) {
    //var link = $("<a href='#' onlick='getAdditionalInfo(this, " + cellvalue.substr(1, 1) + "); return false;'>" + cellvalue.substr(4) + "</a>")
    return "<a href='#' onclick='getAdditionalInfo(this)' onmouseout='removeToolTip()'>" + cellvalue + "</a>";
};

function getAdditionalInfo(linkElement, supplierId) {
    //request json data
    var linkPosition = $(linkElement).offset();

    tooltipContainer = $('<div style="position:absolute;left:' + linkPosition.left + 'px;top:' + linkPosition.top - 150 + 'px;border:3px solid #CCC;padding:20px;background-color:#fff;"></div>');

    tooltipContainer.load('/BaseSearch/ArticleInfo');

    tooltipContainer.appendTo('#articlesGrid');
};

function removeToolTip() {
    //tooltipContainer.remove();
}

function clearSearchFields(gridId) {
    gridId.jqGrid('setGridParam',{search:false});
    $.extend(gridId[0].p.postData, { filters: '' });
    $.each(gridId[0].p.colModel, function (i, n) {
    	v = (this.searchoptions && this.searchoptions.defaultValue) ? this.searchoptions.defaultValue : '';
    	nm = this.name || this.index;
    	switch (this.stype) {
    		case 'select' :
    			var v1;
    			$('#gs_'+$.jgrid.jqID(nm)+' option',$t.grid.hDiv).each(function (i){
    				if(i===0) { this.selected = true; }
    				if ($(this).text() == v) {
    					this.selected = true;
    					v1 = $(this).val();
    					return false;
    				}
    			});
    			if (v1) {
    				// post the key and not the text
    			sdata[nm] = v1;
    				j++;
    			} else {
    				try {
    				    delete gridId[0].p.postData[nm];
    				} catch(e) {}
    			}
    			break;
    		case 'text':
    		    $('#gs_' + $.jgrid.jqID(nm), gridId[0].grid.hDiv).val(v);
    			if(v) {
    				sdata[nm] = v;
    				j++;
    			} else {
    				try {
    				    delete gridId[0].p.postData[nm];
    				} catch (y){}
    			}
    			break;
            }
        });
        gridId.trigger('reloadGrid', [{ page: 1}]);
    }
    var batch = new Array();
    var lastRow = '0';
    function editGridRow(gridId, id) 
    {
       
        if (id && lastRow != undefined) {
            if (id !== lastRow) {
                $("#" + gridId).jqGrid('saveRow', lastRow, false, 'clientArray');
                var data = $("#" + gridId).jqGrid('getRowData', lastRow);
                data.Id = lastRow;
                //Add data to the batch
                batch.push(data);
                $("#hBatch").val(batch);
            }
        }
        lastRow = id;
        jQuery('#' + gridId).jqGrid('editRow', id, true);
    }

    function myvalue(elem) {
        return elem.val();
    }

    function myelem(value, options) {
        return $('<input type="radio" value="' + value + '"/>');
    }

    function radio(cellvalue, options, rowObject) {
        return '<input type="radio" value="true"' + cellvalue + ' name = ' + options.rowId + '/>';
    }
    function radioUnFormat(cellvalue, options, cell) {
        return $('input', cell).attr('value');
    }


