(function(b){b.fn.fancygrid=function(a){if(g[a])return g[a].apply(this,Array.prototype.slice.call(arguments,1));else if(typeof a==="object"||!a)return g.init.apply(this,arguments);else b.error("Method "+a+" does not exist on jQuery.fancygrid")};var g={init:function(a){var c={url:"/",ajaxType:"GET",name:"",query:{pagination:{page:a.paginationPage||0,per_page:a.paginationPerPage},columns:{},conditions:{},operator:"any",order:{}},searchFadeTime:25,searchFadeOpac:0.5,searchType:"simple",queries:0,isStatic:!1, gridType:"table",hideTopControl:!1,hideBottomControl:!1},a=a||{};b.extend(c,a);return this.each(function(){var d=b(this),e=d.data("fancygrid");e?b.extend(e,a):(d.data("fancygrid",c),b(".fg-sort-window, .fg-sort-content, .fg-search-template").hide(),c.searchVisible?c.searchVisible=!0:d.find(".fg-search").hide(),d.find(".fg-search").find("input[type='text'], select").bind("change.fancygrid",function(){b(this).parents(".fg-fancygrid").fancygrid("newSearch");return!1}).bind("focus.fancygrid",function(){b(this).select(); return!1}),d.find(".fg-page").bind("change.fancygrid",function(){b(this).parents(".fg-fancygrid").fancygrid("page",b(this).val());return!1}).bind("focus.fancygrid",function(){b(this).select();return!1}),d.find(".fg-previous").bind("click.fancygrid",function(){b(this).parents(".fg-fancygrid").fancygrid("previousPage");return!1}),d.find(".fg-next").bind("click.fancygrid",function(){b(this).parents(".fg-fancygrid").fancygrid("nextPage");return!1}),d.find(".fg-reload").bind("click.fancygrid",function(){b(this).parents(".fg-fancygrid").fancygrid("reloadPage"); return!1}),d.find(".fg-clear").bind("click.fancygrid",function(){b(this).parents(".fg-fancygrid").fancygrid("clearSearch");return!1}),d.find(".fg-per-page").bind("change.fancygrid",function(){b(this).parents(".fg-fancygrid").fancygrid("perPage",b(this).val());return!1}),d.find(".fg-magnify").bind("click.fancygrid",function(){b(this).parents(".fg-fancygrid").fancygrid("toggleSearch");return!1}),d.find(".fg-sort").bind("click.fancygrid",function(){b(this).parents(".fg-fancygrid").fancygrid("showSortWindow"); return!1}),d.find(".fg-search-submit").bind("click.fancygrid",function(){b(this).parents(".fg-fancygrid").fancygrid("newSearch");return!1}),d.find(".fg-search-remove").click(function(){b(this).parents(".fg-search-criterion").remove()}),d.find(".fg-search-add").click(function(){d.fancygrid("addCriterionRow")}),d.find(".fg-sort-content").click(function(){d.fancygrid("closeSortWindow")}),d.find(".fg-sortable").click(function(a){a.stopPropagation()}))})},destroy:function(){return this.each(function(){var a= b(this);data=a.data("fancygrid");a.unbind(".fancygrid");a.removeData("fancygrid")})},setupConditions:function(){var a=b(this),c=a.data("fancygrid"),c=a.data("fancygrid");c.query.conditions={};c.searchType==="simple"?(c.query.operator="all",b(this).find(".fg-attribute").each(function(){c.query.conditions[b(this).attr("name")]=b(this).val()})):(c.query.operator=a.find("#fg-search-conditions:checked").val()||"any",a.find("ul.fg-search-criteria li.fg-search-criterion").each(function(){var a=b(this).find("select[name='column_name']").val(), e=b(this).find("select[name='operator']").val(),f=b(this).find("input[name='column_value']").val();typeof c.query.conditions[a]==="undefined"&&(c.query.conditions[a]=[]);c.query.conditions[a].push({operator:e,value:f})}))},setupEmptyConditions:function(){b(this).data("fancygrid").query.conditions={}},setupPagination:function(a,c){var d=b(this).data("fancygrid");d.query.pagination={page:0,per_page:20};if(!isNaN(Number(a))&&Number(a)>=0)d.query.pagination.page=a;if(!isNaN(Number(c))&&Number(c)>0)d.query.pagination.per_page= c},setupOrder:function(){var a=b(this),c=a.data("fancygrid"),d={},a=a.find("th.fg-orderable[order='ASC'], th.fg-orderable[order='DESC']");if(a.length>0)d.table=a.attr("table"),d.column=a.attr("column"),d.direction=a.attr("order");c.query.order=d},setupColumns:function(){var a=b(this),c=a.data("fancygrid"),d={},e=a.find(".fg-sortable-visible li:not(.fg-not-sortable)"),a=a.find(".fg-sortable-hidden li:not(.fg-not-sortable)"),f=0;b(e).each(function(){d[b(this).attr("id")]={visible:!0,position:f};f+= 1});b(a).each(function(){d[b(this).attr("id")]={visible:!1,position:f};f+=1});c.query.columns=d},order:function(){return""},search:function(){var a=b(this),c=a.find(".fg-tablewrapper"),d=a.find(".fg-control-bar"),e=a.data("fancygrid");e.queries+=1;e.query.search_visible=a.find(".fg-search").is(":visible");d.find(".fg-reload").addClass("loading");a.fadeTo(e.searchFadeTime,e.searchFadeOpac);queryData={fancygrid:{}};queryData.fancygrid[e.name]=e.query;b.ajax({type:e.ajaxType,url:e.url,data:queryData, dataType:"html",success:function(c){e.queries-=1;e.queries===0&&(a.fancygrid("replaceContent",b(c).find(".fg-tablewrapper")),d.find(".fg-per-page").val(e.query.pagination.per_page),d.find(".fg-page").val(Number(e.query.pagination.page)+1),total=Number(b(c).find(".fg-result-total").html()),totalPages=total/e.query.pagination.per_page,totalPages=(totalPages|0)+1,d.find(".fg-page-total").text(totalPages),d.find(".fg-result-total").html(total),a.fadeTo(e.searchFadeTime,1,function(){d.find(".fg-reload").removeClass("loading")})); a.trigger("loadSuccess")},error:function(){e.queries-=1;e.queries===0&&(c.find(".fg-row").detach(),a.fadeTo(e.searchFadeTime,1,function(){d.find(".fg-reload").removeClass("loading")}));a.trigger("loadError")}})},replaceContent:function(a){var c=b(this),d=c.data("fancygrid"),e=c.find("input:focus").attr("id");c.find(".fg-tablewrapper").replaceWith(a);c.find(".fg-tablewrapper").find(".fg-search").find("input[type='text'], select").bind("change.fancygrid",function(){b(this).parents(".fg-fancygrid").fancygrid("newSearch"); return!1}).bind("focus.fancygrid",function(){b(this).select();return!1});c.find("th.fg-orderable").click(function(){c.fancygrid("orderBy",b(this))});d.searchVisible?c.find(".fg-search").show():c.find(".fg-search").hide();e&&c.find("#"+e).focus()},nextPage:function(){var a=b(this);data=a.data("fancygrid");a.fancygrid("setupPagination",data.query.pagination.page+1,data.query.pagination.per_page);a.fancygrid("search")},previousPage:function(){var a=b(this);data=a.data("fancygrid");a.fancygrid("setupPagination", data.query.pagination.page-1,data.query.pagination.per_page);a.fancygrid("search")},perPage:function(a){var c=b(this);data=c.data("fancygrid");c.fancygrid("setupPagination",0,a);c.fancygrid("search")},page:function(a){var c=b(this);data=c.data("fancygrid");c.fancygrid("setupPagination",Number(a)-1,data.query.pagination.per_page);c.fancygrid("search")},reloadPage:function(){var a=b(this);data=a.data("fancygrid");a.fancygrid("setupPagination",data.query.pagination.page,data.query.pagination.per_page); a.fancygrid("setupConditions");a.fancygrid("setupColumns");a.fancygrid("setupOrder");a.fancygrid("search")},newSearch:function(){var a=b(this);data=a.data("fancygrid");a.fancygrid("setupPagination",0,data.query.pagination.per_page);a.fancygrid("setupConditions");a.fancygrid("setupColumns");a.fancygrid("setupOrder");a.fancygrid("search")},clearSearch:function(){var a=b(this);data=a.data("fancygrid");a.find(".fg-attribute").each(function(){b(this).val("")});a.find("ul.fg-search-criteria li.fg-search-criterion").detach(); a.fancygrid("setupEmptyConditions");a.fancygrid("search")},toggleSearch:function(){var a=b(this);data=a.data("fancygrid");a.find(".fg-search").toggle();data.searchVisible=a.find(".fg-search").is(":visible")},addCriterionRow:function(){var a=b(this),c=b(a.find(".fg-search-template").html());a.find("ul.fg-search-criteria").append(c);c.find(".fg-search-remove").click(function(){b(this).parents(".fg-search-criterion").remove()});c.find("input[type='text']").bind("change.fancygrid",function(){b(this).parents(".fg-fancygrid").fancygrid("newSearch"); return!1}).bind("focus.fancygrid",function(){b(this).select();return!1})},showSortWindow:function(){var a=b(this);a.find(".fg-sort-window").show();a.find(".fg-sort-content").show();a.find(".fg-sortable").sortable({connectWith:".fg-sortable",items:"li:not(.fg-not-sortable)"})},closeSortWindow:function(){var a=b(this);a.find(".fg-sort-window").hide();a.find(".fg-sort-content").hide();a.fancygrid("reloadPage")},orderBy:function(a){$this=b(this);var c=a.attr("order");$this.find("th.fg-orderable").removeAttr("order"); c==="DESC"?a.attr("order","ASC"):a.attr("order","DESC");$this.fancygrid("reloadPage")}}})(jQuery);