(function(d){d.fn.sorter=function(l){var b=d.extend({data:[],tmpl:"",tmpl_append:"",tmpl_no_result:"<h1>Es konnten keine Eintr&auml;ge gefunden werden.</h1>",entries_page_count:10,show_entries_count_form:true,entries_count_array:[5,10,15,20,25,50],pages_selector:".pages",pages_html:'<span class="page_label">Eintr&auml;ge pro Seite</span>&nbsp;<select class="::sorter_entries_cnt::" name="::sorter_entries_cnt::"></select><span class="::page_nav_wrap::"></span>',sorter_entries_cnt:"sorter_entries_cnt",
page_nav_wrap:"page_nav",hide_pages:true,always_show_first_pages:true,always_show_last_pages:true,show_all_pages:false,show_page_offset:5,pages_link_tmpl:'<span id="p::page::">::page::</span>',page_act_class:"pactive",page_class:"page",page_forward:"&gt;",page_backward:"&lt;",onForward:function(){return true},onBackward:function(){return true},onPageClick:function(){return true},onChangeEntrieCount:function(){return true},filter_fields:true,filter_selector:".sort_filter",filter_select_class:"sorter_filter",
filter_input_class:"sorter_field_value",filter_html:'<div><span class="sorter_label">Eintr&auml;ge nach</span>&nbsp;<select name="::sorter_filter::" class="::sorter_filter::"></select>&nbsp;<span class="sorter_label">mit</span>&nbsp;<input type="text" class="ffield ::sorter_field_value::" name="::sorter_field_value::" value="" style="width:auto; margin:0;" />&nbsp;<span class="sorter_label">filtern.</span></div>',filter_input_html:'<input type="text" value="" name="sorter_filter_value" class="ffield" style="width:auto; margin:0;" />',
filter_case:false,filter_field_label:'<span class="sorter_label">Eintr&auml;ge filtern nach</span>&nbsp;',filter_search_label:'&nbsp;<span class="sorter_label">mit</span>&nbsp;',filter_all_label:"Alles",show_all_filter:true,onFilterChange:function(){return true},onFilterFieldChange:function(){return true},onFilterKeyUp:function(){return true},sort_fields:true,sort_selector:".sort_sort",sort_html:'<span class="sorter_label">Sortiere nach </span>&nbsp;<select class="::sorter_sort::" name="::sorter_sort::"></select>&nbsp;<select class="::sorter_sort_dir::" name="::sorter_sort_dir::"></select>',
sort_dir_select_labels:["aufsteigend","absteigend"],onSort:function(){return true},onSortDirection:function(){return true},cookie:true,cookie_name:"sorter",cookie_expire_date:(new Date).toGMTString(),cookie_path:"/"},l),a=this;this.refreshData=function(c){b.data=c;a.data_cnt_all=b.data.length;a.page_cnt_all=Math.ceil(a.data_cnt_all/b.entries_page_count);a.data_cnt=a.data_cnt_all;a.page_cnt=a.page_cnt_all;a.show_data=b.data;o(a.filter_query,a.filter_field,true)};this.setFilter=function(c,e){c&&p(c);
e&&s(e)};this.setSort=function(c,e){c&&t(c);e&&u(e);a.page=1;m(a.page)};this.setPageEntries=function(c){v(c)};this.showPage=function(c){a.page=c;m(a.page)};this.getData=function(c,e){if(typeof c=="undefined")return e?a.data_shown:b.data;else if(e){var f=[];for(var g in a.data_shown)f.push(a.data_shown[g][c]);return f}else{f=[];for(g in b.data)f.push(b.data[g][c]);return f}};var k=function(c){if(b.cookie){var e=n();if(false===e)e={};e=d.extend(e,c);if(typeof e.filter_query!="undefined")e.filter_query=
escape(e.filter_query);document.cookie=b.cookie_name+"="+d.toJSON(e)+";"+b.cookie_expire+";path="+b.cookie_path}},n=function(){if(b.cookie){for(var c=b.cookie_name+"=",e=document.cookie.split(";"),f="",g=0;g<e.length;g++){for(var h=e[g];h.charAt(0)==" ";)h=h.substring(1,h.length);if(h.indexOf(c)==0)f=h.substring(c.length,h.length)}if(f!=""){c=d.parseJSON(f);if(typeof c.filter_query!="undefined")c.filter_query=unescape(c.filter_query);return c}else return false}return false},y=function(c,e,f){var g=
{},h={};if(b.hide_pages===true&&a.page_cnt<=1)d(b.pages_selector).css("visibility","hidden");else{d(b.pages_selector).css("visibility","visible");if(c==1){g={visibility:"hidden"};h={}}else if(c>a.page_cnt-1){g={};h={visibility:"hidden"}}if(e==1){g=d('<span class="'+b.page_class+' p_bwd">'+b.page_backward+"</span>").click(function(i){i.preventDefault();var j=d("."+b.page_act_class).data("page")-1;b.onBackward(i,d(this),j<1?false:j);if(j<1)return false;a.page=j;m(a.page);return false}).css(g);d("."+
b.page_nav_wrap).append(g)}if(e===c)d("."+b.page_nav_wrap).append(f.addClass(b.page_act_class));else if(e>c-b.show_page_offset-1&&e<c+b.show_page_offset+1)d("."+b.page_nav_wrap).append(f);else if(b.always_show_first_pages&&e==1)d("."+b.page_nav_wrap).append(f);else if(b.always_show_last_pages&&e>a.page_cnt-1)d("."+b.page_nav_wrap).append(f);else if(b.show_all_pages)d("."+b.page_nav_wrap).append(f);else d("."+b.page_nav_wrap).children(":last").hasClass("p_sep")||d("."+b.page_nav_wrap).append('<span class="p_sep">...</span>');
if(e>a.page_cnt-1){c=d('<span class="'+b.page_class+' p_fwd">'+b.page_forward+"</span>").click(function(i){i.preventDefault();var j=d("."+b.page_act_class).data("page")+1;b.onForward(i,d(this),j>a.page_cnt?false:j);if(j>a.page_cnt)return false;a.page=j;m(a.page);return false}).css(h);d("."+b.page_nav_wrap).append(c)}}},m=function(c,e,f){k({page:c});if(a.show_data.length<=0){a.$el.html(b.tmpl_no_result);d(b.pages_selector).css("visibility","hidden");if(e){w();x()}}else{a.$el.html("");d(b.pages_selector).html(b.pages_html);
f||r(a.sort_field_curr,a.sort_dir);var g=0;d(a.show_data).each(function(h,i){if((c-1)*b.entries_page_count-1<h&&c*b.entries_page_count-1>=h)if(g<b.entries_page_count){var j=b.tmpl;for(var q in i){var z=eval("/::"+q+"::/g");j=j.replace(z,i[q])}a.$el.html(a.$el.html()+j);g++}});a.$el.html(a.$el.html()+b.tmpl_append);for(e=1;e<=a.page_cnt;e++){f=d(b.pages_link_tmpl.replace(/\:\:page\:\:/g,e)).addClass(b.page_class).data("page",e).click(function(h){h.preventDefault();a.page=d(this).data("page");b.onPageClick(h,
d(this),a.page);m(a.page,false,true);return false});y(c,e,f)}A();w();x()}},A=function(){if(b.show_entries_count_form){var c=d("."+b.sorter_entries_cnt).change(function(){v(d(this).children(":selected").attr("value"))});for(var e in b.entries_count_array){var f="";if(b.entries_count_array[e]==b.entries_page_count)f=' selected="selected"';c.append('<option value="'+b.entries_count_array[e]+'"'+f+">"+b.entries_count_array[e]+"</option>")}}},v=function(c){if(d("."+b.sorter_entries_cnt).length>=1){d("."+
b.sorter_entries_cnt).children().attr("selected","");d("."+b.sorter_entries_cnt).children("[value="+c+"]").attr("selected","selected")}b.entries_page_count=c;a.page=1;a.page_cnt=Math.ceil(a.data_cnt_all/b.entries_page_count);b.onChangeEntrieCount(c,a.page);m(a.page)},w=function(){a.filter_fields=[];if(b.filter_fields!==false){if(b.filter_fields===true)for(var c in b.data[0])a.filter_fields.push(c);if(b.filter_fields.length>=1)a.filter_fields=b.filter_fields;if(a.filter_fields.length>=1)if(d(b.filter_selector).hasClass("sorter_filter_wrap")===
false){if(!b.filter_html)return false;c=n();if(!b.show_all_filter&&a.filter_field==""){a.filter_field=a.filter_fields[0].value;k({filter_field:a.filter_field})}d(b.filter_selector).html("");var e=d(b.filter_html.replace(/::sorter_filter::/g,b.filter_select_class).replace(/::sorter_field_value::/g,b.filter_input_class)),f="";if(b.show_all_filter)f='<option value="">'+b.filter_all_label+"</option>";f=e.find("."+b.filter_select_class).append(f).change(function(){p(d(this).children(":selected").attr("value"));
k({filter_query:""});e.find("."+b.filter_input_class).attr("value","").focus();o("",d(this).children(":selected").attr("value"))});for(var g in a.filter_fields)if(typeof a.filter_fields[g].label!="undefined"){var h="";if(false!==c&&a.filter_fields[g].value===c.filter_field)h=' selected="selected"';f.append('<option value="'+a.filter_fields[g].value+'"'+h+">"+a.filter_fields[g].label+"</option>");g==0&&!b.show_all_filter&&c===false&&p(a.filter_fields[g].value,true)}else{h="";if(false!==c&&a.filter_fields[g]===
c.filter_field)h=' selected="selected"';f.append('<option value="'+a.filter_fields[g]+'"'+h+">"+a.filter_fields[g]+"</option>");g==0&&!b.show_all_filter&&c===false&&p(a.filter_fields[g],true)}false!==c&&c.filter_field!=""&&b.onFilterFieldChange(c.filter_field,a.filter_query);e.find("."+b.filter_input_class).addClass("sorter_filter_input").keyup(function(i){s(d(this).attr("value"),i)});false!==c&&c.filter_query!=""&&e.find("."+b.filter_input_class).attr("value",c.filter_query).trigger("keyup");d(b.filter_selector).addClass("sorter_filter_wrap").prepend(e)}}},
p=function(c,e){k({filter_field:c});if(d(".sorter_filter").length>=1){a.filter_field=c;d(".sorter_filter").children().attr("selected","");d(".sorter_filter").children("[value="+a.filter_field+"]").attr("selected","selected");b.onFilterFieldChange(a.filter_field,a.filter_query);o(a.filter_query,a.filter_field)}else if(e===true)a.filter_field=c},s=function(c,e){k({filter_field:a.filter_field,filter_query:c});if(d(".sorter_filter_input").length>=1){a.filter_query=c;d(".sorter_filter_input").attr("value",
a.filter_query);a.filter_query=b.onFilterKeyUp(e,a.filter_field,a.filter_query);o(a.filter_query,a.filter_field)}},o=function(c,e,f){var g=n(),h=[];for(var i in b.data)if(e!=undefined&&e!="")if(c=="")h.push(b.data[i]);else{var j=b.filter_case===true?eval("/"+c+"/"):eval("/"+c+"/i");b.data[i][e].search(j)!=-1&&h.push(b.data[i])}else if(c=="")h.push(b.data[i]);else for(var q in a.filter_fields){j=b.filter_case===true?eval("/"+c+"/"):eval("/"+c+"/i");(""+b.data[i][a.filter_fields[q].value]).search(j)!=
-1&&h.push(b.data[i])}a.show_data=h;a.data_cnt=a.show_data.length;a.page_cnt=Math.ceil(a.data_cnt/b.entries_page_count);a.page=f&&false!=g?g.page:1;m(a.page,f)},t=function(c){k({sort_field:c});if(d(".sorter_sort").length>=1){a.sort_field_curr=c;d(".sorter_sort").children().attr("selected","");d(".sorter_sort").children("[value="+a.sort_field_curr+"]").attr("selected","selected");b.onSort(a.sort_field_curr,a.sort_dir);r(a.sort_field_curr,a.sort_dir)}},u=function(c){k({sort_dir:c});if(d(".sorter_sort_dir").length>=
1){a.sort_dir=c;d(".sorter_sort_dir").children().attr("selected","");d(".sorter_sort_dir").children("[value="+a.sort_dir+"]").attr("selected","selected");b.onSortDirection(a.sort_field_curr,a.sort_dir);r(a.sort_field_curr,a.sort_dir)}},r=function(c,e){a.show_data.sort(function(f,g){if(f[c]>g[c])return 1;else if(f[c]<g[c])return-1;return 0});e==="DESC"&&a.show_data.reverse()},x=function(){k({sort_field:a.sort_field_curr});if(d(".sorter_sort").length>=1){d(".sorter_sort").children().attr("selected",
"");d(".sorter_sort").children("[value="+a.sort_field_curr+"]").attr("selected","selected")}else if(d(b.sort_selector).length>=1){d(b.sort_selector).html("").addClass("sorter_sort_form").append(b.sort_html.replace(/::sorter_sort::/g,"sorter_sort").replace(/::sorter_sort_dir::/g,"sorter_sort_dir"));d(b.sort_selector).find(".sorter_sort").change(function(){t(d(this).children(":selected").attr("value"));a.page=1;m(a.page)});for(var c in a.sort_fields){var e="";if(typeof a.sort_fields[c].label!="undefined"){if(a.sort_fields[c].value==
a.sort_field_curr)e=' selected="selected"';d(b.sort_selector).find(".sorter_sort").append('<option value="'+a.sort_fields[c].value+'"'+e+">"+a.sort_fields[c].label+"</option>")}else{if(a.sort_fields[c]==a.sort_field_curr)e=' selected="selected"';d(b.sort_selector).find(".sorter_sort").append('<option value="'+a.sort_fields[c]+'"'+e+">"+a.sort_fields[c]+"</option>")}}c=' selected="selected"';e="";if(typeof a.sort_dir!="undefined"&&a.sort_dir==="DESC"){c="";e=' selected="selected"'}d(b.sort_selector).find(".sorter_sort_dir").append('<option value="ASC"'+
c+">"+b.sort_dir_select_labels[0]+'</option><option value="DESC"'+e+">"+b.sort_dir_select_labels[1]+"</option>").change(function(){u(d(this).children(":selected").attr("value"));a.page=1;m(a.page)})}};d(this).each(function(c,e){a.$el=d(e);a.data_cnt_all=b.data.length;a.page_cnt_all=Math.ceil(a.data_cnt_all/b.entries_page_count);a.data_cnt=a.data_cnt_all;a.page_cnt=a.page_cnt_all;a.show_data=b.data;a.page=1;a.filter_query="";a.filter_field="";if(b.sort_fields===true){var f=[];for(var g in a.show_data[0])f.push(g);
a.sort_fields=f}else if(typeof b.sort_fields=="object")a.sort_fields=b.sort_fields;a.sort_field_curr=typeof a.sort_fields[0].value!="undefined"?a.sort_fields[0].value:a.sort_fields[0];f=n();if(false===f)k({page:1,filter_field:"",filter_query:"",sort_field:"",sort_dir:"ASC"});else{a.page=f.page;a.filter_query=f.filter_query;a.filter_field=f.filter_field;a.sort_field_curr=f.sort_field;a.sort_dir=f.sort_dir}if(b.pages_html!=""||b.pages_html!=null)b.pages_html=b.pages_html.replace(/\:\:sorter_entries_cnt\:\:/g,
b.sorter_entries_cnt).replace(/\:\:page_nav_wrap:\:/g,b.page_nav_wrap);o(a.filter_query,a.filter_field,true)});return this}})(jQuery);
var UTF8={encode:function(d){for(var l,b=-1,a=(d=d.split("")).length,k=String.fromCharCode;++b<a;d[b]=(l=d[b].charCodeAt(0))>=127?k(192|l>>>6)+k(128|l&63):d[b]);return d.join("")},decode:function(d){for(var l,b,a=-1,k=(d=d.split("")).length,n=String.fromCharCode;++a<k;(l=d[a].charCodeAt(0))&128&&(d[a]=(l&252)==192&&((b=d[a+1].charCodeAt(0))&192)==128?n(((l&3)<<6)+(b&63)):n(128),d[++a]=""));return d.join("")}};

