﻿// jQuery iBuilder 2.0 Grid
//
// Version 1.0
//
// Created by Marcin Gielewski
//
// Usage:
// 
// History:
//
//		1.00 - Released (15.06.2010)
//
(function($) {

    $.jGrid = {

        // These properties can be read/written by accessing $.jGrid.propertyName from your scripts at any time

        ajaxUrl: '/Ajax/ControlsWrapper.aspx',        // form wrapper ajax url
        width: 400,                                   // popup window width
        height: 400,                                  // popup window hieght
        changeOff: false,                             // 
        isAllCheckedValue: true,                      //

        // Public methods

        filter: function(fid, gid, tid, mid, suid, ctrl, bctrl, pi, ps, sort) {
            if ($('#' + fid).val().trim() == '') return;
            $.jGrid.updateGrid(gid, tid, mid, suid, ctrl, bctrl, pi, ps, sort, $('#' + fid).val().trim(), '');
        },
        advancedfilter: function(title, gid, tid, mid, suid, ctrl, bctrl, pi, ps, sort, skey, askey, w, h) {
            jPopup(title, $.jGrid.ajaxUrl + '?gid=' + gid + '&tid=' + tid + '&mid=' + mid + '&suid=' + suid + '&ctrl=' + ctrl + '&bctrl=' + bctrl + '&pi=' + pi + '&ps=' + ps + '&sort=' + sort + '&skey=' + skey + '&askey=' + askey,
                null,
                w != null ? w : width,
                h != null ? h : height);
        },
        details: function(title, gid, tid, mid, suid, ctrl, bctrl, pi, ps, sort, skey, askey, w, h) {
            jPopup(title, $.jGrid.ajaxUrl + '?gid=' + gid + '&tid=' + tid + '&mid=' + mid + '&suid=' + suid + '&ctrl=' + ctrl + '&bctrl=' + bctrl + '&pi=' + pi + '&ps=' + ps + '&sort=' + sort + '&skey=' + skey + '&askey=' + askey,
                null,
                w != null ? w : width,
                h != null ? h : height);
        },
        addRow: function(title, gid, tid, mid, suid, ctrl, bctrl, pi, ps, sort, skey, askey, w, h) {
            jPopup(title, $.jGrid.ajaxUrl + '?gid=' + gid + '&tid=' + tid + '&mid=' + mid + '&suid=' + suid + '&ctrl=' + ctrl + '&bctrl=' + bctrl + '&pi=' + pi + '&ps=' + ps + '&sort=' + sort + '&skey=' + skey + '&askey=' + askey,
                null,
                w != null ? w : width,
                h != null ? h : height);
        },
        editRow: function(title, gid, tid, mid, suid, ctrl, bctrl, pi, ps, sort, skey, askey, id, w, h) {
            jPopup(title, $.jGrid.ajaxUrl + '?gid=' + gid + '&tid=' + tid + '&mid=' + mid + '&suid=' + suid + '&ctrl=' + ctrl + '&bctrl=' + bctrl + '&pi=' + pi + '&ps=' + ps + '&sort=' + sort + '&skey=' + skey + '&askey=' + askey + '&id=' + id,
                null,
                w != null ? w : width,
                h != null ? h : height);
        },
        deleteRows: function(title, message, data) {
            return jConfirm(message, title, function(condition) {
                if (condition) {
                    var ids = '';
                    $.each($('.checkboxCell', $('#' + data.gid + ' table')), function(index, value) {
                        if ($($('input[type=checkbox]', $(value))[0]).attr('checked') == true)
                            ids += $($('input[type=checkbox]', $(value))[0]).attr("alt") + ';';
                    });
                    if (ids.length > 0)
                        ids = ids.substring(0, ids.lastIndexOf(';'));
                    if (ids.length == 0) return;
                    $.jGrid.updateGrid(data.gid, data.tid, data.mid, data.suid, data.ctrl, data.bctrl, data.pi, data.ps, data.sort, data.skey, data.askey, 'del', ids);
                }
            });
        },
        publishRows: function(title, message, data) {
            return jConfirm(message, title, function(condition) {
                if (condition) {
                    var ids = '';
                    $.each($('.checkboxCell', $('#' + data.gid + ' table')), function(index, value) {
                        if ($($('input[type=checkbox]', $(value))[0]).attr('checked') == true)
                            ids += $($('input[type=checkbox]', $(value))[0]).attr("alt") + ';';
                    });
                    if (ids.length > 0)
                        ids = ids.substring(0, ids.lastIndexOf(';'));
                    if (ids.length == 0) return;
                    $.jGrid.updateGrid(data.gid, data.tid, data.mid, data.suid, data.ctrl, data.bctrl, data.pi, data.ps, data.sort, data.skey, data.askey, 'pub', ids);
                }
            });
        },
        publishIconClick: function(img) {
            $('input', $('td:first-child', $(img).parent().parent())).attr('checked', true);
        },
        exportRows: function() {
            jAlert('Not implemented yet.');
        },
        change: function(checkbox, tableID) {        
            if ($.jGrid.changeOff) return;
            $.jGrid.changeOff = true;
            if ($(checkbox).parent()[0].nodeName == 'TH') {
                $.each($('.checkboxCell', $('#' + tableID)), function(index, value) {
                    if ($($('th input[type=checkbox]', $('#' + tableID))[0]).attr('checked') == true && !$(value).parent().hasClass('displayfilternone'))
                        $($('input[type=checkbox]', $(value))[0]).check();
                    else
                        $($('input[type=checkbox]', $(value))[0]).uncheck();
                });
            }
            else {
                $.jGrid.isAllChecked('#' + tableID);
                if ($(checkbox).attr('checked') == true && $.jGrid.isAllCheckedValue == true)
                    $($('th input[type=checkbox]', $('#' + tableID))[0]).check();
                else
                    $($('th input[type=checkbox]', $('#' + tableID))[0]).uncheck();
            }
            $.jGrid.changeOff = false;
        },
        exportToCSV: function(gid, tid, mid, suid, ctrl, bctrl, pi, ps, sort, skey, askey) {
            location.href = $.jGrid.ajaxUrl + '?gid=' + gid + '&tid=' + tid + '&mid=' + mid + '&suid=' + suid + '&ctrl=' + ctrl + '&bctrl=' + bctrl + '&pi=' + pi + '&ps=' + ps + '&sort=' + sort + '&skey=' + skey + '&askey=' + askey + '&meth=exp';
        },

        // Private methods

        updateGrid: function(gid, tid, mid, suid, ctrl, bctrl, pi, ps, sort, skey, askey, meth, ids) {
            $.alerts._hide();

            var over = $('<div>');
            over.addClass('clip');
            over.css({ width: $('#' + gid).outerWidth() + 'px', height: $('#' + gid).outerHeight() + 'px' });
            over.css($('#' + gid).offset());
            over.html('&nbsp;');
            $('#' + gid).after(over);

            $('#' + gid).load($.jGrid.ajaxUrl + ' #formWrapperContent', { gid: gid, tid: tid, mid: mid, suid: suid, ctrl: ctrl, bctrl: bctrl, pi: pi, ps: ps, sort: sort, skey: skey, askey: askey, meth: meth, ids: ids }, function(response, status, xhr) {
                if (status == "error") {
                    var msg = "Sorry but there was an error: ";
                    $('#' + gid).html(msg + xhr.status + " " + xhr.statusText);
                }
                over.remove();

                $("tr", $('#' + gid)).hover(
                function() {
                    if (!$(this).hasClass('header')) $('td', $(this)).addClass("highlight");
                },
                function() {
                    if (!$(this).hasClass('header')) $('td', $(this)).removeClass("highlight");
                });
                $('#' + gid + ' .filterInput').keypress(function(e) {
                    if (e.keyCode == 13) {
                        eval($("a:first", $('#' + gid + ' .filterInput').parent()).attr("href"))
                        return false;
                    }
                });
            });
        },
        isAllChecked: function(tableID) {
            $.jGrid.isAllCheckedValue = true;
            $.each($('.checkboxCell', $(tableID)), function(index, value) {
                if ($($('input[type=checkbox]', $(value))[0]).attr('checked') != true)
                    $.jGrid.isAllCheckedValue = false;
            });
        }
    }

    // Shortuct functions

    jGridUpdate = function(args) {
        $.jGrid.updateGrid(args.gid, args.tid, args.mid, args.suid, args.ctrl, args.bctrl, args.pi, args.ps, args.sort, args.skey, args.askey);
    };
    jGridDetails = function(title, args, w, h) {
        $.jGrid.details(title, args.gid, args.tid, args.mid, args.suid, args.ctrl, args.bctrl, args.pi, args.ps, args.sort, args.skey, args.askey, w, h);
    };
    jGridAdd = function(title, args, w, h) {
        $.jGrid.addRow(title, args.gid, args.tid, args.mid, args.suid, args.ctrl, args.bctrl, args.pi, args.ps, args.sort, args.skey, args.askey, w, h);
    };
    jGridEdit = function(title, args, id, w, h) {
        $.jGrid.editRow(title, args.gid, args.tid, args.mid, args.suid, args.ctrl, args.bctrl, args.pi, args.ps, args.sort, args.skey, args.askey, id, w, h);
    };
    jGridTranslate = function(title, args, id, w, h) {
        $.jGrid.editRow(title, args.gid, args.tid, args.mid, args.suid, args.ctrl, args.bctrl, args.pi, args.ps, args.sort, args.skey, args.askey, id, w, h);
    };
    jGridDelete = function(title, message, args) {
        $.jGrid.deleteRows(title, message, args);
    };
    jGridPublish = function(title, message, args) {
        $.jGrid.publishRows(title, message, args);
    };
    jGridPublishIconClick = function(img) {
        $.jGrid.publishIconClick(img);
    };
    jGridSearch = function(fid, args) {
        $.jGrid.filter(fid, args.gid, args.tid, args.mid, args.suid, args.ctrl, args.bctrl, args.pi, args.ps, args.sort);
    };
    jGridAdvancedSearch = function(title, args, w, h) {
        $.jGrid.advancedfilter(title, args.gid, args.tid, args.mid, args.suid, args.ctrl, args.bctrl, args.pi, args.ps, args.sort, args.skey, args.askey, w, h);
    };
    jGridChange = function(checkbox, tableID) {
        $.jGrid.change(checkbox, tableID);
    };
    jGridExport = function(args) {
        $.jGrid.exportToCSV(args.gid, args.tid, args.mid, args.suid, args.ctrl, args.bctrl, args.pi, args.ps, args.sort, args.skey, args.askey);
    };
    jGridSuccessNotify = function(title, message, duration, stay) {
        $.noticeAdd({
            text: message,
            title: title,
            duration: duration,
            stay: stay,
            type: 'success',
            position: 'center'
        });
    };
})(jQuery);


// jQuery iBuilder 2.0 MultiSelect
//
// Version 1.0
//
// Created by Marcin Gielewski
//
// Usage:
// 
// History:
//
//		1.00 - Released (15.06.2010)
//
(function($) {

    $.jMultiSelect = {

        // These properties can be read/written by accessing $.jGrid.propertyName from your scripts at any time

        currentView: 'all',        // view types: all, sel, uns

        // Public methods

        search: function(id) {
            var s = $.trim($('#' + id + ' input[type=text]').val().toLowerCase());
            $.each($('tr', $('#' + id + ' table.ex_grid')), function(index, value) {
                if (index != 0) {
                    if ($.trim($(value).text().toLowerCase()).indexOf(s) >= 0)
                        $(value).removeClass('displayfilternone');
                    else
                        $(value).addClass('displayfilternone');
                }
            });
            $.jMultiSelect.refresh(id);
            $('#' + id + ' a.searchback').css('display', s == '' ? 'none' : 'inline');
        },
        clear: function(id) {
            $('#' + id + ' input[type=text]').val('');
            $.jMultiSelect.search(id);
        },
        all: function(id) {
            $.jMultiSelect.currentView = 'all';
            $.each($('.checkboxCell', $('#' + id + ' table.ex_grid')), function(index, value) {
                $(value).parent().removeClass('displaynone');
            });
            $.jMultiSelect.select(id, 1);
        },
        selected: function(id) {
            $.jMultiSelect.currentView = 'sel';
            $.each($('.checkboxCell', $('#' + id + ' table.ex_grid')), function(index, value) {
                if ($($('input[type=checkbox]', $(value))[0]).attr('checked') == true)
                    $(value).parent().removeClass('displaynone');
                else
                    $(value).parent().addClass('displaynone');
            });
            $.jMultiSelect.select(id, 2);
        },
        unselected: function(id) {
            $.jMultiSelect.currentView = 'uns';
            $.each($('.checkboxCell', $('#' + id + ' table.ex_grid')), function(index, value) {
                if ($($('input[type=checkbox]', $(value))[0]).attr('checked') == true)
                    $(value).parent().addClass('displaynone');
                else
                    $(value).parent().removeClass('displaynone');
            });
            $.jMultiSelect.select(id, 3);
        },
        createSearchData: function(tid) {
            var searchdata = new Array();

            $.each($('td', $('#' + tid)), function(index, value) {
                if (searchdata.toString().indexOf(',' + $.trim($(value).text())) == -1) {
                    searchdata.push($.trim($(value).text()));
                }
            });
            searchdata.sort();

            return searchdata;
        },
        getSelected: function(id) {
            var list = '';
            $.each($('.checkboxCell', $('#' + id + ' table.ex_grid')), function(index, value) {
                if ($($('input[type=checkbox]', $(value))[0]).attr('checked') == true)
                    list += $($('input[type=checkbox]', $(value))[0]).attr('alt') + ';';
            });
            if (list.length > 0)
                list = list.substring(0, list.length - 1);
            return list;
        },

        // Private methods

        refresh: function(id) {
            switch ($.jMultiSelect.currentView) {
                default:
                case 'all':
                    $.jMultiSelect.all(id);
                    break;
                case 'sel':
                    $.jMultiSelect.selected(id);
                    break;
                case 'uns':
                    $.jMultiSelect.unselected(id);
                    break;
            }
        },
        select: function(id, index) {
            $('#' + id + ' a.all').removeClass('current');
            $('#' + id + ' a.selected').removeClass('current');
            $('#' + id + ' a.unselected').removeClass('current');

            if (index == 1)
                $('#' + id + ' a.all').addClass('current');
            else if (index == 2)
                $('#' + id + ' a.selected').addClass('current');
            else if (index == 3)
                $('#' + id + ' a.unselected').addClass('current');

            $.jMultiSelect.refreshClass(id)
        },
        refreshClass: function(id) {
            var isAlternate = false;
            $.each($('tr', $('#' + id + ' table.ex_grid')), function(index, value) {
                if (index != 0) {
                    if (!$(value).hasClass('displayfilternone') && !$(value).hasClass('displaynone')) {
                        $(value).removeClass('row');
                        $(value).removeClass('alternaterow');
                        $(value).addClass(isAlternate ? 'row' : 'alternaterow');
                        isAlternate = !isAlternate;
                    }
                }
            });
        }
    }
    jMultiSelectSearch = function(id) {
        $.jMultiSelect.search(id);
        return false;
    };
    jMultiSelectClear = function(id) {
        $.jMultiSelect.clear(id);
    };
    jMultiSelectAll = function(id) {
        $.jMultiSelect.all(id);
    };
    jMultiSelectSelected = function(id) {
        $.jMultiSelect.selected(id);
    };
    jMultiSelectUnselected = function(id) {
        $.jMultiSelect.unselected(id);
    };
    jMultiSelectGetSearchData = function(tid) {
        return $.jMultiSelect.createSearchData(tid);
    };
    jMultiSelectGetSelected = function(id) {
        return $.jMultiSelect.getSelected(id);        
    };
})(jQuery);

$(function() {
    try {
        $.each($('div.multiselect_grid'), function(index, value) {
            $(value).css('width', (parseInt($('table.ex_grid', $(value)).css('width').replace('px', '')) + 17) + 'px');
        });        
        $('div.multiselect_filter input[type=text]').keypress(function(e) {
            if (e.keyCode == 13) {
                $('div.multiselect_filter input[type=button]').click();
                return false;
            }
        });
    } catch (err) { }
});
