From a8a38dade54971ca240d5573d5f8187ac7750aa3 Mon Sep 17 00:00:00 2001 From: Andreas Moik Date: Mon, 30 Nov 2015 15:54:44 +0100 Subject: [PATCH] diverse include-Umbauten -vendor/FHC-vendor angelegt -.gitignore dementsprechend angepasst -easyui nach FHC-vendor verschoben -jquery meta-include angelegt -jquery-tablesorter meta-include angelegt --- .gitignore | 2 +- include/meta/easyui.php | 20 +- include/meta/jquery-tablesorter.php | 38 + include/meta/jquery.php | 33 + .../jquery-tablesorter/tablesort.css | 44 + vendor/{ => FHC-vendor}/easyui/changelog.txt | 0 .../demo-mobile/accordion/_content.html | 0 .../easyui/demo-mobile/accordion/basic.html | 0 .../easyui/demo-mobile/accordion/header.html | 0 .../easyui/demo-mobile/animation/basic.html | 0 .../easyui/demo-mobile/animation/fade.html | 0 .../easyui/demo-mobile/animation/pop.html | 0 .../easyui/demo-mobile/animation/slide.html | 0 .../easyui/demo-mobile/badge/basic.html | 0 .../easyui/demo-mobile/badge/button.html | 0 .../easyui/demo-mobile/badge/list.html | 0 .../easyui/demo-mobile/badge/tabs.html | 0 .../easyui/demo-mobile/button/basic.html | 0 .../easyui/demo-mobile/button/group.html | 0 .../easyui/demo-mobile/button/style.html | 0 .../easyui/demo-mobile/button/switch.html | 0 .../easyui/demo-mobile/datagrid/basic.html | 0 .../demo-mobile/datagrid/rowediting.html | 0 .../easyui/demo-mobile/datalist/basic.html | 0 .../easyui/demo-mobile/datalist/group.html | 0 .../demo-mobile/datalist/selection.html | 0 .../easyui/demo-mobile/dialog/basic.html | 0 .../easyui/demo-mobile/dialog/message.html | 0 .../easyui/demo-mobile/form/basic.html | 0 .../easyui/demo-mobile/images/login1.jpg | Bin .../easyui/demo-mobile/images/modem.png | Bin .../easyui/demo-mobile/images/more.png | Bin .../easyui/demo-mobile/images/pda.png | Bin .../easyui/demo-mobile/images/scanner.png | Bin .../easyui/demo-mobile/images/tablet.png | Bin .../demo-mobile/input/numberspinner.html | 0 .../easyui/demo-mobile/input/textbox.html | 0 .../easyui/demo-mobile/layout/basic.html | 0 .../easyui/demo-mobile/menu/basic.html | 0 .../easyui/demo-mobile/menu/menubar.html | 0 .../easyui/demo-mobile/panel/_content.html | 0 .../easyui/demo-mobile/panel/ajax.html | 0 .../easyui/demo-mobile/panel/basic.html | 0 .../easyui/demo-mobile/panel/nav.html | 0 .../easyui/demo-mobile/simplelist/basic.html | 0 .../easyui/demo-mobile/simplelist/button.html | 0 .../easyui/demo-mobile/simplelist/group.html | 0 .../easyui/demo-mobile/simplelist/image.html | 0 .../easyui/demo-mobile/simplelist/link.html | 0 .../easyui/demo-mobile/tabs/basic.html | 0 .../easyui/demo-mobile/tabs/nav.html | 0 .../easyui/demo-mobile/tabs/pill.html | 0 .../easyui/demo-mobile/toolbar/basic.html | 0 .../easyui/demo-mobile/toolbar/button.html | 0 .../easyui/demo-mobile/toolbar/menu.html | 0 .../easyui/demo-mobile/tree/basic.html | 0 .../easyui/demo-mobile/tree/dnd.html | 0 .../easyui/demo/accordion/_content.html | 0 .../easyui/demo/accordion/actions.html | 0 .../easyui/demo/accordion/ajax.html | 0 .../easyui/demo/accordion/basic.html | 0 .../easyui/demo/accordion/datagrid_data1.json | 0 .../easyui/demo/accordion/expandable.html | 0 .../easyui/demo/accordion/fluid.html | 0 .../easyui/demo/accordion/multiple.html | 0 .../easyui/demo/accordion/tools.html | 0 .../easyui/demo/calendar/basic.html | 0 .../easyui/demo/calendar/custom.html | 0 .../easyui/demo/calendar/disabledate.html | 0 .../easyui/demo/calendar/firstday.html | 0 .../easyui/demo/calendar/fluid.html | 0 .../easyui/demo/combo/animation.html | 0 .../easyui/demo/combo/basic.html | 0 .../easyui/demo/combobox/actions.html | 0 .../easyui/demo/combobox/basic.html | 0 .../easyui/demo/combobox/combobox_data1.json | 0 .../easyui/demo/combobox/combobox_data2.json | 0 .../easyui/demo/combobox/customformat.html | 0 .../easyui/demo/combobox/dynamicdata.html | 0 .../easyui/demo/combobox/fluid.html | 0 .../easyui/demo/combobox/group.html | 0 .../easyui/demo/combobox/icons.html | 0 .../easyui/demo/combobox/multiline.html | 0 .../easyui/demo/combobox/multiple.html | 0 .../easyui/demo/combobox/navigation.html | 0 .../easyui/demo/combobox/remotedata.html | 0 .../easyui/demo/combobox/remotejsonp.html | 0 .../easyui/demo/combogrid/actions.html | 0 .../easyui/demo/combogrid/basic.html | 0 .../easyui/demo/combogrid/datagrid_data1.json | 0 .../easyui/demo/combogrid/fluid.html | 0 .../easyui/demo/combogrid/initvalue.html | 0 .../easyui/demo/combogrid/multiple.html | 0 .../easyui/demo/combogrid/navigation.html | 0 .../easyui/demo/combogrid/setvalue.html | 0 .../easyui/demo/combotree/actions.html | 0 .../easyui/demo/combotree/basic.html | 0 .../easyui/demo/combotree/fluid.html | 0 .../easyui/demo/combotree/initvalue.html | 0 .../easyui/demo/combotree/multiple.html | 0 .../easyui/demo/combotree/tree_data1.json | 0 .../easyui/demo/datagrid/aligncolumns.html | 0 .../easyui/demo/datagrid/basic.html | 0 .../easyui/demo/datagrid/cacheeditor.html | 0 .../easyui/demo/datagrid/cellediting.html | 0 .../easyui/demo/datagrid/cellstyle.html | 0 .../easyui/demo/datagrid/checkbox.html | 0 .../demo/datagrid/clientpagination.html | 0 .../easyui/demo/datagrid/columngroup.html | 0 .../easyui/demo/datagrid/complextoolbar.html | 0 .../easyui/demo/datagrid/contextmenu.html | 0 .../easyui/demo/datagrid/custompager.html | 0 .../easyui/demo/datagrid/datagrid_data1.json | 0 .../easyui/demo/datagrid/datagrid_data2.json | 0 .../easyui/demo/datagrid/fluid.html | 0 .../easyui/demo/datagrid/footer.html | 0 .../easyui/demo/datagrid/formatcolumns.html | 0 .../easyui/demo/datagrid/frozencolumns.html | 0 .../easyui/demo/datagrid/frozenrows.html | 0 .../easyui/demo/datagrid/mergecells.html | 0 .../easyui/demo/datagrid/multisorting.html | 0 .../easyui/demo/datagrid/products.json | 0 .../easyui/demo/datagrid/rowborder.html | 0 .../easyui/demo/datagrid/rowediting.html | 0 .../easyui/demo/datagrid/rowstyle.html | 0 .../easyui/demo/datagrid/selection.html | 0 .../easyui/demo/datagrid/simpletoolbar.html | 0 .../easyui/demo/datagrid/transform.html | 0 .../easyui/demo/datalist/basic.html | 0 .../easyui/demo/datalist/checkbox.html | 0 .../easyui/demo/datalist/datalist_data1.json | 0 .../easyui/demo/datalist/group.html | 0 .../easyui/demo/datalist/multiselect.html | 0 .../easyui/demo/datalist/remotedata.html | 0 .../easyui/demo/datebox/basic.html | 0 .../easyui/demo/datebox/buttons.html | 0 .../easyui/demo/datebox/clone.html | 0 .../easyui/demo/datebox/dateformat.html | 0 .../easyui/demo/datebox/events.html | 0 .../easyui/demo/datebox/fluid.html | 0 .../easyui/demo/datebox/restrict.html | 0 .../easyui/demo/datebox/sharedcalendar.html | 0 .../easyui/demo/datebox/validate.html | 0 .../easyui/demo/datetimebox/basic.html | 0 .../easyui/demo/datetimebox/fluid.html | 0 .../easyui/demo/datetimebox/initvalue.html | 0 .../easyui/demo/datetimebox/showseconds.html | 0 .../easyui/demo/datetimespinner/basic.html | 0 .../demo/datetimespinner/clearicon.html | 0 .../easyui/demo/datetimespinner/fluid.html | 0 .../easyui/demo/datetimespinner/format.html | 0 vendor/{ => FHC-vendor}/easyui/demo/demo.css | 0 .../easyui/demo/dialog/basic.html | 0 .../easyui/demo/dialog/complextoolbar.html | 0 .../easyui/demo/dialog/fluid.html | 0 .../easyui/demo/dialog/toolbarbuttons.html | 0 .../easyui/demo/draggable/basic.html | 0 .../easyui/demo/draggable/constrain.html | 0 .../easyui/demo/draggable/snap.html | 0 .../easyui/demo/droppable/accept.html | 0 .../easyui/demo/droppable/basic.html | 0 .../easyui/demo/droppable/sort.html | 0 .../easyui/demo/easyloader/basic.html | 0 .../easyui/demo/filebox/basic.html | 0 .../easyui/demo/filebox/buttonalign.html | 0 .../easyui/demo/filebox/fluid.html | 0 .../easyui/demo/form/basic.html | 0 .../easyui/demo/form/form_data1.json | 0 .../easyui/demo/form/load.html | 0 .../easyui/demo/form/validateonsubmit.html | 0 .../easyui/demo/layout/_content.html | 0 .../easyui/demo/layout/addremove.html | 0 .../easyui/demo/layout/autoheight.html | 0 .../easyui/demo/layout/basic.html | 0 .../easyui/demo/layout/collapsetitle.html | 0 .../easyui/demo/layout/complex.html | 0 .../demo/layout/customcollapsetitle.html | 0 .../easyui/demo/layout/datagrid_data1.json | 0 .../easyui/demo/layout/fluid.html | 0 .../easyui/demo/layout/full.html | 0 .../easyui/demo/layout/nestedlayout.html | 0 .../easyui/demo/layout/nocollapsible.html | 0 .../demo/layout/propertygrid_data1.json | 0 .../easyui/demo/layout/tree_data1.json | 0 .../easyui/demo/linkbutton/basic.html | 0 .../easyui/demo/linkbutton/fluid.html | 0 .../easyui/demo/linkbutton/group.html | 0 .../easyui/demo/linkbutton/iconalign.html | 0 .../easyui/demo/linkbutton/plain.html | 0 .../easyui/demo/linkbutton/size.html | 0 .../easyui/demo/linkbutton/style.html | 0 .../easyui/demo/linkbutton/toggle.html | 0 .../easyui/demo/menu/basic.html | 0 .../easyui/demo/menu/customitem.html | 0 .../easyui/demo/menu/events.html | 0 .../easyui/demo/menu/inline.html | 0 .../easyui/demo/menu/nav.html | 0 .../easyui/demo/menubutton/actions.html | 0 .../easyui/demo/menubutton/alignment.html | 0 .../easyui/demo/menubutton/basic.html | 0 .../easyui/demo/menubutton/nav.html | 0 .../easyui/demo/messager/alert.html | 0 .../easyui/demo/messager/basic.html | 0 .../easyui/demo/messager/interactive.html | 0 .../easyui/demo/messager/position.html | 0 .../easyui/demo/numberbox/basic.html | 0 .../easyui/demo/numberbox/fluid.html | 0 .../easyui/demo/numberbox/format.html | 0 .../easyui/demo/numberbox/range.html | 0 .../easyui/demo/numberspinner/basic.html | 0 .../easyui/demo/numberspinner/fluid.html | 0 .../easyui/demo/numberspinner/increment.html | 0 .../easyui/demo/numberspinner/range.html | 0 .../easyui/demo/pagination/attaching.html | 0 .../easyui/demo/pagination/basic.html | 0 .../easyui/demo/pagination/custombuttons.html | 0 .../easyui/demo/pagination/layout.html | 0 .../easyui/demo/pagination/links.html | 0 .../easyui/demo/pagination/simple.html | 0 .../easyui/demo/panel/_content.html | 0 .../easyui/demo/panel/basic.html | 0 .../easyui/demo/panel/customtools.html | 0 .../easyui/demo/panel/fluid.html | 0 .../easyui/demo/panel/footer.html | 0 .../easyui/demo/panel/loadcontent.html | 0 .../easyui/demo/panel/nestedpanel.html | 0 .../easyui/demo/panel/paneltools.html | 0 .../easyui/demo/progressbar/basic.html | 0 .../easyui/demo/progressbar/fluid.html | 0 .../easyui/demo/propertygrid/basic.html | 0 .../demo/propertygrid/customcolumns.html | 0 .../easyui/demo/propertygrid/groupformat.html | 0 .../demo/propertygrid/propertygrid_data1.json | 0 .../easyui/demo/resizable/basic.html | 0 .../easyui/demo/searchbox/basic.html | 0 .../easyui/demo/searchbox/category.html | 0 .../easyui/demo/searchbox/fluid.html | 0 .../easyui/demo/slider/basic.html | 0 .../easyui/demo/slider/fluid.html | 0 .../easyui/demo/slider/formattip.html | 0 .../easyui/demo/slider/nonlinear.html | 0 .../easyui/demo/slider/range.html | 0 .../easyui/demo/slider/rule.html | 0 .../easyui/demo/slider/vertical.html | 0 .../easyui/demo/splitbutton/actions.html | 0 .../easyui/demo/splitbutton/basic.html | 0 .../easyui/demo/switchbutton/action.html | 0 .../easyui/demo/switchbutton/basic.html | 0 .../easyui/demo/tabs/_content.html | 0 .../easyui/demo/tabs/autoheight.html | 0 .../easyui/demo/tabs/basic.html | 0 .../easyui/demo/tabs/dropdown.html | 0 .../easyui/demo/tabs/fixedwidth.html | 0 .../easyui/demo/tabs/fluid.html | 0 .../easyui/demo/tabs/hover.html | 0 .../easyui/demo/tabs/images/modem.png | Bin .../easyui/demo/tabs/images/pda.png | Bin .../easyui/demo/tabs/images/scanner.png | Bin .../easyui/demo/tabs/images/tablet.png | Bin .../easyui/demo/tabs/nestedtabs.html | 0 .../easyui/demo/tabs/striptools.html | 0 .../easyui/demo/tabs/style.html | 0 .../easyui/demo/tabs/tabimage.html | 0 .../easyui/demo/tabs/tabposition.html | 0 .../easyui/demo/tabs/tabstools.html | 0 .../easyui/demo/tabs/tree_data1.json | 0 .../easyui/demo/textbox/basic.html | 0 .../easyui/demo/textbox/button.html | 0 .../easyui/demo/textbox/clearicon.html | 0 .../easyui/demo/textbox/custom.html | 0 .../easyui/demo/textbox/fluid.html | 0 .../easyui/demo/textbox/icons.html | 0 .../easyui/demo/textbox/multiline.html | 0 .../easyui/demo/textbox/size.html | 0 .../easyui/demo/timespinner/actions.html | 0 .../easyui/demo/timespinner/basic.html | 0 .../easyui/demo/timespinner/fluid.html | 0 .../easyui/demo/timespinner/range.html | 0 .../easyui/demo/tooltip/_content.html | 0 .../easyui/demo/tooltip/_dialog.html | 0 .../easyui/demo/tooltip/ajax.html | 0 .../easyui/demo/tooltip/basic.html | 0 .../easyui/demo/tooltip/customcontent.html | 0 .../easyui/demo/tooltip/customstyle.html | 0 .../easyui/demo/tooltip/position.html | 0 .../easyui/demo/tooltip/toolbar.html | 0 .../easyui/demo/tooltip/tooltipdialog.html | 0 .../easyui/demo/tree/actions.html | 0 .../easyui/demo/tree/animation.html | 0 .../easyui/demo/tree/basic.html | 0 .../easyui/demo/tree/checkbox.html | 0 .../easyui/demo/tree/contextmenu.html | 0 .../easyui/demo/tree/dnd.html | 0 .../easyui/demo/tree/editable.html | 0 .../easyui/demo/tree/formatting.html | 0 .../easyui/demo/tree/icons.html | 0 .../easyui/demo/tree/lazyload.html | 0 .../easyui/demo/tree/lines.html | 0 .../easyui/demo/tree/tree_data1.json | 0 .../easyui/demo/tree/tree_data2.json | 0 .../easyui/demo/treegrid/actions.html | 0 .../easyui/demo/treegrid/basic.html | 0 .../demo/treegrid/clientpagination.html | 0 .../easyui/demo/treegrid/contextmenu.html | 0 .../easyui/demo/treegrid/editable.html | 0 .../easyui/demo/treegrid/fluid.html | 0 .../easyui/demo/treegrid/footer.html | 0 .../easyui/demo/treegrid/lines.html | 0 .../easyui/demo/treegrid/reports.html | 0 .../easyui/demo/treegrid/treegrid_data1.json | 0 .../easyui/demo/treegrid/treegrid_data2.json | 0 .../easyui/demo/treegrid/treegrid_data3.json | 0 .../easyui/demo/validatebox/basic.html | 0 .../demo/validatebox/customtooltip.html | 0 .../demo/validatebox/validateonblur.html | 0 .../easyui/demo/window/basic.html | 0 .../easyui/demo/window/customtools.html | 0 .../easyui/demo/window/fluid.html | 0 .../easyui/demo/window/footer.html | 0 .../easyui/demo/window/inlinewindow.html | 0 .../easyui/demo/window/modalwindow.html | 0 .../easyui/demo/window/windowlayout.html | 0 vendor/{ => FHC-vendor}/easyui/easyloader.js | 0 .../easyui/jquery.easyui.min.js | 0 .../easyui/jquery.easyui.mobile.js | 0 vendor/{ => FHC-vendor}/easyui/jquery.min.js | 0 .../easyui/license_freeware.txt | 0 .../easyui/locale/easyui-lang-af.js | 0 .../easyui/locale/easyui-lang-am.js | 0 .../easyui/locale/easyui-lang-ar.js | 0 .../easyui/locale/easyui-lang-bg.js | 0 .../easyui/locale/easyui-lang-ca.js | 0 .../easyui/locale/easyui-lang-cs.js | 0 .../easyui/locale/easyui-lang-cz.js | 0 .../easyui/locale/easyui-lang-da.js | 0 .../easyui/locale/easyui-lang-de.js | 0 .../easyui/locale/easyui-lang-el.js | 0 .../easyui/locale/easyui-lang-en.js | 0 .../easyui/locale/easyui-lang-es.js | 0 .../easyui/locale/easyui-lang-fr.js | 0 .../easyui/locale/easyui-lang-it.js | 0 .../easyui/locale/easyui-lang-jp.js | 0 .../easyui/locale/easyui-lang-nl.js | 0 .../easyui/locale/easyui-lang-pl.js | 0 .../easyui/locale/easyui-lang-pt_BR.js | 0 .../easyui/locale/easyui-lang-ru.js | 0 .../easyui/locale/easyui-lang-sv_SE.js | 0 .../easyui/locale/easyui-lang-tr.js | 0 .../easyui/locale/easyui-lang-zh_CN.js | 0 .../easyui/locale/easyui-lang-zh_TW.js | 0 .../easyui/plugins/jquery.accordion.js | 0 .../easyui/plugins/jquery.calendar.js | 0 .../easyui/plugins/jquery.combo.js | 0 .../easyui/plugins/jquery.combobox.js | 0 .../easyui/plugins/jquery.combogrid.js | 0 .../easyui/plugins/jquery.combotree.js | 0 .../easyui/plugins/jquery.datagrid.js | 0 .../easyui/plugins/jquery.datalist.js | 0 .../easyui/plugins/jquery.datebox.js | 0 .../easyui/plugins/jquery.datetimebox.js | 0 .../easyui/plugins/jquery.datetimespinner.js | 0 .../easyui/plugins/jquery.dialog.js | 0 .../easyui/plugins/jquery.draggable.js | 0 .../easyui/plugins/jquery.droppable.js | 0 .../easyui/plugins/jquery.filebox.js | 0 .../easyui/plugins/jquery.form.js | 0 .../easyui/plugins/jquery.layout.js | 0 .../easyui/plugins/jquery.linkbutton.js | 0 .../easyui/plugins/jquery.menu.js | 0 .../easyui/plugins/jquery.menubutton.js | 0 .../easyui/plugins/jquery.messager.js | 0 .../easyui/plugins/jquery.mobile.js | 0 .../easyui/plugins/jquery.numberbox.js | 0 .../easyui/plugins/jquery.numberspinner.js | 0 .../easyui/plugins/jquery.pagination.js | 0 .../easyui/plugins/jquery.panel.js | 0 .../easyui/plugins/jquery.parser.js | 0 .../easyui/plugins/jquery.progressbar.js | 0 .../easyui/plugins/jquery.propertygrid.js | 0 .../easyui/plugins/jquery.resizable.js | 0 .../easyui/plugins/jquery.searchbox.js | 0 .../easyui/plugins/jquery.slider.js | 0 .../easyui/plugins/jquery.spinner.js | 0 .../easyui/plugins/jquery.splitbutton.js | 0 .../easyui/plugins/jquery.switchbutton.js | 0 .../easyui/plugins/jquery.tabs.js | 0 .../easyui/plugins/jquery.textbox.js | 0 .../easyui/plugins/jquery.timespinner.js | 0 .../easyui/plugins/jquery.tooltip.js | 0 .../easyui/plugins/jquery.tree.js | 0 .../easyui/plugins/jquery.treegrid.js | 0 .../easyui/plugins/jquery.validatebox.js | 0 .../easyui/plugins/jquery.window.js | 0 vendor/{ => FHC-vendor}/easyui/readme.txt | 0 .../{ => FHC-vendor}/easyui/src/easyloader.js | 0 .../easyui/src/jquery.accordion.js | 0 .../easyui/src/jquery.calendar.js | 0 .../easyui/src/jquery.combobox.js | 0 .../easyui/src/jquery.datebox.js | 0 .../easyui/src/jquery.draggable.js | 0 .../easyui/src/jquery.droppable.js | 0 .../easyui/src/jquery.form.js | 0 .../easyui/src/jquery.linkbutton.js | 0 .../easyui/src/jquery.menu.js | 0 .../easyui/src/jquery.parser.js | 0 .../easyui/src/jquery.progressbar.js | 0 .../easyui/src/jquery.propertygrid.js | 0 .../easyui/src/jquery.resizable.js | 0 .../easyui/src/jquery.slider.js | 0 .../easyui/src/jquery.tabs.js | 0 .../easyui/src/jquery.window.js | 0 .../easyui/themes/black/accordion.css | 0 .../easyui/themes/black/calendar.css | 0 .../easyui/themes/black/combo.css | 0 .../easyui/themes/black/combobox.css | 0 .../easyui/themes/black/datagrid.css | 0 .../easyui/themes/black/datalist.css | 0 .../easyui/themes/black/datebox.css | 0 .../easyui/themes/black/dialog.css | 0 .../easyui/themes/black/easyui.css | 0 .../easyui/themes/black/filebox.css | 0 .../themes/black/images/accordion_arrows.png | Bin .../easyui/themes/black/images/blank.gif | Bin .../themes/black/images/calendar_arrows.png | Bin .../themes/black/images/combo_arrow.png | Bin .../themes/black/images/datagrid_icons.png | Bin .../themes/black/images/datebox_arrow.png | Bin .../themes/black/images/layout_arrows.png | Bin .../themes/black/images/linkbutton_bg.png | Bin .../easyui/themes/black/images/loading.gif | Bin .../themes/black/images/menu_arrows.png | Bin .../themes/black/images/messager_icons.png | Bin .../themes/black/images/pagination_icons.png | Bin .../themes/black/images/panel_tools.png | Bin .../themes/black/images/searchbox_button.png | Bin .../themes/black/images/slider_handle.png | Bin .../themes/black/images/spinner_arrows.png | Bin .../easyui/themes/black/images/tabs_icons.png | Bin .../easyui/themes/black/images/tree_icons.png | Bin .../black/images/validatebox_warning.png | Bin .../easyui/themes/black/layout.css | 0 .../easyui/themes/black/linkbutton.css | 0 .../easyui/themes/black/menu.css | 0 .../easyui/themes/black/menubutton.css | 0 .../easyui/themes/black/messager.css | 0 .../easyui/themes/black/numberbox.css | 0 .../easyui/themes/black/pagination.css | 0 .../easyui/themes/black/panel.css | 0 .../easyui/themes/black/progressbar.css | 0 .../easyui/themes/black/propertygrid.css | 0 .../easyui/themes/black/searchbox.css | 0 .../easyui/themes/black/slider.css | 0 .../easyui/themes/black/spinner.css | 0 .../easyui/themes/black/splitbutton.css | 0 .../easyui/themes/black/switchbutton.css | 0 .../easyui/themes/black/tabs.css | 0 .../easyui/themes/black/textbox.css | 0 .../easyui/themes/black/tooltip.css | 0 .../easyui/themes/black/tree.css | 0 .../easyui/themes/black/validatebox.css | 0 .../easyui/themes/black/window.css | 0 .../easyui/themes/bootstrap/accordion.css | 0 .../easyui/themes/bootstrap/calendar.css | 0 .../easyui/themes/bootstrap/combo.css | 0 .../easyui/themes/bootstrap/combobox.css | 0 .../easyui/themes/bootstrap/datagrid.css | 0 .../easyui/themes/bootstrap/datalist.css | 0 .../easyui/themes/bootstrap/datebox.css | 0 .../easyui/themes/bootstrap/dialog.css | 0 .../easyui/themes/bootstrap/easyui.css | 0 .../easyui/themes/bootstrap/filebox.css | 0 .../bootstrap/images/accordion_arrows.png | Bin .../easyui/themes/bootstrap/images/blank.gif | Bin .../bootstrap/images/calendar_arrows.png | Bin .../themes/bootstrap/images/combo_arrow.png | Bin .../bootstrap/images/datagrid_icons.png | Bin .../themes/bootstrap/images/datebox_arrow.png | Bin .../themes/bootstrap/images/layout_arrows.png | Bin .../themes/bootstrap/images/linkbutton_bg.png | Bin .../themes/bootstrap/images/loading.gif | Bin .../themes/bootstrap/images/menu_arrows.png | Bin .../bootstrap/images/messager_icons.png | Bin .../bootstrap/images/pagination_icons.png | Bin .../themes/bootstrap/images/panel_tools.png | Bin .../bootstrap/images/searchbox_button.png | Bin .../themes/bootstrap/images/slider_handle.png | Bin .../bootstrap/images/spinner_arrows.png | Bin .../themes/bootstrap/images/tabs_icons.png | Bin .../themes/bootstrap/images/tree_icons.png | Bin .../bootstrap/images/validatebox_warning.png | Bin .../easyui/themes/bootstrap/layout.css | 0 .../easyui/themes/bootstrap/linkbutton.css | 0 .../easyui/themes/bootstrap/menu.css | 0 .../easyui/themes/bootstrap/menubutton.css | 0 .../easyui/themes/bootstrap/messager.css | 0 .../easyui/themes/bootstrap/numberbox.css | 0 .../easyui/themes/bootstrap/pagination.css | 0 .../easyui/themes/bootstrap/panel.css | 0 .../easyui/themes/bootstrap/progressbar.css | 0 .../easyui/themes/bootstrap/propertygrid.css | 0 .../easyui/themes/bootstrap/searchbox.css | 0 .../easyui/themes/bootstrap/slider.css | 0 .../easyui/themes/bootstrap/spinner.css | 0 .../easyui/themes/bootstrap/splitbutton.css | 0 .../easyui/themes/bootstrap/switchbutton.css | 0 .../easyui/themes/bootstrap/tabs.css | 0 .../easyui/themes/bootstrap/textbox.css | 0 .../easyui/themes/bootstrap/tooltip.css | 0 .../easyui/themes/bootstrap/tree.css | 0 .../easyui/themes/bootstrap/validatebox.css | 0 .../easyui/themes/bootstrap/window.css | 0 .../{ => FHC-vendor}/easyui/themes/color.css | 0 .../easyui/themes/default/accordion.css | 0 .../easyui/themes/default/calendar.css | 0 .../easyui/themes/default/combo.css | 0 .../easyui/themes/default/combobox.css | 0 .../easyui/themes/default/datagrid.css | 0 .../easyui/themes/default/datalist.css | 0 .../easyui/themes/default/datebox.css | 0 .../easyui/themes/default/dialog.css | 0 .../easyui/themes/default/easyui.css | 0 .../easyui/themes/default/filebox.css | 0 .../default/images/accordion_arrows.png | Bin .../easyui/themes/default/images/blank.gif | Bin .../themes/default/images/calendar_arrows.png | Bin .../themes/default/images/combo_arrow.png | Bin .../themes/default/images/datagrid_icons.png | Bin .../themes/default/images/datebox_arrow.png | Bin .../themes/default/images/layout_arrows.png | Bin .../themes/default/images/linkbutton_bg.png | Bin .../easyui/themes/default/images/loading.gif | Bin .../themes/default/images/menu_arrows.png | Bin .../themes/default/images/messager_icons.png | Bin .../default/images/pagination_icons.png | Bin .../themes/default/images/panel_tools.png | Bin .../default/images/searchbox_button.png | Bin .../themes/default/images/slider_handle.png | Bin .../themes/default/images/spinner_arrows.png | Bin .../themes/default/images/tabs_icons.png | Bin .../themes/default/images/tree_icons.png | Bin .../default/images/validatebox_warning.png | Bin .../easyui/themes/default/layout.css | 0 .../easyui/themes/default/linkbutton.css | 0 .../easyui/themes/default/menu.css | 0 .../easyui/themes/default/menubutton.css | 0 .../easyui/themes/default/messager.css | 0 .../easyui/themes/default/numberbox.css | 0 .../easyui/themes/default/pagination.css | 0 .../easyui/themes/default/panel.css | 0 .../easyui/themes/default/progressbar.css | 0 .../easyui/themes/default/propertygrid.css | 0 .../easyui/themes/default/searchbox.css | 0 .../easyui/themes/default/slider.css | 0 .../easyui/themes/default/spinner.css | 0 .../easyui/themes/default/splitbutton.css | 0 .../easyui/themes/default/switchbutton.css | 0 .../easyui/themes/default/tabs.css | 0 .../easyui/themes/default/textbox.css | 0 .../easyui/themes/default/tooltip.css | 0 .../easyui/themes/default/tree.css | 0 .../easyui/themes/default/validatebox.css | 0 .../easyui/themes/default/window.css | 0 .../easyui/themes/gray/accordion.css | 0 .../easyui/themes/gray/calendar.css | 0 .../easyui/themes/gray/combo.css | 0 .../easyui/themes/gray/combobox.css | 0 .../easyui/themes/gray/datagrid.css | 0 .../easyui/themes/gray/datalist.css | 0 .../easyui/themes/gray/datebox.css | 0 .../easyui/themes/gray/dialog.css | 0 .../easyui/themes/gray/easyui.css | 0 .../easyui/themes/gray/filebox.css | 0 .../themes/gray/images/accordion_arrows.png | Bin .../easyui/themes/gray/images/blank.gif | Bin .../themes/gray/images/calendar_arrows.png | Bin .../easyui/themes/gray/images/combo_arrow.png | Bin .../themes/gray/images/datagrid_icons.png | Bin .../themes/gray/images/datebox_arrow.png | Bin .../themes/gray/images/layout_arrows.png | Bin .../themes/gray/images/linkbutton_bg.png | Bin .../easyui/themes/gray/images/loading.gif | Bin .../easyui/themes/gray/images/menu_arrows.png | Bin .../themes/gray/images/messager_icons.png | Bin .../themes/gray/images/pagination_icons.png | Bin .../easyui/themes/gray/images/panel_tools.png | Bin .../themes/gray/images/searchbox_button.png | Bin .../themes/gray/images/slider_handle.png | Bin .../themes/gray/images/spinner_arrows.png | Bin .../easyui/themes/gray/images/tabs_icons.png | Bin .../easyui/themes/gray/images/tree_icons.png | Bin .../gray/images/validatebox_warning.png | Bin .../easyui/themes/gray/layout.css | 0 .../easyui/themes/gray/linkbutton.css | 0 .../easyui/themes/gray/menu.css | 0 .../easyui/themes/gray/menubutton.css | 0 .../easyui/themes/gray/messager.css | 0 .../easyui/themes/gray/numberbox.css | 0 .../easyui/themes/gray/pagination.css | 0 .../easyui/themes/gray/panel.css | 0 .../easyui/themes/gray/progressbar.css | 0 .../easyui/themes/gray/propertygrid.css | 0 .../easyui/themes/gray/searchbox.css | 0 .../easyui/themes/gray/slider.css | 0 .../easyui/themes/gray/spinner.css | 0 .../easyui/themes/gray/splitbutton.css | 0 .../easyui/themes/gray/switchbutton.css | 0 .../easyui/themes/gray/tabs.css | 0 .../easyui/themes/gray/textbox.css | 0 .../easyui/themes/gray/tooltip.css | 0 .../easyui/themes/gray/tree.css | 0 .../easyui/themes/gray/validatebox.css | 0 .../easyui/themes/gray/window.css | 0 .../{ => FHC-vendor}/easyui/themes/icon.css | 0 .../easyui/themes/icons/back.png | Bin .../easyui/themes/icons/blank.gif | Bin .../easyui/themes/icons/cancel.png | Bin .../easyui/themes/icons/clear.png | Bin .../easyui/themes/icons/cut.png | Bin .../easyui/themes/icons/edit_add.png | Bin .../easyui/themes/icons/edit_remove.png | Bin .../easyui/themes/icons/filesave.png | Bin .../easyui/themes/icons/filter.png | Bin .../easyui/themes/icons/help.png | Bin .../easyui/themes/icons/large_chart.png | Bin .../easyui/themes/icons/large_clipart.png | Bin .../easyui/themes/icons/large_picture.png | Bin .../easyui/themes/icons/large_shapes.png | Bin .../easyui/themes/icons/large_smartart.png | Bin .../easyui/themes/icons/lock.png | Bin .../easyui/themes/icons/man.png | Bin .../easyui/themes/icons/mini_add.png | Bin .../easyui/themes/icons/mini_edit.png | Bin .../easyui/themes/icons/mini_refresh.png | Bin .../easyui/themes/icons/more.png | Bin .../easyui/themes/icons/no.png | Bin .../easyui/themes/icons/ok.png | Bin .../easyui/themes/icons/pencil.png | Bin .../easyui/themes/icons/print.png | Bin .../easyui/themes/icons/redo.png | Bin .../easyui/themes/icons/reload.png | Bin .../easyui/themes/icons/search.png | Bin .../easyui/themes/icons/sum.png | Bin .../easyui/themes/icons/tip.png | Bin .../easyui/themes/icons/undo.png | Bin .../easyui/themes/metro/accordion.css | 0 .../easyui/themes/metro/calendar.css | 0 .../easyui/themes/metro/combo.css | 0 .../easyui/themes/metro/combobox.css | 0 .../easyui/themes/metro/datagrid.css | 0 .../easyui/themes/metro/datalist.css | 0 .../easyui/themes/metro/datebox.css | 0 .../easyui/themes/metro/dialog.css | 0 .../easyui/themes/metro/easyui.css | 0 .../easyui/themes/metro/filebox.css | 0 .../themes/metro/images/accordion_arrows.png | Bin .../easyui/themes/metro/images/blank.gif | Bin .../themes/metro/images/calendar_arrows.png | Bin .../themes/metro/images/combo_arrow.png | Bin .../themes/metro/images/datagrid_icons.png | Bin .../themes/metro/images/datebox_arrow.png | Bin .../themes/metro/images/layout_arrows.png | Bin .../themes/metro/images/linkbutton_bg.png | Bin .../easyui/themes/metro/images/loading.gif | Bin .../themes/metro/images/menu_arrows.png | Bin .../themes/metro/images/messager_icons.png | Bin .../themes/metro/images/pagination_icons.png | Bin .../themes/metro/images/panel_tools.png | Bin .../themes/metro/images/searchbox_button.png | Bin .../themes/metro/images/slider_handle.png | Bin .../themes/metro/images/spinner_arrows.png | Bin .../easyui/themes/metro/images/tabs_icons.png | Bin .../easyui/themes/metro/images/tree_icons.png | Bin .../metro/images/validatebox_warning.png | Bin .../easyui/themes/metro/layout.css | 0 .../easyui/themes/metro/linkbutton.css | 0 .../easyui/themes/metro/menu.css | 0 .../easyui/themes/metro/menubutton.css | 0 .../easyui/themes/metro/messager.css | 0 .../easyui/themes/metro/numberbox.css | 0 .../easyui/themes/metro/pagination.css | 0 .../easyui/themes/metro/panel.css | 0 .../easyui/themes/metro/progressbar.css | 0 .../easyui/themes/metro/propertygrid.css | 0 .../easyui/themes/metro/searchbox.css | 0 .../easyui/themes/metro/slider.css | 0 .../easyui/themes/metro/spinner.css | 0 .../easyui/themes/metro/splitbutton.css | 0 .../easyui/themes/metro/switchbutton.css | 0 .../easyui/themes/metro/tabs.css | 0 .../easyui/themes/metro/textbox.css | 0 .../easyui/themes/metro/tooltip.css | 0 .../easyui/themes/metro/tree.css | 0 .../easyui/themes/metro/validatebox.css | 0 .../easyui/themes/metro/window.css | 0 .../{ => FHC-vendor}/easyui/themes/mobile.css | 0 vendor/{ => FHC-vendor}/easyui/themes/vilesci | 0 .../jquery-tablesorter/.gitattributes | 23 + .../FHC-vendor/jquery-tablesorter/.gitignore | 165 + vendor/FHC-vendor/jquery-tablesorter/.jscsrc | 65 + .../jquery-tablesorter/CONTRIBUTING.md | 45 + .../jquery-tablesorter/Gruntfile.js | 428 + .../FHC-vendor/jquery-tablesorter/README.md | 159 + .../addons/pager/icons/first.png | Bin 0 -> 720 bytes .../addons/pager/icons/last.png | Bin 0 -> 737 bytes .../addons/pager/icons/loading.gif | Bin 0 -> 416 bytes .../addons/pager/icons/next.png | Bin 0 -> 736 bytes .../addons/pager/icons/prev.png | Bin 0 -> 745 bytes .../addons/pager/jquery.tablesorter.pager.css | 42 + .../addons/pager/jquery.tablesorter.pager.js | 1178 +++ .../example-pager-custom-controls.html | 1200 +++ .../example-widget-column-reorder.html | 192 + .../beta-testing/pager-custom-controls.js | 102 + .../beta-testing/widget-reorder.js | 182 + .../FHC-vendor/jquery-tablesorter/bower.json | 28 + .../jquery-tablesorter/changelog.txt | 2 + .../jquery-tablesorter/css/bootstrap.less | 322 + .../jquery-tablesorter/css/dragtable.mod.css | 64 + .../css/filter.formatter.css | 183 + .../css/images/black-asc.gif | Bin 0 -> 48 bytes .../css/images/black-desc.gif | Bin 0 -> 49 bytes .../css/images/black-unsorted.gif | Bin 0 -> 54 bytes .../css/images/bootstrap-black-unsorted.png | Bin 0 -> 284 bytes .../css/images/bootstrap-white-unsorted.png | Bin 0 -> 223 bytes .../css/images/dragtable-handle.png | Bin 0 -> 103 bytes .../css/images/dragtable-handle.svg | 7 + .../css/images/dropbox-asc-hovered.png | Bin 0 -> 275 bytes .../css/images/dropbox-asc.png | Bin 0 -> 278 bytes .../css/images/dropbox-desc-hovered.png | Bin 0 -> 273 bytes .../css/images/dropbox-desc.png | Bin 0 -> 277 bytes .../css/images/green-asc.gif | Bin 0 -> 283 bytes .../css/images/green-desc.gif | Bin 0 -> 283 bytes .../css/images/green-header.gif | Bin 0 -> 513 bytes .../css/images/green-unsorted.gif | Bin 0 -> 520 bytes .../jquery-tablesorter/css/images/ice-asc.gif | Bin 0 -> 285 bytes .../css/images/ice-desc.gif | Bin 0 -> 285 bytes .../css/images/ice-unsorted.gif | Bin 0 -> 180 bytes .../css/images/metro-black-asc.png | Bin 0 -> 213 bytes .../css/images/metro-black-desc.png | Bin 0 -> 232 bytes .../css/images/metro-loading.gif | Bin 0 -> 673 bytes .../css/images/metro-unsorted.png | Bin 0 -> 181 bytes .../css/images/metro-white-asc.png | Bin 0 -> 209 bytes .../css/images/metro-white-desc.png | Bin 0 -> 224 bytes .../css/images/white-asc.gif | Bin 0 -> 48 bytes .../css/images/white-desc.gif | Bin 0 -> 49 bytes .../css/images/white-unsorted.gif | Bin 0 -> 54 bytes .../jquery-tablesorter/css/metro.less | 357 + .../jquery-tablesorter/css/psd/green-asc.psd | Bin 0 -> 32673 bytes .../jquery-tablesorter/css/psd/green-desc.psd | Bin 0 -> 27807 bytes .../css/psd/green-unsorted.psd | Bin 0 -> 32412 bytes .../css/psd/metro-style.psd | Bin 0 -> 30446 bytes .../css/theme.black-ice.css | 192 + .../jquery-tablesorter/css/theme.blue.css | 229 + .../css/theme.bootstrap.css | 158 + .../css/theme.bootstrap_2.css | 157 + .../jquery-tablesorter/css/theme.dark.css | 193 + .../jquery-tablesorter/css/theme.default.css | 194 + .../jquery-tablesorter/css/theme.dropbox.css | 216 + .../jquery-tablesorter/css/theme.green.css | 212 + .../jquery-tablesorter/css/theme.grey.css | 252 + .../jquery-tablesorter/css/theme.ice.css | 212 + .../jquery-tablesorter/css/theme.jui.css | 164 + .../jquery-tablesorter/css/theme.less | 329 + .../css/theme.metro-dark.css | 197 + .../dist/css/dragtable.mod.min.css | 1 + .../dist/css/filter.formatter.min.css | 1 + .../dist/css/images/black-asc.gif | Bin 0 -> 48 bytes .../dist/css/images/black-desc.gif | Bin 0 -> 49 bytes .../dist/css/images/black-unsorted.gif | Bin 0 -> 54 bytes .../css/images/bootstrap-black-unsorted.png | Bin 0 -> 284 bytes .../css/images/bootstrap-white-unsorted.png | Bin 0 -> 223 bytes .../dist/css/images/dragtable-handle.png | Bin 0 -> 103 bytes .../dist/css/images/dragtable-handle.svg | 7 + .../dist/css/images/dropbox-asc-hovered.png | Bin 0 -> 275 bytes .../dist/css/images/dropbox-asc.png | Bin 0 -> 278 bytes .../dist/css/images/dropbox-desc-hovered.png | Bin 0 -> 273 bytes .../dist/css/images/dropbox-desc.png | Bin 0 -> 277 bytes .../dist/css/images/first.png | Bin 0 -> 720 bytes .../dist/css/images/green-asc.gif | Bin 0 -> 283 bytes .../dist/css/images/green-desc.gif | Bin 0 -> 283 bytes .../dist/css/images/green-header.gif | Bin 0 -> 513 bytes .../dist/css/images/green-unsorted.gif | Bin 0 -> 520 bytes .../dist/css/images/ice-asc.gif | Bin 0 -> 285 bytes .../dist/css/images/ice-desc.gif | Bin 0 -> 285 bytes .../dist/css/images/ice-unsorted.gif | Bin 0 -> 180 bytes .../dist/css/images/last.png | Bin 0 -> 737 bytes .../dist/css/images/loading.gif | Bin 0 -> 416 bytes .../dist/css/images/metro-black-asc.png | Bin 0 -> 213 bytes .../dist/css/images/metro-black-desc.png | Bin 0 -> 232 bytes .../dist/css/images/metro-loading.gif | Bin 0 -> 673 bytes .../dist/css/images/metro-unsorted.png | Bin 0 -> 181 bytes .../dist/css/images/metro-white-asc.png | Bin 0 -> 209 bytes .../dist/css/images/metro-white-desc.png | Bin 0 -> 224 bytes .../dist/css/images/next.png | Bin 0 -> 736 bytes .../dist/css/images/prev.png | Bin 0 -> 745 bytes .../dist/css/images/white-asc.gif | Bin 0 -> 48 bytes .../dist/css/images/white-desc.gif | Bin 0 -> 49 bytes .../dist/css/images/white-unsorted.gif | Bin 0 -> 54 bytes .../dist/css/jquery.tablesorter.pager.min.css | 1 + .../dist/css/less/bootstrap.less | 322 + .../dist/css/less/metro.less | 357 + .../dist/css/less/theme.less | 329 + .../dist/css/theme.blackice.min.css | 1 + .../dist/css/theme.blue.min.css | 1 + .../dist/css/theme.bootstrap.min.css | 1 + .../dist/css/theme.bootstrap_2.min.css | 1 + .../dist/css/theme.dark.min.css | 1 + .../dist/css/theme.default.min.css | 1 + .../dist/css/theme.dropbox.min.css | 1 + .../dist/css/theme.green.min.css | 1 + .../dist/css/theme.grey.min.css | 1 + .../dist/css/theme.ice.min.css | 1 + .../dist/css/theme.jui.min.css | 1 + .../dist/css/theme.metro-dark.min.css | 1 + .../js/extras/jquery.dragtable.mod.min.js | 3 + .../dist/js/extras/jquery.metadata.min.js | 1 + .../js/extras/jquery.tablesorter.pager.min.js | 5 + .../dist/js/extras/semver-mod.min.js | 2 + .../dist/js/jquery.tablesorter.combined.js | 5506 ++++++++++++ .../js/jquery.tablesorter.combined.min.js | 4 + .../dist/js/jquery.tablesorter.js | 2645 ++++++ .../dist/js/jquery.tablesorter.min.js | 2 + .../dist/js/jquery.tablesorter.widgets.js | 2873 +++++++ .../dist/js/jquery.tablesorter.widgets.min.js | 3 + .../js/parsers/parser-date-extract.min.js | 6 + .../js/parsers/parser-date-iso8601.min.js | 2 + .../dist/js/parsers/parser-date-month.min.js | 2 + .../dist/js/parsers/parser-date-range.min.js | 5 + .../parsers/parser-date-two-digit-year.min.js | 2 + .../js/parsers/parser-date-weekday.min.js | 2 + .../dist/js/parsers/parser-date.min.js | 4 + .../dist/js/parsers/parser-duration.min.js | 3 + .../parsers/parser-feet-inch-fraction.min.js | 2 + .../dist/js/parsers/parser-file-type.min.js | 2 + .../dist/js/parsers/parser-globalize.min.js | 4 + .../js/parsers/parser-ignore-articles.min.js | 2 + .../dist/js/parsers/parser-image.min.js | 2 + .../js/parsers/parser-input-select.min.js | 2 + .../dist/js/parsers/parser-metric.min.js | 2 + .../js/parsers/parser-named-numbers.min.js | 2 + .../dist/js/parsers/parser-network.min.js | 3 + .../dist/js/parsers/parser-roman.min.js | 2 + .../dist/js/widgets/widget-alignChar.min.js | 2 + .../dist/js/widgets/widget-build-table.min.js | 2 + .../dist/js/widgets/widget-chart.min.js | 1 + .../js/widgets/widget-columnSelector.min.js | 1 + .../dist/js/widgets/widget-columns.min.js | 2 + .../js/widgets/widget-cssStickyHeaders.min.js | 2 + .../dist/js/widgets/widget-editable.min.js | 2 + .../widget-filter-formatter-html5.min.js | 2 + .../widget-filter-formatter-jui.min.js | 2 + .../widget-filter-formatter-select2.min.js | 2 + .../widget-filter-type-insideRange.min.js | 2 + .../dist/js/widgets/widget-filter.min.js | 2 + .../dist/js/widgets/widget-formatter.min.js | 2 + .../dist/js/widgets/widget-grouping.min.js | 2 + .../js/widgets/widget-headerTitles.min.js | 2 + .../dist/js/widgets/widget-lazyload.min.js | 16 + .../dist/js/widgets/widget-math.min.js | 2 + .../dist/js/widgets/widget-output.min.js | 2 + .../dist/js/widgets/widget-pager.min.js | 2 + .../dist/js/widgets/widget-print.min.js | 1 + .../dist/js/widgets/widget-reflow.min.js | 1 + .../js/widgets/widget-repeatheaders.min.js | 2 + .../dist/js/widgets/widget-resizable.min.js | 2 + .../dist/js/widgets/widget-saveSort.min.js | 2 + .../dist/js/widgets/widget-scroller.min.js | 2 + .../dist/js/widgets/widget-sort2Hash.min.js | 2 + .../dist/js/widgets/widget-sortTbodies.min.js | 5 + .../dist/js/widgets/widget-staticRow.min.js | 2 + .../js/widgets/widget-stickyHeaders.min.js | 2 + .../dist/js/widgets/widget-storage.min.js | 2 + .../dist/js/widgets/widget-toggle.min.js | 5 + .../dist/js/widgets/widget-uitheme.min.js | 2 + .../dist/js/widgets/widget-view.min.js | 1 + .../jquery-tablesorter/docs/assets/City0.json | 159 + .../jquery-tablesorter/docs/assets/City1.json | 159 + .../jquery-tablesorter/docs/assets/City2.json | 159 + .../jquery-tablesorter/docs/assets/City3.json | 39 + .../docs/assets/ajax-content.html | 40 + .../jquery-tablesorter/docs/assets/build.json | 37 + .../jquery-tablesorter/docs/assets/build.txt | 9 + .../docs/assets/theme_switcher.json | 295 + .../docs/css/bootstrap-v2.min.css | 9 + .../docs/css/bootstrap.min.css | 5 + .../css/images/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../docs/css/images/glyphicons-halflings.png | Bin 0 -> 12799 bytes .../ui-bg_diagonals-thick_90_eeeeee_40x40.png | Bin 0 -> 312 bytes .../images/ui-bg_flat_15_cd0a0a_40x100.png | Bin 0 -> 206 bytes .../images/ui-bg_glass_100_e4f1fb_1x400.png | Bin 0 -> 350 bytes .../images/ui-bg_glass_50_3baae3_1x400.png | Bin 0 -> 336 bytes .../images/ui-bg_glass_80_d7ebf9_1x400.png | Bin 0 -> 346 bytes .../ui-bg_highlight-hard_100_f2f5f7_1x100.png | Bin 0 -> 332 bytes .../ui-bg_highlight-hard_70_000000_1x100.png | Bin 0 -> 249 bytes .../ui-bg_highlight-soft_100_deedf7_1x100.png | Bin 0 -> 387 bytes .../ui-bg_highlight-soft_25_ffef8f_1x100.png | Bin 0 -> 309 bytes .../css/images/ui-icons_2694e8_256x240.png | Bin 0 -> 4549 bytes .../css/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4549 bytes .../css/images/ui-icons_3d80b3_256x240.png | Bin 0 -> 4549 bytes .../css/images/ui-icons_72a7cf_256x240.png | Bin 0 -> 4549 bytes .../css/images/ui-icons_ffffff_256x240.png | Bin 0 -> 6299 bytes .../jquery-tablesorter/docs/css/jq.css | 106 + .../docs/css/jquery-ui.min.css | 7 + .../docs/css/magnific-popup.css | 405 + .../jquery-tablesorter/docs/css/menu.css | 72 + .../jquery-tablesorter/docs/css/prettify.css | 55 + .../docs/css/rangeslider.css | 87 + .../docs/css/select2-3.4.6.min.css | 1 + .../docs/css/select2-spinner.gif | Bin 0 -> 1849 bytes .../jquery-tablesorter/docs/css/select2.png | Bin 0 -> 613 bytes .../jquery-tablesorter/docs/css/select2x2.png | Bin 0 -> 845 bytes .../jquery-tablesorter/docs/css/tipsy.css | 16 + .../docs/example-add-rows.html | 144 + .../jquery-tablesorter/docs/example-ajax.html | 138 + .../docs/example-apply-widget.html | 131 + .../docs/example-child-rows-filtered.html | 634 ++ .../docs/example-child-rows.html | 448 + .../docs/example-css-highlighting.html | 361 + .../docs/example-dragtable.html | 245 + .../docs/example-empty-table.html | 97 + .../docs/example-extending-defaults.html | 117 + .../docs/example-extractors-parsers.html | 125 + .../docs/example-header-column-span.html | 100 + .../docs/example-locale-sort.html | 170 + .../docs/example-meta-headers.html | 129 + .../docs/example-meta-parsers.html | 121 + .../docs/example-meta-sort-list.html | 123 + .../docs/example-method-sortreset.html | 156 + .../docs/example-multiple-tbodies.html | 109 + .../docs/example-option-custom-sort.html | 150 + .../docs/example-option-date-format.html | 176 + .../docs/example-option-debug.html | 119 + .../docs/example-option-delay-init.html | 3365 ++++++++ .../docs/example-option-digits.html | 153 + .../docs/example-option-render-header.html | 161 + .../docs/example-option-render-template.html | 149 + .../docs/example-option-selectorsort.html | 151 + .../docs/example-option-show-processing.html | 1138 +++ .../docs/example-option-sort-append.html | 132 + .../docs/example-option-sort-empty.html | 198 + .../docs/example-option-sort-force.html | 128 + .../docs/example-option-sort-key.html | 119 + .../docs/example-option-sort-list.html | 176 + .../docs/example-option-sort-order.html | 113 + .../example-option-sortreset-sortrestart.html | 137 + .../docs/example-option-text-extraction.html | 142 + .../example-option-textsorter-semver.html | 125 + .../example-option-theme-metro-style.html | 194 + ...xample-options-headers-digits-strings.html | 225 + .../docs/example-options-headers-locked.html | 132 + .../docs/example-options-headers-order.html | 135 + .../docs/example-options-headers-parser.html | 109 + .../docs/example-options-headers.html | 140 + .../docs/example-pager-ajax.html | 480 ++ .../docs/example-pager-filtered.html | 479 ++ .../docs/example-pager.html | 470 + .../docs/example-parsers-advanced.html | 154 + .../docs/example-parsers-class-name.html | 131 + .../docs/example-parsers-date-range.html | 157 + .../docs/example-parsers-dates.html | 227 + .../docs/example-parsers-duration.html | 164 + .../example-parsers-feet-inch-fraction.html | 128 + .../docs/example-parsers-file-type.html | 189 + .../docs/example-parsers-globalize.html | 306 + .../docs/example-parsers-ignore-articles.html | 434 + .../docs/example-parsers-ip-address.html | 137 + .../docs/example-parsers-jquery-data.html | 125 + .../docs/example-parsers-metric.html | 135 + .../docs/example-parsers-named-numbers.html | 157 + .../docs/example-parsers-roman.html | 239 + .../docs/example-parsers.html | 171 + .../docs/example-trigger-sort.html | 230 + .../docs/example-triggers.html | 1111 +++ .../docs/example-update-all.html | 114 + .../docs/example-update-cell.html | 138 + .../docs/example-widget-align-character.html | 455 + .../example-widget-bootstrap-theme-v2.html | 295 + .../docs/example-widget-bootstrap-theme.html | 329 + .../docs/example-widget-build-table.html | 873 ++ .../docs/example-widget-chart.html | 704 ++ .../docs/example-widget-column-selector.html | 695 ++ .../docs/example-widget-columns.html | 227 + .../example-widget-css-sticky-header.html | 537 ++ .../docs/example-widget-editable.html | 600 ++ .../docs/example-widget-filter-any-match.html | 207 + .../docs/example-widget-filter-childrows.html | 219 + .../example-widget-filter-custom-search.html | 298 + .../example-widget-filter-custom-search2.html | 157 + .../docs/example-widget-filter-custom.html | 486 ++ ...example-widget-filter-external-inputs.html | 180 + .../example-widget-filter-formatter-1.html | 638 ++ .../example-widget-filter-formatter-2.html | 352 + ...ample-widget-filter-formatter-select2.html | 231 + .../example-widget-filter-selectmenu.html | 166 + .../docs/example-widget-filter.html | 873 ++ .../docs/example-widget-formatter.html | 241 + ...mple-widget-grouping-filter-childrows.html | 194 + .../docs/example-widget-grouping.html | 945 +++ .../docs/example-widget-header-titles.html | 321 + .../docs/example-widget-lazyload.html | 359 + .../docs/example-widget-math.html | 684 ++ .../docs/example-widget-output.html | 1078 +++ .../docs/example-widget-pager-ajax.html | 386 + .../docs/example-widget-pager.html | 478 ++ .../docs/example-widget-print.html | 366 + .../docs/example-widget-reflow.html | 719 ++ .../docs/example-widget-reflow1.html | 104 + .../docs/example-widget-reflow2.html | 250 + .../docs/example-widget-reflow3.html | 125 + .../docs/example-widget-resizable.html | 362 + .../docs/example-widget-savesort.html | 196 + .../docs/example-widget-scroller.html | 705 ++ .../docs/example-widget-sort-tbodies.html | 375 + .../docs/example-widget-sort-to-hash.html | 580 ++ .../docs/example-widget-static-row.html | 283 + .../docs/example-widget-sticky-header.html | 719 ++ .../example-widget-toggle-tablesorter.html | 220 + .../docs/example-widget-ui-theme.html | 236 + .../docs/example-widget-view.html | 794 ++ .../docs/example-widget-zebra.html | 146 + .../docs/example-widgets.html | 252 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../jquery-tablesorter/docs/img/external.png | Bin 0 -> 165 bytes .../docs/img/grid-default-thumb.png | Bin 0 -> 959 bytes .../jquery-tablesorter/docs/img/link.png | Bin 0 -> 704 bytes .../docs/img/new-product-banner.png | Bin 0 -> 1102 bytes .../docs/img/sale-banner.png | Bin 0 -> 674 bytes .../docs/img/screens-blue.png | Bin 0 -> 474 bytes .../jquery-tablesorter/docs/img/screens.png | Bin 0 -> 495 bytes .../jquery-tablesorter/docs/index.html | 7535 +++++++++++++++++ .../docs/js/bootstrap.min.js | 7 + .../docs/js/chili/jquery.chili-2.2.js | 704 ++ .../docs/js/chili/recipes.js | 229 + .../docs/js/demo-build-table.js | 175 + .../jquery-tablesorter/docs/js/docs.js | 268 + .../docs/js/jquery-1.2.6.min.js | 32 + .../docs/js/jquery-1.4.4.min.js | 167 + .../docs/js/jquery-latest.min.js | 5 + .../docs/js/jquery-ui.min.js | 13 + .../docs/js/jquery.jui_theme_switch.min.js | 11 + .../docs/js/jquery.magnific-popup.min.js | 4 + .../docs/js/jquery.tipsy.min.js | 7 + .../jquery-tablesorter/docs/js/prettify.js | 28 + .../docs/js/rangeslider.min.js | 2 + .../jquery-tablesorter/docs/js/search-ie.js | 28 + .../jquery-tablesorter/docs/js/search.js | 165 + .../docs/js/select2-3.4.6.min.js | 22 + .../jquery-tablesorter/docs/js/sugar.min.js | 132 + .../jquery-tablesorter/docs/themes.html | 253 + .../jquery-tablesorter/example.json | 6 + .../FHC-vendor/jquery-tablesorter/index.html | 62 + .../js/extras/jquery.dragtable.mod.js | 602 ++ .../js/extras/jquery.metadata.js | 117 + .../js/extras/semver-mod.js | 1217 +++ .../jquery-tablesorter/js/extras/semver.js | 1202 +++ .../js/jquery.tablesorter.combined.js | 5512 ++++++++++++ .../js/jquery.tablesorter.js | 2632 ++++++ .../js/jquery.tablesorter.widgets.js | 2879 +++++++ .../js/parsers/parser-date-extract.js | 98 + .../js/parsers/parser-date-iso8601.js | 35 + .../js/parsers/parser-date-month.js | 62 + .../js/parsers/parser-date-range.js | 174 + .../js/parsers/parser-date-two-digit-year.js | 79 + .../js/parsers/parser-date-weekday.js | 94 + .../js/parsers/parser-date.js | 35 + .../js/parsers/parser-duration.js | 67 + .../js/parsers/parser-feet-inch-fraction.js | 63 + .../js/parsers/parser-file-type.js | 95 + .../js/parsers/parser-globalize.js | 69 + .../js/parsers/parser-ignore-articles.js | 61 + .../js/parsers/parser-image.js | 20 + .../js/parsers/parser-input-select.js | 253 + .../js/parsers/parser-metric.js | 92 + .../js/parsers/parser-named-numbers.js | 122 + .../js/parsers/parser-network.js | 138 + .../js/parsers/parser-roman.js | 117 + .../js/widgets/widget-alignChar.js | 147 + .../js/widgets/widget-build-table.js | 454 + .../js/widgets/widget-chart.js | 275 + .../js/widgets/widget-columnSelector.js | 485 ++ .../js/widgets/widget-columns.js | 78 + .../js/widgets/widget-cssStickyHeaders.js | 154 + .../js/widgets/widget-editable.js | 298 + .../widgets/widget-filter-formatter-html5.js | 428 + .../js/widgets/widget-filter-formatter-jui.js | 764 ++ .../widget-filter-formatter-select2.js | 149 + .../widgets/widget-filter-type-insideRange.js | 41 + .../js/widgets/widget-filter.js | 1748 ++++ .../js/widgets/widget-formatter.js | 72 + .../js/widgets/widget-grouping.js | 340 + .../js/widgets/widget-headerTitles.js | 92 + .../js/widgets/widget-lazyload.js | 367 + .../js/widgets/widget-math.js | 562 ++ .../js/widgets/widget-output.js | 377 + .../js/widgets/widget-pager.js | 1300 +++ .../js/widgets/widget-print.js | 146 + .../js/widgets/widget-reflow.js | 179 + .../js/widgets/widget-repeatheaders.js | 52 + .../js/widgets/widget-resizable.js | 392 + .../js/widgets/widget-saveSort.js | 71 + .../js/widgets/widget-scroller.js | 921 ++ .../js/widgets/widget-sort2Hash.js | 248 + .../js/widgets/widget-sortTbodies.js | 228 + .../js/widgets/widget-staticRow.js | 121 + .../js/widgets/widget-stickyHeaders.js | 288 + .../js/widgets/widget-storage.js | 90 + .../js/widgets/widget-toggle.js | 81 + .../js/widgets/widget-uitheme.js | 185 + .../js/widgets/widget-view.js | 192 + .../jquery-tablesorter/package.json | 72 + .../tablesorter.jquery.json | 47 + .../FHC-vendor/jquery-tablesorter/test.html | 134 + .../testing/qunit-1.20.0.css | 301 + .../testing/qunit-1.20.0.js | 4158 +++++++++ .../testing/testing-ipv6.js | 594 ++ .../testing/testing-widgets.js | 300 + .../jquery-tablesorter/testing/testing.css | 5 + .../jquery-tablesorter/testing/testing.js | 893 ++ 1121 files changed, 101880 insertions(+), 8 deletions(-) create mode 100644 include/meta/jquery-tablesorter.php create mode 100644 include/meta/jquery.php create mode 100644 include/vendor_custom/jquery-tablesorter/tablesort.css rename vendor/{ => FHC-vendor}/easyui/changelog.txt (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/accordion/_content.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/accordion/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/accordion/header.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/animation/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/animation/fade.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/animation/pop.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/animation/slide.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/badge/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/badge/button.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/badge/list.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/badge/tabs.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/button/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/button/group.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/button/style.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/button/switch.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/datagrid/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/datagrid/rowediting.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/datalist/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/datalist/group.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/datalist/selection.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/dialog/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/dialog/message.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/form/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/images/login1.jpg (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/images/modem.png (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/images/more.png (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/images/pda.png (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/images/scanner.png (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/images/tablet.png (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/input/numberspinner.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/input/textbox.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/layout/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/menu/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/menu/menubar.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/panel/_content.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/panel/ajax.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/panel/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/panel/nav.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/simplelist/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/simplelist/button.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/simplelist/group.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/simplelist/image.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/simplelist/link.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/tabs/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/tabs/nav.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/tabs/pill.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/toolbar/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/toolbar/button.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/toolbar/menu.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/tree/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo-mobile/tree/dnd.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/accordion/_content.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/accordion/actions.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/accordion/ajax.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/accordion/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/accordion/datagrid_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/accordion/expandable.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/accordion/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/accordion/multiple.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/accordion/tools.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/calendar/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/calendar/custom.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/calendar/disabledate.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/calendar/firstday.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/calendar/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combo/animation.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combo/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/actions.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/combobox_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/combobox_data2.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/customformat.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/dynamicdata.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/group.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/icons.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/multiline.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/multiple.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/navigation.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/remotedata.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combobox/remotejsonp.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combogrid/actions.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combogrid/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combogrid/datagrid_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combogrid/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combogrid/initvalue.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combogrid/multiple.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combogrid/navigation.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combogrid/setvalue.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combotree/actions.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combotree/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combotree/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combotree/initvalue.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combotree/multiple.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/combotree/tree_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/aligncolumns.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/cacheeditor.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/cellediting.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/cellstyle.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/checkbox.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/clientpagination.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/columngroup.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/complextoolbar.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/contextmenu.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/custompager.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/datagrid_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/datagrid_data2.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/footer.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/formatcolumns.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/frozencolumns.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/frozenrows.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/mergecells.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/multisorting.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/products.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/rowborder.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/rowediting.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/rowstyle.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/selection.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/simpletoolbar.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datagrid/transform.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datalist/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datalist/checkbox.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datalist/datalist_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datalist/group.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datalist/multiselect.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datalist/remotedata.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datebox/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datebox/buttons.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datebox/clone.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datebox/dateformat.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datebox/events.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datebox/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datebox/restrict.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datebox/sharedcalendar.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datebox/validate.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datetimebox/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datetimebox/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datetimebox/initvalue.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datetimebox/showseconds.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datetimespinner/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datetimespinner/clearicon.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datetimespinner/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/datetimespinner/format.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/demo.css (100%) rename vendor/{ => FHC-vendor}/easyui/demo/dialog/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/dialog/complextoolbar.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/dialog/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/dialog/toolbarbuttons.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/draggable/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/draggable/constrain.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/draggable/snap.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/droppable/accept.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/droppable/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/droppable/sort.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/easyloader/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/filebox/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/filebox/buttonalign.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/filebox/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/form/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/form/form_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/form/load.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/form/validateonsubmit.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/_content.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/addremove.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/autoheight.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/collapsetitle.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/complex.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/customcollapsetitle.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/datagrid_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/full.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/nestedlayout.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/nocollapsible.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/propertygrid_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/layout/tree_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/linkbutton/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/linkbutton/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/linkbutton/group.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/linkbutton/iconalign.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/linkbutton/plain.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/linkbutton/size.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/linkbutton/style.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/linkbutton/toggle.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/menu/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/menu/customitem.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/menu/events.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/menu/inline.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/menu/nav.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/menubutton/actions.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/menubutton/alignment.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/menubutton/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/menubutton/nav.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/messager/alert.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/messager/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/messager/interactive.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/messager/position.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/numberbox/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/numberbox/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/numberbox/format.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/numberbox/range.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/numberspinner/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/numberspinner/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/numberspinner/increment.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/numberspinner/range.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/pagination/attaching.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/pagination/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/pagination/custombuttons.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/pagination/layout.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/pagination/links.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/pagination/simple.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/panel/_content.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/panel/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/panel/customtools.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/panel/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/panel/footer.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/panel/loadcontent.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/panel/nestedpanel.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/panel/paneltools.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/progressbar/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/progressbar/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/propertygrid/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/propertygrid/customcolumns.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/propertygrid/groupformat.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/propertygrid/propertygrid_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/resizable/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/searchbox/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/searchbox/category.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/searchbox/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/slider/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/slider/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/slider/formattip.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/slider/nonlinear.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/slider/range.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/slider/rule.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/slider/vertical.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/splitbutton/actions.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/splitbutton/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/switchbutton/action.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/switchbutton/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/_content.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/autoheight.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/dropdown.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/fixedwidth.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/hover.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/images/modem.png (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/images/pda.png (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/images/scanner.png (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/images/tablet.png (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/nestedtabs.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/striptools.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/style.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/tabimage.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/tabposition.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/tabstools.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tabs/tree_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/textbox/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/textbox/button.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/textbox/clearicon.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/textbox/custom.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/textbox/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/textbox/icons.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/textbox/multiline.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/textbox/size.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/timespinner/actions.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/timespinner/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/timespinner/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/timespinner/range.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tooltip/_content.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tooltip/_dialog.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tooltip/ajax.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tooltip/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tooltip/customcontent.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tooltip/customstyle.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tooltip/position.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tooltip/toolbar.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tooltip/tooltipdialog.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/actions.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/animation.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/checkbox.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/contextmenu.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/dnd.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/editable.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/formatting.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/icons.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/lazyload.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/lines.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/tree_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/tree/tree_data2.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/treegrid/actions.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/treegrid/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/treegrid/clientpagination.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/treegrid/contextmenu.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/treegrid/editable.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/treegrid/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/treegrid/footer.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/treegrid/lines.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/treegrid/reports.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/treegrid/treegrid_data1.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/treegrid/treegrid_data2.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/treegrid/treegrid_data3.json (100%) rename vendor/{ => FHC-vendor}/easyui/demo/validatebox/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/validatebox/customtooltip.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/validatebox/validateonblur.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/window/basic.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/window/customtools.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/window/fluid.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/window/footer.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/window/inlinewindow.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/window/modalwindow.html (100%) rename vendor/{ => FHC-vendor}/easyui/demo/window/windowlayout.html (100%) rename vendor/{ => FHC-vendor}/easyui/easyloader.js (100%) rename vendor/{ => FHC-vendor}/easyui/jquery.easyui.min.js (100%) rename vendor/{ => FHC-vendor}/easyui/jquery.easyui.mobile.js (100%) rename vendor/{ => FHC-vendor}/easyui/jquery.min.js (100%) rename vendor/{ => FHC-vendor}/easyui/license_freeware.txt (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-af.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-am.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-ar.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-bg.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-ca.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-cs.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-cz.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-da.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-de.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-el.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-en.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-es.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-fr.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-it.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-jp.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-nl.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-pl.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-pt_BR.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-ru.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-sv_SE.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-tr.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-zh_CN.js (100%) rename vendor/{ => FHC-vendor}/easyui/locale/easyui-lang-zh_TW.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.accordion.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.calendar.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.combo.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.combobox.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.combogrid.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.combotree.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.datagrid.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.datalist.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.datebox.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.datetimebox.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.datetimespinner.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.dialog.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.draggable.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.droppable.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.filebox.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.form.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.layout.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.linkbutton.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.menu.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.menubutton.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.messager.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.mobile.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.numberbox.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.numberspinner.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.pagination.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.panel.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.parser.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.progressbar.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.propertygrid.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.resizable.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.searchbox.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.slider.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.spinner.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.splitbutton.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.switchbutton.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.tabs.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.textbox.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.timespinner.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.tooltip.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.tree.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.treegrid.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.validatebox.js (100%) rename vendor/{ => FHC-vendor}/easyui/plugins/jquery.window.js (100%) rename vendor/{ => FHC-vendor}/easyui/readme.txt (100%) rename vendor/{ => FHC-vendor}/easyui/src/easyloader.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.accordion.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.calendar.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.combobox.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.datebox.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.draggable.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.droppable.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.form.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.linkbutton.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.menu.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.parser.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.progressbar.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.propertygrid.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.resizable.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.slider.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.tabs.js (100%) rename vendor/{ => FHC-vendor}/easyui/src/jquery.window.js (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/accordion.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/calendar.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/combo.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/combobox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/datagrid.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/datalist.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/datebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/dialog.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/easyui.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/filebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/accordion_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/blank.gif (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/calendar_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/combo_arrow.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/datagrid_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/datebox_arrow.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/layout_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/linkbutton_bg.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/loading.gif (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/menu_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/messager_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/pagination_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/panel_tools.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/searchbox_button.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/slider_handle.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/spinner_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/tabs_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/tree_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/images/validatebox_warning.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/layout.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/linkbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/menu.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/menubutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/messager.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/numberbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/pagination.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/panel.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/progressbar.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/propertygrid.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/searchbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/slider.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/spinner.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/splitbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/switchbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/tabs.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/textbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/tooltip.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/tree.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/validatebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/black/window.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/accordion.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/calendar.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/combo.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/combobox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/datagrid.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/datalist.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/datebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/dialog.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/easyui.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/filebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/accordion_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/blank.gif (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/calendar_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/combo_arrow.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/datagrid_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/datebox_arrow.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/layout_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/linkbutton_bg.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/loading.gif (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/menu_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/messager_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/pagination_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/panel_tools.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/searchbox_button.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/slider_handle.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/spinner_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/tabs_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/tree_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/images/validatebox_warning.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/layout.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/linkbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/menu.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/menubutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/messager.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/numberbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/pagination.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/panel.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/progressbar.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/propertygrid.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/searchbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/slider.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/spinner.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/splitbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/switchbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/tabs.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/textbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/tooltip.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/tree.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/validatebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/bootstrap/window.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/color.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/accordion.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/calendar.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/combo.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/combobox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/datagrid.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/datalist.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/datebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/dialog.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/easyui.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/filebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/accordion_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/blank.gif (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/calendar_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/combo_arrow.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/datagrid_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/datebox_arrow.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/layout_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/linkbutton_bg.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/loading.gif (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/menu_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/messager_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/pagination_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/panel_tools.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/searchbox_button.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/slider_handle.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/spinner_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/tabs_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/tree_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/images/validatebox_warning.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/layout.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/linkbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/menu.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/menubutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/messager.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/numberbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/pagination.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/panel.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/progressbar.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/propertygrid.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/searchbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/slider.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/spinner.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/splitbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/switchbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/tabs.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/textbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/tooltip.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/tree.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/validatebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/default/window.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/accordion.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/calendar.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/combo.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/combobox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/datagrid.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/datalist.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/datebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/dialog.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/easyui.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/filebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/accordion_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/blank.gif (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/calendar_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/combo_arrow.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/datagrid_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/datebox_arrow.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/layout_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/linkbutton_bg.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/loading.gif (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/menu_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/messager_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/pagination_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/panel_tools.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/searchbox_button.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/slider_handle.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/spinner_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/tabs_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/tree_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/images/validatebox_warning.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/layout.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/linkbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/menu.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/menubutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/messager.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/numberbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/pagination.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/panel.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/progressbar.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/propertygrid.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/searchbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/slider.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/spinner.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/splitbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/switchbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/tabs.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/textbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/tooltip.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/tree.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/validatebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/gray/window.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icon.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/back.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/blank.gif (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/cancel.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/clear.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/cut.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/edit_add.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/edit_remove.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/filesave.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/filter.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/help.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/large_chart.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/large_clipart.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/large_picture.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/large_shapes.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/large_smartart.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/lock.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/man.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/mini_add.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/mini_edit.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/mini_refresh.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/more.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/no.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/ok.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/pencil.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/print.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/redo.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/reload.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/search.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/sum.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/tip.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/icons/undo.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/accordion.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/calendar.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/combo.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/combobox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/datagrid.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/datalist.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/datebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/dialog.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/easyui.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/filebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/accordion_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/blank.gif (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/calendar_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/combo_arrow.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/datagrid_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/datebox_arrow.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/layout_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/linkbutton_bg.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/loading.gif (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/menu_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/messager_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/pagination_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/panel_tools.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/searchbox_button.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/slider_handle.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/spinner_arrows.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/tabs_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/tree_icons.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/images/validatebox_warning.png (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/layout.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/linkbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/menu.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/menubutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/messager.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/numberbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/pagination.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/panel.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/progressbar.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/propertygrid.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/searchbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/slider.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/spinner.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/splitbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/switchbutton.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/tabs.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/textbox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/tooltip.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/tree.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/validatebox.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/metro/window.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/mobile.css (100%) rename vendor/{ => FHC-vendor}/easyui/themes/vilesci (100%) create mode 100644 vendor/FHC-vendor/jquery-tablesorter/.gitattributes create mode 100644 vendor/FHC-vendor/jquery-tablesorter/.gitignore create mode 100644 vendor/FHC-vendor/jquery-tablesorter/.jscsrc create mode 100644 vendor/FHC-vendor/jquery-tablesorter/CONTRIBUTING.md create mode 100644 vendor/FHC-vendor/jquery-tablesorter/Gruntfile.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/README.md create mode 100644 vendor/FHC-vendor/jquery-tablesorter/addons/pager/icons/first.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/addons/pager/icons/last.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/addons/pager/icons/loading.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/addons/pager/icons/next.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/addons/pager/icons/prev.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/beta-testing/example-pager-custom-controls.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/beta-testing/example-widget-column-reorder.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/beta-testing/pager-custom-controls.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/beta-testing/widget-reorder.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/bower.json create mode 100644 vendor/FHC-vendor/jquery-tablesorter/changelog.txt create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/bootstrap.less create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/dragtable.mod.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/filter.formatter.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/black-asc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/black-desc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/black-unsorted.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/bootstrap-black-unsorted.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/bootstrap-white-unsorted.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/dragtable-handle.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/dragtable-handle.svg create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/dropbox-asc-hovered.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/dropbox-asc.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/dropbox-desc-hovered.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/dropbox-desc.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/green-asc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/green-desc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/green-header.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/green-unsorted.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/ice-asc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/ice-desc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/ice-unsorted.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/metro-black-asc.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/metro-black-desc.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/metro-loading.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/metro-unsorted.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/metro-white-asc.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/metro-white-desc.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/white-asc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/white-desc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/images/white-unsorted.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/metro.less create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/psd/green-asc.psd create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/psd/green-desc.psd create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/psd/green-unsorted.psd create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/psd/metro-style.psd create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.black-ice.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.blue.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.bootstrap.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.bootstrap_2.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.dark.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.default.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.dropbox.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.green.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.grey.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.ice.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.jui.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.less create mode 100644 vendor/FHC-vendor/jquery-tablesorter/css/theme.metro-dark.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/dragtable.mod.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/filter.formatter.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/black-asc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/black-desc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/black-unsorted.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/bootstrap-black-unsorted.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/bootstrap-white-unsorted.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dragtable-handle.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dragtable-handle.svg create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dropbox-asc-hovered.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dropbox-asc.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dropbox-desc-hovered.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dropbox-desc.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/first.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/green-asc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/green-desc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/green-header.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/green-unsorted.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/ice-asc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/ice-desc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/ice-unsorted.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/last.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/loading.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/metro-black-asc.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/metro-black-desc.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/metro-loading.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/metro-unsorted.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/metro-white-asc.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/metro-white-desc.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/next.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/prev.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/white-asc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/white-desc.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/images/white-unsorted.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/jquery.tablesorter.pager.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/less/bootstrap.less create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/less/metro.less create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/less/theme.less create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.blackice.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.blue.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.bootstrap.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.bootstrap_2.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.dark.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.default.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.dropbox.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.green.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.grey.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.ice.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.jui.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.metro-dark.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/jquery.dragtable.mod.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/jquery.metadata.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/jquery.tablesorter.pager.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/semver-mod.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/jquery.tablesorter.combined.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/jquery.tablesorter.combined.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/jquery.tablesorter.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/jquery.tablesorter.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/jquery.tablesorter.widgets.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/jquery.tablesorter.widgets.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-date-extract.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-date-iso8601.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-date-month.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-date-range.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-date-two-digit-year.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-date-weekday.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-date.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-duration.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-feet-inch-fraction.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-file-type.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-globalize.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-ignore-articles.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-image.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-input-select.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-metric.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-named-numbers.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-network.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/parsers/parser-roman.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-alignChar.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-build-table.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-chart.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-columnSelector.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-columns.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-cssStickyHeaders.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-editable.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-filter-formatter-html5.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-filter-formatter-jui.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-filter-formatter-select2.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-filter-type-insideRange.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-filter.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-formatter.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-grouping.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-headerTitles.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-lazyload.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-math.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-output.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-pager.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-print.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-reflow.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-repeatheaders.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-resizable.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-saveSort.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-scroller.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-sort2Hash.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-sortTbodies.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-staticRow.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-stickyHeaders.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-storage.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-toggle.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-uitheme.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/dist/js/widgets/widget-view.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/assets/City0.json create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/assets/City1.json create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/assets/City2.json create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/assets/City3.json create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/assets/ajax-content.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/assets/build.json create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/assets/build.txt create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/assets/theme_switcher.json create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/bootstrap-v2.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/bootstrap.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/glyphicons-halflings-white.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/glyphicons-halflings.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-bg_flat_15_cd0a0a_40x100.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-bg_glass_100_e4f1fb_1x400.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-bg_glass_50_3baae3_1x400.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-bg_glass_80_d7ebf9_1x400.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-bg_highlight-hard_70_000000_1x100.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-bg_highlight-soft_100_deedf7_1x100.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-bg_highlight-soft_25_ffef8f_1x100.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-icons_2694e8_256x240.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-icons_2e83ff_256x240.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-icons_3d80b3_256x240.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-icons_72a7cf_256x240.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/images/ui-icons_ffffff_256x240.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/jq.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/jquery-ui.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/magnific-popup.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/menu.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/prettify.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/rangeslider.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/select2-3.4.6.min.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/select2-spinner.gif create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/select2.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/select2x2.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/css/tipsy.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-add-rows.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-ajax.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-apply-widget.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-child-rows-filtered.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-child-rows.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-css-highlighting.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-dragtable.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-empty-table.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-extending-defaults.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-extractors-parsers.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-header-column-span.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-locale-sort.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-meta-headers.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-meta-parsers.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-meta-sort-list.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-method-sortreset.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-multiple-tbodies.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-custom-sort.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-date-format.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-debug.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-delay-init.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-digits.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-render-header.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-render-template.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-selectorsort.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-show-processing.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-sort-append.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-sort-empty.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-sort-force.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-sort-key.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-sort-list.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-sort-order.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-sortreset-sortrestart.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-text-extraction.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-textsorter-semver.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-option-theme-metro-style.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-options-headers-digits-strings.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-options-headers-locked.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-options-headers-order.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-options-headers-parser.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-options-headers.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-pager-ajax.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-pager-filtered.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-pager.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-advanced.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-class-name.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-date-range.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-dates.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-duration.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-feet-inch-fraction.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-file-type.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-globalize.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-ignore-articles.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-ip-address.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-jquery-data.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-metric.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-named-numbers.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers-roman.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-parsers.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-trigger-sort.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-triggers.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-update-all.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-update-cell.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-align-character.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-bootstrap-theme-v2.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-bootstrap-theme.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-build-table.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-chart.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-column-selector.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-columns.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-css-sticky-header.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-editable.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-filter-any-match.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-filter-childrows.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-filter-custom-search.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-filter-custom-search2.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-filter-custom.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-filter-external-inputs.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-filter-formatter-1.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-filter-formatter-2.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-filter-formatter-select2.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-filter-selectmenu.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-filter.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-formatter.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-grouping-filter-childrows.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-grouping.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-header-titles.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-lazyload.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-math.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-output.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-pager-ajax.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-pager.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-print.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-reflow.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-reflow1.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-reflow2.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-reflow3.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-resizable.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-savesort.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-scroller.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-sort-tbodies.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-sort-to-hash.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-static-row.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-sticky-header.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-toggle-tablesorter.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-ui-theme.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-view.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widget-zebra.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/example-widgets.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/fonts/glyphicons-halflings-regular.eot create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/fonts/glyphicons-halflings-regular.svg create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/fonts/glyphicons-halflings-regular.ttf create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/fonts/glyphicons-halflings-regular.woff create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/fonts/glyphicons-halflings-regular.woff2 create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/img/external.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/img/grid-default-thumb.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/img/link.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/img/new-product-banner.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/img/sale-banner.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/img/screens-blue.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/img/screens.png create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/index.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/bootstrap.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/chili/jquery.chili-2.2.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/chili/recipes.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/demo-build-table.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/docs.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/jquery-1.2.6.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/jquery-1.4.4.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/jquery-latest.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/jquery-ui.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/jquery.jui_theme_switch.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/jquery.magnific-popup.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/jquery.tipsy.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/prettify.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/rangeslider.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/search-ie.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/search.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/select2-3.4.6.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/js/sugar.min.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/docs/themes.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/example.json create mode 100644 vendor/FHC-vendor/jquery-tablesorter/index.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/extras/jquery.dragtable.mod.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/extras/jquery.metadata.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/extras/semver-mod.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/extras/semver.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/jquery.tablesorter.combined.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/jquery.tablesorter.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/jquery.tablesorter.widgets.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-date-extract.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-date-iso8601.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-date-month.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-date-range.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-date-two-digit-year.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-date-weekday.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-date.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-duration.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-feet-inch-fraction.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-file-type.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-globalize.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-ignore-articles.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-image.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-input-select.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-metric.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-named-numbers.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-network.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/parsers/parser-roman.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-alignChar.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-build-table.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-chart.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-columnSelector.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-columns.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-cssStickyHeaders.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-editable.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-filter-formatter-html5.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-filter-formatter-jui.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-filter-formatter-select2.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-filter-type-insideRange.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-filter.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-formatter.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-grouping.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-headerTitles.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-lazyload.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-math.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-output.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-pager.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-print.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-reflow.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-repeatheaders.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-resizable.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-saveSort.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-scroller.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-sort2Hash.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-sortTbodies.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-staticRow.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-stickyHeaders.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-storage.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-toggle.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-uitheme.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/js/widgets/widget-view.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/package.json create mode 100644 vendor/FHC-vendor/jquery-tablesorter/tablesorter.jquery.json create mode 100644 vendor/FHC-vendor/jquery-tablesorter/test.html create mode 100644 vendor/FHC-vendor/jquery-tablesorter/testing/qunit-1.20.0.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/testing/qunit-1.20.0.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/testing/testing-ipv6.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/testing/testing-widgets.js create mode 100644 vendor/FHC-vendor/jquery-tablesorter/testing/testing.css create mode 100644 vendor/FHC-vendor/jquery-tablesorter/testing/testing.js diff --git a/.gitignore b/.gitignore index a2fdf2444..599468937 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ .htaccess /nbproject/ /vendor/* -!/vendor/easyui +!/vendor/FHC-vendor /.idea/ documents/ .settings diff --git a/include/meta/easyui.php b/include/meta/easyui.php index 247a02c57..c0c85068b 100644 --- a/include/meta/easyui.php +++ b/include/meta/easyui.php @@ -19,17 +19,23 @@ */ //require_once('/config/vilesci.config.inc.php'); Muss vor dieser Datei eingebunden werden! +$ar = APP_ROOT; +if(isset($_SERVER["https"]) && $_SERVER["https"] != "") + $ar = preg_replace("/^http:/i", "https:", $ar); +else + $ar = preg_replace("/^https:/i", "http:", $ar); -//Originaldateien des herstellers -echo ''; -echo ''; +//Originaldateien des Herstellers +echo ''; +echo ''; -echo ''; -echo ''; +echo ''; +echo ''; //Anpassungen -echo ''; -echo ''; +echo ''; +echo ''; +?> diff --git a/include/meta/jquery-tablesorter.php b/include/meta/jquery-tablesorter.php new file mode 100644 index 000000000..83da1162a --- /dev/null +++ b/include/meta/jquery-tablesorter.php @@ -0,0 +1,38 @@ + + */ +//require_once('/config/vilesci.config.inc.php'); Muss vor dieser Datei eingebunden werden! + + +$ar = APP_ROOT; +if(isset($_SERVER["https"]) && $_SERVER["https"] != "") + $ar = preg_replace("/^http:/i", "https:", $ar); +else + $ar = preg_replace("/^https:/i", "http:", $ar); + +//Originaldateien des Herstellers +echo ''; + +echo ''; + + +//Anpassungen +echo ''; + +?> diff --git a/include/meta/jquery.php b/include/meta/jquery.php new file mode 100644 index 000000000..1f7ce2bea --- /dev/null +++ b/include/meta/jquery.php @@ -0,0 +1,33 @@ + + */ +//require_once('/config/vilesci.config.inc.php'); Muss vor dieser Datei eingebunden werden! + + +$ar = APP_ROOT; +if(isset($_SERVER["https"]) && $_SERVER["https"] != "") + $ar = preg_replace("/^http:/i", "https:", $ar); +else + $ar = preg_replace("/^https:/i", "http:", $ar); + +//Originaldateien des Herstellers +echo ''; + + +?> diff --git a/include/vendor_custom/jquery-tablesorter/tablesort.css b/include/vendor_custom/jquery-tablesorter/tablesort.css new file mode 100644 index 000000000..87c172876 --- /dev/null +++ b/include/vendor_custom/jquery-tablesorter/tablesort.css @@ -0,0 +1,44 @@ +/* tables */ +table.tablesorter { + font-family:arial; + /*background-color: white;*/ + margin:10px 0pt 15px; + font-size: 8pt; + width: 100%; + text-align: left; +} +table.tablesorter thead tr th, table.tablesorter tfoot tr th { + background:#DCE4EF; + border: 1px solid #FFF; + font-size: 8pt; + padding: 4px; +} +table.tablesorter thead tr .header { + background-image: url(../../../skin/images/bg_sort.gif); + background-repeat: no-repeat; + background-position: center left; + padding-left: 20px; + cursor: pointer; +} +table.tablesorter tbody td { + padding: 4px; + background-color: #EEEEEE; + vertical-align: top; +} +table.tablesorter tbody tr.odd td { + background-color:lightgray; +} +table.tablesorter thead tr .headerSortUp { + background-image: url(../../../skin/images/asc.gif); +} +table.tablesorter thead tr .headerSortDown { + background-image: url(../../../skin/images/desc.gif); +} +table.tablesorter thead tr .headerSortDown, table.tablesorter thead tr .headerSortUp { +background-color: #8dbdd8; +} + +TD,TH +{ + font-size: 9pt; +} diff --git a/vendor/easyui/changelog.txt b/vendor/FHC-vendor/easyui/changelog.txt similarity index 100% rename from vendor/easyui/changelog.txt rename to vendor/FHC-vendor/easyui/changelog.txt diff --git a/vendor/easyui/demo-mobile/accordion/_content.html b/vendor/FHC-vendor/easyui/demo-mobile/accordion/_content.html similarity index 100% rename from vendor/easyui/demo-mobile/accordion/_content.html rename to vendor/FHC-vendor/easyui/demo-mobile/accordion/_content.html diff --git a/vendor/easyui/demo-mobile/accordion/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/accordion/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/accordion/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/accordion/basic.html diff --git a/vendor/easyui/demo-mobile/accordion/header.html b/vendor/FHC-vendor/easyui/demo-mobile/accordion/header.html similarity index 100% rename from vendor/easyui/demo-mobile/accordion/header.html rename to vendor/FHC-vendor/easyui/demo-mobile/accordion/header.html diff --git a/vendor/easyui/demo-mobile/animation/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/animation/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/animation/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/animation/basic.html diff --git a/vendor/easyui/demo-mobile/animation/fade.html b/vendor/FHC-vendor/easyui/demo-mobile/animation/fade.html similarity index 100% rename from vendor/easyui/demo-mobile/animation/fade.html rename to vendor/FHC-vendor/easyui/demo-mobile/animation/fade.html diff --git a/vendor/easyui/demo-mobile/animation/pop.html b/vendor/FHC-vendor/easyui/demo-mobile/animation/pop.html similarity index 100% rename from vendor/easyui/demo-mobile/animation/pop.html rename to vendor/FHC-vendor/easyui/demo-mobile/animation/pop.html diff --git a/vendor/easyui/demo-mobile/animation/slide.html b/vendor/FHC-vendor/easyui/demo-mobile/animation/slide.html similarity index 100% rename from vendor/easyui/demo-mobile/animation/slide.html rename to vendor/FHC-vendor/easyui/demo-mobile/animation/slide.html diff --git a/vendor/easyui/demo-mobile/badge/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/badge/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/badge/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/badge/basic.html diff --git a/vendor/easyui/demo-mobile/badge/button.html b/vendor/FHC-vendor/easyui/demo-mobile/badge/button.html similarity index 100% rename from vendor/easyui/demo-mobile/badge/button.html rename to vendor/FHC-vendor/easyui/demo-mobile/badge/button.html diff --git a/vendor/easyui/demo-mobile/badge/list.html b/vendor/FHC-vendor/easyui/demo-mobile/badge/list.html similarity index 100% rename from vendor/easyui/demo-mobile/badge/list.html rename to vendor/FHC-vendor/easyui/demo-mobile/badge/list.html diff --git a/vendor/easyui/demo-mobile/badge/tabs.html b/vendor/FHC-vendor/easyui/demo-mobile/badge/tabs.html similarity index 100% rename from vendor/easyui/demo-mobile/badge/tabs.html rename to vendor/FHC-vendor/easyui/demo-mobile/badge/tabs.html diff --git a/vendor/easyui/demo-mobile/button/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/button/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/button/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/button/basic.html diff --git a/vendor/easyui/demo-mobile/button/group.html b/vendor/FHC-vendor/easyui/demo-mobile/button/group.html similarity index 100% rename from vendor/easyui/demo-mobile/button/group.html rename to vendor/FHC-vendor/easyui/demo-mobile/button/group.html diff --git a/vendor/easyui/demo-mobile/button/style.html b/vendor/FHC-vendor/easyui/demo-mobile/button/style.html similarity index 100% rename from vendor/easyui/demo-mobile/button/style.html rename to vendor/FHC-vendor/easyui/demo-mobile/button/style.html diff --git a/vendor/easyui/demo-mobile/button/switch.html b/vendor/FHC-vendor/easyui/demo-mobile/button/switch.html similarity index 100% rename from vendor/easyui/demo-mobile/button/switch.html rename to vendor/FHC-vendor/easyui/demo-mobile/button/switch.html diff --git a/vendor/easyui/demo-mobile/datagrid/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/datagrid/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/datagrid/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/datagrid/basic.html diff --git a/vendor/easyui/demo-mobile/datagrid/rowediting.html b/vendor/FHC-vendor/easyui/demo-mobile/datagrid/rowediting.html similarity index 100% rename from vendor/easyui/demo-mobile/datagrid/rowediting.html rename to vendor/FHC-vendor/easyui/demo-mobile/datagrid/rowediting.html diff --git a/vendor/easyui/demo-mobile/datalist/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/datalist/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/datalist/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/datalist/basic.html diff --git a/vendor/easyui/demo-mobile/datalist/group.html b/vendor/FHC-vendor/easyui/demo-mobile/datalist/group.html similarity index 100% rename from vendor/easyui/demo-mobile/datalist/group.html rename to vendor/FHC-vendor/easyui/demo-mobile/datalist/group.html diff --git a/vendor/easyui/demo-mobile/datalist/selection.html b/vendor/FHC-vendor/easyui/demo-mobile/datalist/selection.html similarity index 100% rename from vendor/easyui/demo-mobile/datalist/selection.html rename to vendor/FHC-vendor/easyui/demo-mobile/datalist/selection.html diff --git a/vendor/easyui/demo-mobile/dialog/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/dialog/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/dialog/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/dialog/basic.html diff --git a/vendor/easyui/demo-mobile/dialog/message.html b/vendor/FHC-vendor/easyui/demo-mobile/dialog/message.html similarity index 100% rename from vendor/easyui/demo-mobile/dialog/message.html rename to vendor/FHC-vendor/easyui/demo-mobile/dialog/message.html diff --git a/vendor/easyui/demo-mobile/form/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/form/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/form/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/form/basic.html diff --git a/vendor/easyui/demo-mobile/images/login1.jpg b/vendor/FHC-vendor/easyui/demo-mobile/images/login1.jpg similarity index 100% rename from vendor/easyui/demo-mobile/images/login1.jpg rename to vendor/FHC-vendor/easyui/demo-mobile/images/login1.jpg diff --git a/vendor/easyui/demo-mobile/images/modem.png b/vendor/FHC-vendor/easyui/demo-mobile/images/modem.png similarity index 100% rename from vendor/easyui/demo-mobile/images/modem.png rename to vendor/FHC-vendor/easyui/demo-mobile/images/modem.png diff --git a/vendor/easyui/demo-mobile/images/more.png b/vendor/FHC-vendor/easyui/demo-mobile/images/more.png similarity index 100% rename from vendor/easyui/demo-mobile/images/more.png rename to vendor/FHC-vendor/easyui/demo-mobile/images/more.png diff --git a/vendor/easyui/demo-mobile/images/pda.png b/vendor/FHC-vendor/easyui/demo-mobile/images/pda.png similarity index 100% rename from vendor/easyui/demo-mobile/images/pda.png rename to vendor/FHC-vendor/easyui/demo-mobile/images/pda.png diff --git a/vendor/easyui/demo-mobile/images/scanner.png b/vendor/FHC-vendor/easyui/demo-mobile/images/scanner.png similarity index 100% rename from vendor/easyui/demo-mobile/images/scanner.png rename to vendor/FHC-vendor/easyui/demo-mobile/images/scanner.png diff --git a/vendor/easyui/demo-mobile/images/tablet.png b/vendor/FHC-vendor/easyui/demo-mobile/images/tablet.png similarity index 100% rename from vendor/easyui/demo-mobile/images/tablet.png rename to vendor/FHC-vendor/easyui/demo-mobile/images/tablet.png diff --git a/vendor/easyui/demo-mobile/input/numberspinner.html b/vendor/FHC-vendor/easyui/demo-mobile/input/numberspinner.html similarity index 100% rename from vendor/easyui/demo-mobile/input/numberspinner.html rename to vendor/FHC-vendor/easyui/demo-mobile/input/numberspinner.html diff --git a/vendor/easyui/demo-mobile/input/textbox.html b/vendor/FHC-vendor/easyui/demo-mobile/input/textbox.html similarity index 100% rename from vendor/easyui/demo-mobile/input/textbox.html rename to vendor/FHC-vendor/easyui/demo-mobile/input/textbox.html diff --git a/vendor/easyui/demo-mobile/layout/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/layout/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/layout/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/layout/basic.html diff --git a/vendor/easyui/demo-mobile/menu/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/menu/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/menu/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/menu/basic.html diff --git a/vendor/easyui/demo-mobile/menu/menubar.html b/vendor/FHC-vendor/easyui/demo-mobile/menu/menubar.html similarity index 100% rename from vendor/easyui/demo-mobile/menu/menubar.html rename to vendor/FHC-vendor/easyui/demo-mobile/menu/menubar.html diff --git a/vendor/easyui/demo-mobile/panel/_content.html b/vendor/FHC-vendor/easyui/demo-mobile/panel/_content.html similarity index 100% rename from vendor/easyui/demo-mobile/panel/_content.html rename to vendor/FHC-vendor/easyui/demo-mobile/panel/_content.html diff --git a/vendor/easyui/demo-mobile/panel/ajax.html b/vendor/FHC-vendor/easyui/demo-mobile/panel/ajax.html similarity index 100% rename from vendor/easyui/demo-mobile/panel/ajax.html rename to vendor/FHC-vendor/easyui/demo-mobile/panel/ajax.html diff --git a/vendor/easyui/demo-mobile/panel/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/panel/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/panel/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/panel/basic.html diff --git a/vendor/easyui/demo-mobile/panel/nav.html b/vendor/FHC-vendor/easyui/demo-mobile/panel/nav.html similarity index 100% rename from vendor/easyui/demo-mobile/panel/nav.html rename to vendor/FHC-vendor/easyui/demo-mobile/panel/nav.html diff --git a/vendor/easyui/demo-mobile/simplelist/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/simplelist/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/simplelist/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/simplelist/basic.html diff --git a/vendor/easyui/demo-mobile/simplelist/button.html b/vendor/FHC-vendor/easyui/demo-mobile/simplelist/button.html similarity index 100% rename from vendor/easyui/demo-mobile/simplelist/button.html rename to vendor/FHC-vendor/easyui/demo-mobile/simplelist/button.html diff --git a/vendor/easyui/demo-mobile/simplelist/group.html b/vendor/FHC-vendor/easyui/demo-mobile/simplelist/group.html similarity index 100% rename from vendor/easyui/demo-mobile/simplelist/group.html rename to vendor/FHC-vendor/easyui/demo-mobile/simplelist/group.html diff --git a/vendor/easyui/demo-mobile/simplelist/image.html b/vendor/FHC-vendor/easyui/demo-mobile/simplelist/image.html similarity index 100% rename from vendor/easyui/demo-mobile/simplelist/image.html rename to vendor/FHC-vendor/easyui/demo-mobile/simplelist/image.html diff --git a/vendor/easyui/demo-mobile/simplelist/link.html b/vendor/FHC-vendor/easyui/demo-mobile/simplelist/link.html similarity index 100% rename from vendor/easyui/demo-mobile/simplelist/link.html rename to vendor/FHC-vendor/easyui/demo-mobile/simplelist/link.html diff --git a/vendor/easyui/demo-mobile/tabs/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/tabs/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/tabs/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/tabs/basic.html diff --git a/vendor/easyui/demo-mobile/tabs/nav.html b/vendor/FHC-vendor/easyui/demo-mobile/tabs/nav.html similarity index 100% rename from vendor/easyui/demo-mobile/tabs/nav.html rename to vendor/FHC-vendor/easyui/demo-mobile/tabs/nav.html diff --git a/vendor/easyui/demo-mobile/tabs/pill.html b/vendor/FHC-vendor/easyui/demo-mobile/tabs/pill.html similarity index 100% rename from vendor/easyui/demo-mobile/tabs/pill.html rename to vendor/FHC-vendor/easyui/demo-mobile/tabs/pill.html diff --git a/vendor/easyui/demo-mobile/toolbar/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/toolbar/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/toolbar/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/toolbar/basic.html diff --git a/vendor/easyui/demo-mobile/toolbar/button.html b/vendor/FHC-vendor/easyui/demo-mobile/toolbar/button.html similarity index 100% rename from vendor/easyui/demo-mobile/toolbar/button.html rename to vendor/FHC-vendor/easyui/demo-mobile/toolbar/button.html diff --git a/vendor/easyui/demo-mobile/toolbar/menu.html b/vendor/FHC-vendor/easyui/demo-mobile/toolbar/menu.html similarity index 100% rename from vendor/easyui/demo-mobile/toolbar/menu.html rename to vendor/FHC-vendor/easyui/demo-mobile/toolbar/menu.html diff --git a/vendor/easyui/demo-mobile/tree/basic.html b/vendor/FHC-vendor/easyui/demo-mobile/tree/basic.html similarity index 100% rename from vendor/easyui/demo-mobile/tree/basic.html rename to vendor/FHC-vendor/easyui/demo-mobile/tree/basic.html diff --git a/vendor/easyui/demo-mobile/tree/dnd.html b/vendor/FHC-vendor/easyui/demo-mobile/tree/dnd.html similarity index 100% rename from vendor/easyui/demo-mobile/tree/dnd.html rename to vendor/FHC-vendor/easyui/demo-mobile/tree/dnd.html diff --git a/vendor/easyui/demo/accordion/_content.html b/vendor/FHC-vendor/easyui/demo/accordion/_content.html similarity index 100% rename from vendor/easyui/demo/accordion/_content.html rename to vendor/FHC-vendor/easyui/demo/accordion/_content.html diff --git a/vendor/easyui/demo/accordion/actions.html b/vendor/FHC-vendor/easyui/demo/accordion/actions.html similarity index 100% rename from vendor/easyui/demo/accordion/actions.html rename to vendor/FHC-vendor/easyui/demo/accordion/actions.html diff --git a/vendor/easyui/demo/accordion/ajax.html b/vendor/FHC-vendor/easyui/demo/accordion/ajax.html similarity index 100% rename from vendor/easyui/demo/accordion/ajax.html rename to vendor/FHC-vendor/easyui/demo/accordion/ajax.html diff --git a/vendor/easyui/demo/accordion/basic.html b/vendor/FHC-vendor/easyui/demo/accordion/basic.html similarity index 100% rename from vendor/easyui/demo/accordion/basic.html rename to vendor/FHC-vendor/easyui/demo/accordion/basic.html diff --git a/vendor/easyui/demo/accordion/datagrid_data1.json b/vendor/FHC-vendor/easyui/demo/accordion/datagrid_data1.json similarity index 100% rename from vendor/easyui/demo/accordion/datagrid_data1.json rename to vendor/FHC-vendor/easyui/demo/accordion/datagrid_data1.json diff --git a/vendor/easyui/demo/accordion/expandable.html b/vendor/FHC-vendor/easyui/demo/accordion/expandable.html similarity index 100% rename from vendor/easyui/demo/accordion/expandable.html rename to vendor/FHC-vendor/easyui/demo/accordion/expandable.html diff --git a/vendor/easyui/demo/accordion/fluid.html b/vendor/FHC-vendor/easyui/demo/accordion/fluid.html similarity index 100% rename from vendor/easyui/demo/accordion/fluid.html rename to vendor/FHC-vendor/easyui/demo/accordion/fluid.html diff --git a/vendor/easyui/demo/accordion/multiple.html b/vendor/FHC-vendor/easyui/demo/accordion/multiple.html similarity index 100% rename from vendor/easyui/demo/accordion/multiple.html rename to vendor/FHC-vendor/easyui/demo/accordion/multiple.html diff --git a/vendor/easyui/demo/accordion/tools.html b/vendor/FHC-vendor/easyui/demo/accordion/tools.html similarity index 100% rename from vendor/easyui/demo/accordion/tools.html rename to vendor/FHC-vendor/easyui/demo/accordion/tools.html diff --git a/vendor/easyui/demo/calendar/basic.html b/vendor/FHC-vendor/easyui/demo/calendar/basic.html similarity index 100% rename from vendor/easyui/demo/calendar/basic.html rename to vendor/FHC-vendor/easyui/demo/calendar/basic.html diff --git a/vendor/easyui/demo/calendar/custom.html b/vendor/FHC-vendor/easyui/demo/calendar/custom.html similarity index 100% rename from vendor/easyui/demo/calendar/custom.html rename to vendor/FHC-vendor/easyui/demo/calendar/custom.html diff --git a/vendor/easyui/demo/calendar/disabledate.html b/vendor/FHC-vendor/easyui/demo/calendar/disabledate.html similarity index 100% rename from vendor/easyui/demo/calendar/disabledate.html rename to vendor/FHC-vendor/easyui/demo/calendar/disabledate.html diff --git a/vendor/easyui/demo/calendar/firstday.html b/vendor/FHC-vendor/easyui/demo/calendar/firstday.html similarity index 100% rename from vendor/easyui/demo/calendar/firstday.html rename to vendor/FHC-vendor/easyui/demo/calendar/firstday.html diff --git a/vendor/easyui/demo/calendar/fluid.html b/vendor/FHC-vendor/easyui/demo/calendar/fluid.html similarity index 100% rename from vendor/easyui/demo/calendar/fluid.html rename to vendor/FHC-vendor/easyui/demo/calendar/fluid.html diff --git a/vendor/easyui/demo/combo/animation.html b/vendor/FHC-vendor/easyui/demo/combo/animation.html similarity index 100% rename from vendor/easyui/demo/combo/animation.html rename to vendor/FHC-vendor/easyui/demo/combo/animation.html diff --git a/vendor/easyui/demo/combo/basic.html b/vendor/FHC-vendor/easyui/demo/combo/basic.html similarity index 100% rename from vendor/easyui/demo/combo/basic.html rename to vendor/FHC-vendor/easyui/demo/combo/basic.html diff --git a/vendor/easyui/demo/combobox/actions.html b/vendor/FHC-vendor/easyui/demo/combobox/actions.html similarity index 100% rename from vendor/easyui/demo/combobox/actions.html rename to vendor/FHC-vendor/easyui/demo/combobox/actions.html diff --git a/vendor/easyui/demo/combobox/basic.html b/vendor/FHC-vendor/easyui/demo/combobox/basic.html similarity index 100% rename from vendor/easyui/demo/combobox/basic.html rename to vendor/FHC-vendor/easyui/demo/combobox/basic.html diff --git a/vendor/easyui/demo/combobox/combobox_data1.json b/vendor/FHC-vendor/easyui/demo/combobox/combobox_data1.json similarity index 100% rename from vendor/easyui/demo/combobox/combobox_data1.json rename to vendor/FHC-vendor/easyui/demo/combobox/combobox_data1.json diff --git a/vendor/easyui/demo/combobox/combobox_data2.json b/vendor/FHC-vendor/easyui/demo/combobox/combobox_data2.json similarity index 100% rename from vendor/easyui/demo/combobox/combobox_data2.json rename to vendor/FHC-vendor/easyui/demo/combobox/combobox_data2.json diff --git a/vendor/easyui/demo/combobox/customformat.html b/vendor/FHC-vendor/easyui/demo/combobox/customformat.html similarity index 100% rename from vendor/easyui/demo/combobox/customformat.html rename to vendor/FHC-vendor/easyui/demo/combobox/customformat.html diff --git a/vendor/easyui/demo/combobox/dynamicdata.html b/vendor/FHC-vendor/easyui/demo/combobox/dynamicdata.html similarity index 100% rename from vendor/easyui/demo/combobox/dynamicdata.html rename to vendor/FHC-vendor/easyui/demo/combobox/dynamicdata.html diff --git a/vendor/easyui/demo/combobox/fluid.html b/vendor/FHC-vendor/easyui/demo/combobox/fluid.html similarity index 100% rename from vendor/easyui/demo/combobox/fluid.html rename to vendor/FHC-vendor/easyui/demo/combobox/fluid.html diff --git a/vendor/easyui/demo/combobox/group.html b/vendor/FHC-vendor/easyui/demo/combobox/group.html similarity index 100% rename from vendor/easyui/demo/combobox/group.html rename to vendor/FHC-vendor/easyui/demo/combobox/group.html diff --git a/vendor/easyui/demo/combobox/icons.html b/vendor/FHC-vendor/easyui/demo/combobox/icons.html similarity index 100% rename from vendor/easyui/demo/combobox/icons.html rename to vendor/FHC-vendor/easyui/demo/combobox/icons.html diff --git a/vendor/easyui/demo/combobox/multiline.html b/vendor/FHC-vendor/easyui/demo/combobox/multiline.html similarity index 100% rename from vendor/easyui/demo/combobox/multiline.html rename to vendor/FHC-vendor/easyui/demo/combobox/multiline.html diff --git a/vendor/easyui/demo/combobox/multiple.html b/vendor/FHC-vendor/easyui/demo/combobox/multiple.html similarity index 100% rename from vendor/easyui/demo/combobox/multiple.html rename to vendor/FHC-vendor/easyui/demo/combobox/multiple.html diff --git a/vendor/easyui/demo/combobox/navigation.html b/vendor/FHC-vendor/easyui/demo/combobox/navigation.html similarity index 100% rename from vendor/easyui/demo/combobox/navigation.html rename to vendor/FHC-vendor/easyui/demo/combobox/navigation.html diff --git a/vendor/easyui/demo/combobox/remotedata.html b/vendor/FHC-vendor/easyui/demo/combobox/remotedata.html similarity index 100% rename from vendor/easyui/demo/combobox/remotedata.html rename to vendor/FHC-vendor/easyui/demo/combobox/remotedata.html diff --git a/vendor/easyui/demo/combobox/remotejsonp.html b/vendor/FHC-vendor/easyui/demo/combobox/remotejsonp.html similarity index 100% rename from vendor/easyui/demo/combobox/remotejsonp.html rename to vendor/FHC-vendor/easyui/demo/combobox/remotejsonp.html diff --git a/vendor/easyui/demo/combogrid/actions.html b/vendor/FHC-vendor/easyui/demo/combogrid/actions.html similarity index 100% rename from vendor/easyui/demo/combogrid/actions.html rename to vendor/FHC-vendor/easyui/demo/combogrid/actions.html diff --git a/vendor/easyui/demo/combogrid/basic.html b/vendor/FHC-vendor/easyui/demo/combogrid/basic.html similarity index 100% rename from vendor/easyui/demo/combogrid/basic.html rename to vendor/FHC-vendor/easyui/demo/combogrid/basic.html diff --git a/vendor/easyui/demo/combogrid/datagrid_data1.json b/vendor/FHC-vendor/easyui/demo/combogrid/datagrid_data1.json similarity index 100% rename from vendor/easyui/demo/combogrid/datagrid_data1.json rename to vendor/FHC-vendor/easyui/demo/combogrid/datagrid_data1.json diff --git a/vendor/easyui/demo/combogrid/fluid.html b/vendor/FHC-vendor/easyui/demo/combogrid/fluid.html similarity index 100% rename from vendor/easyui/demo/combogrid/fluid.html rename to vendor/FHC-vendor/easyui/demo/combogrid/fluid.html diff --git a/vendor/easyui/demo/combogrid/initvalue.html b/vendor/FHC-vendor/easyui/demo/combogrid/initvalue.html similarity index 100% rename from vendor/easyui/demo/combogrid/initvalue.html rename to vendor/FHC-vendor/easyui/demo/combogrid/initvalue.html diff --git a/vendor/easyui/demo/combogrid/multiple.html b/vendor/FHC-vendor/easyui/demo/combogrid/multiple.html similarity index 100% rename from vendor/easyui/demo/combogrid/multiple.html rename to vendor/FHC-vendor/easyui/demo/combogrid/multiple.html diff --git a/vendor/easyui/demo/combogrid/navigation.html b/vendor/FHC-vendor/easyui/demo/combogrid/navigation.html similarity index 100% rename from vendor/easyui/demo/combogrid/navigation.html rename to vendor/FHC-vendor/easyui/demo/combogrid/navigation.html diff --git a/vendor/easyui/demo/combogrid/setvalue.html b/vendor/FHC-vendor/easyui/demo/combogrid/setvalue.html similarity index 100% rename from vendor/easyui/demo/combogrid/setvalue.html rename to vendor/FHC-vendor/easyui/demo/combogrid/setvalue.html diff --git a/vendor/easyui/demo/combotree/actions.html b/vendor/FHC-vendor/easyui/demo/combotree/actions.html similarity index 100% rename from vendor/easyui/demo/combotree/actions.html rename to vendor/FHC-vendor/easyui/demo/combotree/actions.html diff --git a/vendor/easyui/demo/combotree/basic.html b/vendor/FHC-vendor/easyui/demo/combotree/basic.html similarity index 100% rename from vendor/easyui/demo/combotree/basic.html rename to vendor/FHC-vendor/easyui/demo/combotree/basic.html diff --git a/vendor/easyui/demo/combotree/fluid.html b/vendor/FHC-vendor/easyui/demo/combotree/fluid.html similarity index 100% rename from vendor/easyui/demo/combotree/fluid.html rename to vendor/FHC-vendor/easyui/demo/combotree/fluid.html diff --git a/vendor/easyui/demo/combotree/initvalue.html b/vendor/FHC-vendor/easyui/demo/combotree/initvalue.html similarity index 100% rename from vendor/easyui/demo/combotree/initvalue.html rename to vendor/FHC-vendor/easyui/demo/combotree/initvalue.html diff --git a/vendor/easyui/demo/combotree/multiple.html b/vendor/FHC-vendor/easyui/demo/combotree/multiple.html similarity index 100% rename from vendor/easyui/demo/combotree/multiple.html rename to vendor/FHC-vendor/easyui/demo/combotree/multiple.html diff --git a/vendor/easyui/demo/combotree/tree_data1.json b/vendor/FHC-vendor/easyui/demo/combotree/tree_data1.json similarity index 100% rename from vendor/easyui/demo/combotree/tree_data1.json rename to vendor/FHC-vendor/easyui/demo/combotree/tree_data1.json diff --git a/vendor/easyui/demo/datagrid/aligncolumns.html b/vendor/FHC-vendor/easyui/demo/datagrid/aligncolumns.html similarity index 100% rename from vendor/easyui/demo/datagrid/aligncolumns.html rename to vendor/FHC-vendor/easyui/demo/datagrid/aligncolumns.html diff --git a/vendor/easyui/demo/datagrid/basic.html b/vendor/FHC-vendor/easyui/demo/datagrid/basic.html similarity index 100% rename from vendor/easyui/demo/datagrid/basic.html rename to vendor/FHC-vendor/easyui/demo/datagrid/basic.html diff --git a/vendor/easyui/demo/datagrid/cacheeditor.html b/vendor/FHC-vendor/easyui/demo/datagrid/cacheeditor.html similarity index 100% rename from vendor/easyui/demo/datagrid/cacheeditor.html rename to vendor/FHC-vendor/easyui/demo/datagrid/cacheeditor.html diff --git a/vendor/easyui/demo/datagrid/cellediting.html b/vendor/FHC-vendor/easyui/demo/datagrid/cellediting.html similarity index 100% rename from vendor/easyui/demo/datagrid/cellediting.html rename to vendor/FHC-vendor/easyui/demo/datagrid/cellediting.html diff --git a/vendor/easyui/demo/datagrid/cellstyle.html b/vendor/FHC-vendor/easyui/demo/datagrid/cellstyle.html similarity index 100% rename from vendor/easyui/demo/datagrid/cellstyle.html rename to vendor/FHC-vendor/easyui/demo/datagrid/cellstyle.html diff --git a/vendor/easyui/demo/datagrid/checkbox.html b/vendor/FHC-vendor/easyui/demo/datagrid/checkbox.html similarity index 100% rename from vendor/easyui/demo/datagrid/checkbox.html rename to vendor/FHC-vendor/easyui/demo/datagrid/checkbox.html diff --git a/vendor/easyui/demo/datagrid/clientpagination.html b/vendor/FHC-vendor/easyui/demo/datagrid/clientpagination.html similarity index 100% rename from vendor/easyui/demo/datagrid/clientpagination.html rename to vendor/FHC-vendor/easyui/demo/datagrid/clientpagination.html diff --git a/vendor/easyui/demo/datagrid/columngroup.html b/vendor/FHC-vendor/easyui/demo/datagrid/columngroup.html similarity index 100% rename from vendor/easyui/demo/datagrid/columngroup.html rename to vendor/FHC-vendor/easyui/demo/datagrid/columngroup.html diff --git a/vendor/easyui/demo/datagrid/complextoolbar.html b/vendor/FHC-vendor/easyui/demo/datagrid/complextoolbar.html similarity index 100% rename from vendor/easyui/demo/datagrid/complextoolbar.html rename to vendor/FHC-vendor/easyui/demo/datagrid/complextoolbar.html diff --git a/vendor/easyui/demo/datagrid/contextmenu.html b/vendor/FHC-vendor/easyui/demo/datagrid/contextmenu.html similarity index 100% rename from vendor/easyui/demo/datagrid/contextmenu.html rename to vendor/FHC-vendor/easyui/demo/datagrid/contextmenu.html diff --git a/vendor/easyui/demo/datagrid/custompager.html b/vendor/FHC-vendor/easyui/demo/datagrid/custompager.html similarity index 100% rename from vendor/easyui/demo/datagrid/custompager.html rename to vendor/FHC-vendor/easyui/demo/datagrid/custompager.html diff --git a/vendor/easyui/demo/datagrid/datagrid_data1.json b/vendor/FHC-vendor/easyui/demo/datagrid/datagrid_data1.json similarity index 100% rename from vendor/easyui/demo/datagrid/datagrid_data1.json rename to vendor/FHC-vendor/easyui/demo/datagrid/datagrid_data1.json diff --git a/vendor/easyui/demo/datagrid/datagrid_data2.json b/vendor/FHC-vendor/easyui/demo/datagrid/datagrid_data2.json similarity index 100% rename from vendor/easyui/demo/datagrid/datagrid_data2.json rename to vendor/FHC-vendor/easyui/demo/datagrid/datagrid_data2.json diff --git a/vendor/easyui/demo/datagrid/fluid.html b/vendor/FHC-vendor/easyui/demo/datagrid/fluid.html similarity index 100% rename from vendor/easyui/demo/datagrid/fluid.html rename to vendor/FHC-vendor/easyui/demo/datagrid/fluid.html diff --git a/vendor/easyui/demo/datagrid/footer.html b/vendor/FHC-vendor/easyui/demo/datagrid/footer.html similarity index 100% rename from vendor/easyui/demo/datagrid/footer.html rename to vendor/FHC-vendor/easyui/demo/datagrid/footer.html diff --git a/vendor/easyui/demo/datagrid/formatcolumns.html b/vendor/FHC-vendor/easyui/demo/datagrid/formatcolumns.html similarity index 100% rename from vendor/easyui/demo/datagrid/formatcolumns.html rename to vendor/FHC-vendor/easyui/demo/datagrid/formatcolumns.html diff --git a/vendor/easyui/demo/datagrid/frozencolumns.html b/vendor/FHC-vendor/easyui/demo/datagrid/frozencolumns.html similarity index 100% rename from vendor/easyui/demo/datagrid/frozencolumns.html rename to vendor/FHC-vendor/easyui/demo/datagrid/frozencolumns.html diff --git a/vendor/easyui/demo/datagrid/frozenrows.html b/vendor/FHC-vendor/easyui/demo/datagrid/frozenrows.html similarity index 100% rename from vendor/easyui/demo/datagrid/frozenrows.html rename to vendor/FHC-vendor/easyui/demo/datagrid/frozenrows.html diff --git a/vendor/easyui/demo/datagrid/mergecells.html b/vendor/FHC-vendor/easyui/demo/datagrid/mergecells.html similarity index 100% rename from vendor/easyui/demo/datagrid/mergecells.html rename to vendor/FHC-vendor/easyui/demo/datagrid/mergecells.html diff --git a/vendor/easyui/demo/datagrid/multisorting.html b/vendor/FHC-vendor/easyui/demo/datagrid/multisorting.html similarity index 100% rename from vendor/easyui/demo/datagrid/multisorting.html rename to vendor/FHC-vendor/easyui/demo/datagrid/multisorting.html diff --git a/vendor/easyui/demo/datagrid/products.json b/vendor/FHC-vendor/easyui/demo/datagrid/products.json similarity index 100% rename from vendor/easyui/demo/datagrid/products.json rename to vendor/FHC-vendor/easyui/demo/datagrid/products.json diff --git a/vendor/easyui/demo/datagrid/rowborder.html b/vendor/FHC-vendor/easyui/demo/datagrid/rowborder.html similarity index 100% rename from vendor/easyui/demo/datagrid/rowborder.html rename to vendor/FHC-vendor/easyui/demo/datagrid/rowborder.html diff --git a/vendor/easyui/demo/datagrid/rowediting.html b/vendor/FHC-vendor/easyui/demo/datagrid/rowediting.html similarity index 100% rename from vendor/easyui/demo/datagrid/rowediting.html rename to vendor/FHC-vendor/easyui/demo/datagrid/rowediting.html diff --git a/vendor/easyui/demo/datagrid/rowstyle.html b/vendor/FHC-vendor/easyui/demo/datagrid/rowstyle.html similarity index 100% rename from vendor/easyui/demo/datagrid/rowstyle.html rename to vendor/FHC-vendor/easyui/demo/datagrid/rowstyle.html diff --git a/vendor/easyui/demo/datagrid/selection.html b/vendor/FHC-vendor/easyui/demo/datagrid/selection.html similarity index 100% rename from vendor/easyui/demo/datagrid/selection.html rename to vendor/FHC-vendor/easyui/demo/datagrid/selection.html diff --git a/vendor/easyui/demo/datagrid/simpletoolbar.html b/vendor/FHC-vendor/easyui/demo/datagrid/simpletoolbar.html similarity index 100% rename from vendor/easyui/demo/datagrid/simpletoolbar.html rename to vendor/FHC-vendor/easyui/demo/datagrid/simpletoolbar.html diff --git a/vendor/easyui/demo/datagrid/transform.html b/vendor/FHC-vendor/easyui/demo/datagrid/transform.html similarity index 100% rename from vendor/easyui/demo/datagrid/transform.html rename to vendor/FHC-vendor/easyui/demo/datagrid/transform.html diff --git a/vendor/easyui/demo/datalist/basic.html b/vendor/FHC-vendor/easyui/demo/datalist/basic.html similarity index 100% rename from vendor/easyui/demo/datalist/basic.html rename to vendor/FHC-vendor/easyui/demo/datalist/basic.html diff --git a/vendor/easyui/demo/datalist/checkbox.html b/vendor/FHC-vendor/easyui/demo/datalist/checkbox.html similarity index 100% rename from vendor/easyui/demo/datalist/checkbox.html rename to vendor/FHC-vendor/easyui/demo/datalist/checkbox.html diff --git a/vendor/easyui/demo/datalist/datalist_data1.json b/vendor/FHC-vendor/easyui/demo/datalist/datalist_data1.json similarity index 100% rename from vendor/easyui/demo/datalist/datalist_data1.json rename to vendor/FHC-vendor/easyui/demo/datalist/datalist_data1.json diff --git a/vendor/easyui/demo/datalist/group.html b/vendor/FHC-vendor/easyui/demo/datalist/group.html similarity index 100% rename from vendor/easyui/demo/datalist/group.html rename to vendor/FHC-vendor/easyui/demo/datalist/group.html diff --git a/vendor/easyui/demo/datalist/multiselect.html b/vendor/FHC-vendor/easyui/demo/datalist/multiselect.html similarity index 100% rename from vendor/easyui/demo/datalist/multiselect.html rename to vendor/FHC-vendor/easyui/demo/datalist/multiselect.html diff --git a/vendor/easyui/demo/datalist/remotedata.html b/vendor/FHC-vendor/easyui/demo/datalist/remotedata.html similarity index 100% rename from vendor/easyui/demo/datalist/remotedata.html rename to vendor/FHC-vendor/easyui/demo/datalist/remotedata.html diff --git a/vendor/easyui/demo/datebox/basic.html b/vendor/FHC-vendor/easyui/demo/datebox/basic.html similarity index 100% rename from vendor/easyui/demo/datebox/basic.html rename to vendor/FHC-vendor/easyui/demo/datebox/basic.html diff --git a/vendor/easyui/demo/datebox/buttons.html b/vendor/FHC-vendor/easyui/demo/datebox/buttons.html similarity index 100% rename from vendor/easyui/demo/datebox/buttons.html rename to vendor/FHC-vendor/easyui/demo/datebox/buttons.html diff --git a/vendor/easyui/demo/datebox/clone.html b/vendor/FHC-vendor/easyui/demo/datebox/clone.html similarity index 100% rename from vendor/easyui/demo/datebox/clone.html rename to vendor/FHC-vendor/easyui/demo/datebox/clone.html diff --git a/vendor/easyui/demo/datebox/dateformat.html b/vendor/FHC-vendor/easyui/demo/datebox/dateformat.html similarity index 100% rename from vendor/easyui/demo/datebox/dateformat.html rename to vendor/FHC-vendor/easyui/demo/datebox/dateformat.html diff --git a/vendor/easyui/demo/datebox/events.html b/vendor/FHC-vendor/easyui/demo/datebox/events.html similarity index 100% rename from vendor/easyui/demo/datebox/events.html rename to vendor/FHC-vendor/easyui/demo/datebox/events.html diff --git a/vendor/easyui/demo/datebox/fluid.html b/vendor/FHC-vendor/easyui/demo/datebox/fluid.html similarity index 100% rename from vendor/easyui/demo/datebox/fluid.html rename to vendor/FHC-vendor/easyui/demo/datebox/fluid.html diff --git a/vendor/easyui/demo/datebox/restrict.html b/vendor/FHC-vendor/easyui/demo/datebox/restrict.html similarity index 100% rename from vendor/easyui/demo/datebox/restrict.html rename to vendor/FHC-vendor/easyui/demo/datebox/restrict.html diff --git a/vendor/easyui/demo/datebox/sharedcalendar.html b/vendor/FHC-vendor/easyui/demo/datebox/sharedcalendar.html similarity index 100% rename from vendor/easyui/demo/datebox/sharedcalendar.html rename to vendor/FHC-vendor/easyui/demo/datebox/sharedcalendar.html diff --git a/vendor/easyui/demo/datebox/validate.html b/vendor/FHC-vendor/easyui/demo/datebox/validate.html similarity index 100% rename from vendor/easyui/demo/datebox/validate.html rename to vendor/FHC-vendor/easyui/demo/datebox/validate.html diff --git a/vendor/easyui/demo/datetimebox/basic.html b/vendor/FHC-vendor/easyui/demo/datetimebox/basic.html similarity index 100% rename from vendor/easyui/demo/datetimebox/basic.html rename to vendor/FHC-vendor/easyui/demo/datetimebox/basic.html diff --git a/vendor/easyui/demo/datetimebox/fluid.html b/vendor/FHC-vendor/easyui/demo/datetimebox/fluid.html similarity index 100% rename from vendor/easyui/demo/datetimebox/fluid.html rename to vendor/FHC-vendor/easyui/demo/datetimebox/fluid.html diff --git a/vendor/easyui/demo/datetimebox/initvalue.html b/vendor/FHC-vendor/easyui/demo/datetimebox/initvalue.html similarity index 100% rename from vendor/easyui/demo/datetimebox/initvalue.html rename to vendor/FHC-vendor/easyui/demo/datetimebox/initvalue.html diff --git a/vendor/easyui/demo/datetimebox/showseconds.html b/vendor/FHC-vendor/easyui/demo/datetimebox/showseconds.html similarity index 100% rename from vendor/easyui/demo/datetimebox/showseconds.html rename to vendor/FHC-vendor/easyui/demo/datetimebox/showseconds.html diff --git a/vendor/easyui/demo/datetimespinner/basic.html b/vendor/FHC-vendor/easyui/demo/datetimespinner/basic.html similarity index 100% rename from vendor/easyui/demo/datetimespinner/basic.html rename to vendor/FHC-vendor/easyui/demo/datetimespinner/basic.html diff --git a/vendor/easyui/demo/datetimespinner/clearicon.html b/vendor/FHC-vendor/easyui/demo/datetimespinner/clearicon.html similarity index 100% rename from vendor/easyui/demo/datetimespinner/clearicon.html rename to vendor/FHC-vendor/easyui/demo/datetimespinner/clearicon.html diff --git a/vendor/easyui/demo/datetimespinner/fluid.html b/vendor/FHC-vendor/easyui/demo/datetimespinner/fluid.html similarity index 100% rename from vendor/easyui/demo/datetimespinner/fluid.html rename to vendor/FHC-vendor/easyui/demo/datetimespinner/fluid.html diff --git a/vendor/easyui/demo/datetimespinner/format.html b/vendor/FHC-vendor/easyui/demo/datetimespinner/format.html similarity index 100% rename from vendor/easyui/demo/datetimespinner/format.html rename to vendor/FHC-vendor/easyui/demo/datetimespinner/format.html diff --git a/vendor/easyui/demo/demo.css b/vendor/FHC-vendor/easyui/demo/demo.css similarity index 100% rename from vendor/easyui/demo/demo.css rename to vendor/FHC-vendor/easyui/demo/demo.css diff --git a/vendor/easyui/demo/dialog/basic.html b/vendor/FHC-vendor/easyui/demo/dialog/basic.html similarity index 100% rename from vendor/easyui/demo/dialog/basic.html rename to vendor/FHC-vendor/easyui/demo/dialog/basic.html diff --git a/vendor/easyui/demo/dialog/complextoolbar.html b/vendor/FHC-vendor/easyui/demo/dialog/complextoolbar.html similarity index 100% rename from vendor/easyui/demo/dialog/complextoolbar.html rename to vendor/FHC-vendor/easyui/demo/dialog/complextoolbar.html diff --git a/vendor/easyui/demo/dialog/fluid.html b/vendor/FHC-vendor/easyui/demo/dialog/fluid.html similarity index 100% rename from vendor/easyui/demo/dialog/fluid.html rename to vendor/FHC-vendor/easyui/demo/dialog/fluid.html diff --git a/vendor/easyui/demo/dialog/toolbarbuttons.html b/vendor/FHC-vendor/easyui/demo/dialog/toolbarbuttons.html similarity index 100% rename from vendor/easyui/demo/dialog/toolbarbuttons.html rename to vendor/FHC-vendor/easyui/demo/dialog/toolbarbuttons.html diff --git a/vendor/easyui/demo/draggable/basic.html b/vendor/FHC-vendor/easyui/demo/draggable/basic.html similarity index 100% rename from vendor/easyui/demo/draggable/basic.html rename to vendor/FHC-vendor/easyui/demo/draggable/basic.html diff --git a/vendor/easyui/demo/draggable/constrain.html b/vendor/FHC-vendor/easyui/demo/draggable/constrain.html similarity index 100% rename from vendor/easyui/demo/draggable/constrain.html rename to vendor/FHC-vendor/easyui/demo/draggable/constrain.html diff --git a/vendor/easyui/demo/draggable/snap.html b/vendor/FHC-vendor/easyui/demo/draggable/snap.html similarity index 100% rename from vendor/easyui/demo/draggable/snap.html rename to vendor/FHC-vendor/easyui/demo/draggable/snap.html diff --git a/vendor/easyui/demo/droppable/accept.html b/vendor/FHC-vendor/easyui/demo/droppable/accept.html similarity index 100% rename from vendor/easyui/demo/droppable/accept.html rename to vendor/FHC-vendor/easyui/demo/droppable/accept.html diff --git a/vendor/easyui/demo/droppable/basic.html b/vendor/FHC-vendor/easyui/demo/droppable/basic.html similarity index 100% rename from vendor/easyui/demo/droppable/basic.html rename to vendor/FHC-vendor/easyui/demo/droppable/basic.html diff --git a/vendor/easyui/demo/droppable/sort.html b/vendor/FHC-vendor/easyui/demo/droppable/sort.html similarity index 100% rename from vendor/easyui/demo/droppable/sort.html rename to vendor/FHC-vendor/easyui/demo/droppable/sort.html diff --git a/vendor/easyui/demo/easyloader/basic.html b/vendor/FHC-vendor/easyui/demo/easyloader/basic.html similarity index 100% rename from vendor/easyui/demo/easyloader/basic.html rename to vendor/FHC-vendor/easyui/demo/easyloader/basic.html diff --git a/vendor/easyui/demo/filebox/basic.html b/vendor/FHC-vendor/easyui/demo/filebox/basic.html similarity index 100% rename from vendor/easyui/demo/filebox/basic.html rename to vendor/FHC-vendor/easyui/demo/filebox/basic.html diff --git a/vendor/easyui/demo/filebox/buttonalign.html b/vendor/FHC-vendor/easyui/demo/filebox/buttonalign.html similarity index 100% rename from vendor/easyui/demo/filebox/buttonalign.html rename to vendor/FHC-vendor/easyui/demo/filebox/buttonalign.html diff --git a/vendor/easyui/demo/filebox/fluid.html b/vendor/FHC-vendor/easyui/demo/filebox/fluid.html similarity index 100% rename from vendor/easyui/demo/filebox/fluid.html rename to vendor/FHC-vendor/easyui/demo/filebox/fluid.html diff --git a/vendor/easyui/demo/form/basic.html b/vendor/FHC-vendor/easyui/demo/form/basic.html similarity index 100% rename from vendor/easyui/demo/form/basic.html rename to vendor/FHC-vendor/easyui/demo/form/basic.html diff --git a/vendor/easyui/demo/form/form_data1.json b/vendor/FHC-vendor/easyui/demo/form/form_data1.json similarity index 100% rename from vendor/easyui/demo/form/form_data1.json rename to vendor/FHC-vendor/easyui/demo/form/form_data1.json diff --git a/vendor/easyui/demo/form/load.html b/vendor/FHC-vendor/easyui/demo/form/load.html similarity index 100% rename from vendor/easyui/demo/form/load.html rename to vendor/FHC-vendor/easyui/demo/form/load.html diff --git a/vendor/easyui/demo/form/validateonsubmit.html b/vendor/FHC-vendor/easyui/demo/form/validateonsubmit.html similarity index 100% rename from vendor/easyui/demo/form/validateonsubmit.html rename to vendor/FHC-vendor/easyui/demo/form/validateonsubmit.html diff --git a/vendor/easyui/demo/layout/_content.html b/vendor/FHC-vendor/easyui/demo/layout/_content.html similarity index 100% rename from vendor/easyui/demo/layout/_content.html rename to vendor/FHC-vendor/easyui/demo/layout/_content.html diff --git a/vendor/easyui/demo/layout/addremove.html b/vendor/FHC-vendor/easyui/demo/layout/addremove.html similarity index 100% rename from vendor/easyui/demo/layout/addremove.html rename to vendor/FHC-vendor/easyui/demo/layout/addremove.html diff --git a/vendor/easyui/demo/layout/autoheight.html b/vendor/FHC-vendor/easyui/demo/layout/autoheight.html similarity index 100% rename from vendor/easyui/demo/layout/autoheight.html rename to vendor/FHC-vendor/easyui/demo/layout/autoheight.html diff --git a/vendor/easyui/demo/layout/basic.html b/vendor/FHC-vendor/easyui/demo/layout/basic.html similarity index 100% rename from vendor/easyui/demo/layout/basic.html rename to vendor/FHC-vendor/easyui/demo/layout/basic.html diff --git a/vendor/easyui/demo/layout/collapsetitle.html b/vendor/FHC-vendor/easyui/demo/layout/collapsetitle.html similarity index 100% rename from vendor/easyui/demo/layout/collapsetitle.html rename to vendor/FHC-vendor/easyui/demo/layout/collapsetitle.html diff --git a/vendor/easyui/demo/layout/complex.html b/vendor/FHC-vendor/easyui/demo/layout/complex.html similarity index 100% rename from vendor/easyui/demo/layout/complex.html rename to vendor/FHC-vendor/easyui/demo/layout/complex.html diff --git a/vendor/easyui/demo/layout/customcollapsetitle.html b/vendor/FHC-vendor/easyui/demo/layout/customcollapsetitle.html similarity index 100% rename from vendor/easyui/demo/layout/customcollapsetitle.html rename to vendor/FHC-vendor/easyui/demo/layout/customcollapsetitle.html diff --git a/vendor/easyui/demo/layout/datagrid_data1.json b/vendor/FHC-vendor/easyui/demo/layout/datagrid_data1.json similarity index 100% rename from vendor/easyui/demo/layout/datagrid_data1.json rename to vendor/FHC-vendor/easyui/demo/layout/datagrid_data1.json diff --git a/vendor/easyui/demo/layout/fluid.html b/vendor/FHC-vendor/easyui/demo/layout/fluid.html similarity index 100% rename from vendor/easyui/demo/layout/fluid.html rename to vendor/FHC-vendor/easyui/demo/layout/fluid.html diff --git a/vendor/easyui/demo/layout/full.html b/vendor/FHC-vendor/easyui/demo/layout/full.html similarity index 100% rename from vendor/easyui/demo/layout/full.html rename to vendor/FHC-vendor/easyui/demo/layout/full.html diff --git a/vendor/easyui/demo/layout/nestedlayout.html b/vendor/FHC-vendor/easyui/demo/layout/nestedlayout.html similarity index 100% rename from vendor/easyui/demo/layout/nestedlayout.html rename to vendor/FHC-vendor/easyui/demo/layout/nestedlayout.html diff --git a/vendor/easyui/demo/layout/nocollapsible.html b/vendor/FHC-vendor/easyui/demo/layout/nocollapsible.html similarity index 100% rename from vendor/easyui/demo/layout/nocollapsible.html rename to vendor/FHC-vendor/easyui/demo/layout/nocollapsible.html diff --git a/vendor/easyui/demo/layout/propertygrid_data1.json b/vendor/FHC-vendor/easyui/demo/layout/propertygrid_data1.json similarity index 100% rename from vendor/easyui/demo/layout/propertygrid_data1.json rename to vendor/FHC-vendor/easyui/demo/layout/propertygrid_data1.json diff --git a/vendor/easyui/demo/layout/tree_data1.json b/vendor/FHC-vendor/easyui/demo/layout/tree_data1.json similarity index 100% rename from vendor/easyui/demo/layout/tree_data1.json rename to vendor/FHC-vendor/easyui/demo/layout/tree_data1.json diff --git a/vendor/easyui/demo/linkbutton/basic.html b/vendor/FHC-vendor/easyui/demo/linkbutton/basic.html similarity index 100% rename from vendor/easyui/demo/linkbutton/basic.html rename to vendor/FHC-vendor/easyui/demo/linkbutton/basic.html diff --git a/vendor/easyui/demo/linkbutton/fluid.html b/vendor/FHC-vendor/easyui/demo/linkbutton/fluid.html similarity index 100% rename from vendor/easyui/demo/linkbutton/fluid.html rename to vendor/FHC-vendor/easyui/demo/linkbutton/fluid.html diff --git a/vendor/easyui/demo/linkbutton/group.html b/vendor/FHC-vendor/easyui/demo/linkbutton/group.html similarity index 100% rename from vendor/easyui/demo/linkbutton/group.html rename to vendor/FHC-vendor/easyui/demo/linkbutton/group.html diff --git a/vendor/easyui/demo/linkbutton/iconalign.html b/vendor/FHC-vendor/easyui/demo/linkbutton/iconalign.html similarity index 100% rename from vendor/easyui/demo/linkbutton/iconalign.html rename to vendor/FHC-vendor/easyui/demo/linkbutton/iconalign.html diff --git a/vendor/easyui/demo/linkbutton/plain.html b/vendor/FHC-vendor/easyui/demo/linkbutton/plain.html similarity index 100% rename from vendor/easyui/demo/linkbutton/plain.html rename to vendor/FHC-vendor/easyui/demo/linkbutton/plain.html diff --git a/vendor/easyui/demo/linkbutton/size.html b/vendor/FHC-vendor/easyui/demo/linkbutton/size.html similarity index 100% rename from vendor/easyui/demo/linkbutton/size.html rename to vendor/FHC-vendor/easyui/demo/linkbutton/size.html diff --git a/vendor/easyui/demo/linkbutton/style.html b/vendor/FHC-vendor/easyui/demo/linkbutton/style.html similarity index 100% rename from vendor/easyui/demo/linkbutton/style.html rename to vendor/FHC-vendor/easyui/demo/linkbutton/style.html diff --git a/vendor/easyui/demo/linkbutton/toggle.html b/vendor/FHC-vendor/easyui/demo/linkbutton/toggle.html similarity index 100% rename from vendor/easyui/demo/linkbutton/toggle.html rename to vendor/FHC-vendor/easyui/demo/linkbutton/toggle.html diff --git a/vendor/easyui/demo/menu/basic.html b/vendor/FHC-vendor/easyui/demo/menu/basic.html similarity index 100% rename from vendor/easyui/demo/menu/basic.html rename to vendor/FHC-vendor/easyui/demo/menu/basic.html diff --git a/vendor/easyui/demo/menu/customitem.html b/vendor/FHC-vendor/easyui/demo/menu/customitem.html similarity index 100% rename from vendor/easyui/demo/menu/customitem.html rename to vendor/FHC-vendor/easyui/demo/menu/customitem.html diff --git a/vendor/easyui/demo/menu/events.html b/vendor/FHC-vendor/easyui/demo/menu/events.html similarity index 100% rename from vendor/easyui/demo/menu/events.html rename to vendor/FHC-vendor/easyui/demo/menu/events.html diff --git a/vendor/easyui/demo/menu/inline.html b/vendor/FHC-vendor/easyui/demo/menu/inline.html similarity index 100% rename from vendor/easyui/demo/menu/inline.html rename to vendor/FHC-vendor/easyui/demo/menu/inline.html diff --git a/vendor/easyui/demo/menu/nav.html b/vendor/FHC-vendor/easyui/demo/menu/nav.html similarity index 100% rename from vendor/easyui/demo/menu/nav.html rename to vendor/FHC-vendor/easyui/demo/menu/nav.html diff --git a/vendor/easyui/demo/menubutton/actions.html b/vendor/FHC-vendor/easyui/demo/menubutton/actions.html similarity index 100% rename from vendor/easyui/demo/menubutton/actions.html rename to vendor/FHC-vendor/easyui/demo/menubutton/actions.html diff --git a/vendor/easyui/demo/menubutton/alignment.html b/vendor/FHC-vendor/easyui/demo/menubutton/alignment.html similarity index 100% rename from vendor/easyui/demo/menubutton/alignment.html rename to vendor/FHC-vendor/easyui/demo/menubutton/alignment.html diff --git a/vendor/easyui/demo/menubutton/basic.html b/vendor/FHC-vendor/easyui/demo/menubutton/basic.html similarity index 100% rename from vendor/easyui/demo/menubutton/basic.html rename to vendor/FHC-vendor/easyui/demo/menubutton/basic.html diff --git a/vendor/easyui/demo/menubutton/nav.html b/vendor/FHC-vendor/easyui/demo/menubutton/nav.html similarity index 100% rename from vendor/easyui/demo/menubutton/nav.html rename to vendor/FHC-vendor/easyui/demo/menubutton/nav.html diff --git a/vendor/easyui/demo/messager/alert.html b/vendor/FHC-vendor/easyui/demo/messager/alert.html similarity index 100% rename from vendor/easyui/demo/messager/alert.html rename to vendor/FHC-vendor/easyui/demo/messager/alert.html diff --git a/vendor/easyui/demo/messager/basic.html b/vendor/FHC-vendor/easyui/demo/messager/basic.html similarity index 100% rename from vendor/easyui/demo/messager/basic.html rename to vendor/FHC-vendor/easyui/demo/messager/basic.html diff --git a/vendor/easyui/demo/messager/interactive.html b/vendor/FHC-vendor/easyui/demo/messager/interactive.html similarity index 100% rename from vendor/easyui/demo/messager/interactive.html rename to vendor/FHC-vendor/easyui/demo/messager/interactive.html diff --git a/vendor/easyui/demo/messager/position.html b/vendor/FHC-vendor/easyui/demo/messager/position.html similarity index 100% rename from vendor/easyui/demo/messager/position.html rename to vendor/FHC-vendor/easyui/demo/messager/position.html diff --git a/vendor/easyui/demo/numberbox/basic.html b/vendor/FHC-vendor/easyui/demo/numberbox/basic.html similarity index 100% rename from vendor/easyui/demo/numberbox/basic.html rename to vendor/FHC-vendor/easyui/demo/numberbox/basic.html diff --git a/vendor/easyui/demo/numberbox/fluid.html b/vendor/FHC-vendor/easyui/demo/numberbox/fluid.html similarity index 100% rename from vendor/easyui/demo/numberbox/fluid.html rename to vendor/FHC-vendor/easyui/demo/numberbox/fluid.html diff --git a/vendor/easyui/demo/numberbox/format.html b/vendor/FHC-vendor/easyui/demo/numberbox/format.html similarity index 100% rename from vendor/easyui/demo/numberbox/format.html rename to vendor/FHC-vendor/easyui/demo/numberbox/format.html diff --git a/vendor/easyui/demo/numberbox/range.html b/vendor/FHC-vendor/easyui/demo/numberbox/range.html similarity index 100% rename from vendor/easyui/demo/numberbox/range.html rename to vendor/FHC-vendor/easyui/demo/numberbox/range.html diff --git a/vendor/easyui/demo/numberspinner/basic.html b/vendor/FHC-vendor/easyui/demo/numberspinner/basic.html similarity index 100% rename from vendor/easyui/demo/numberspinner/basic.html rename to vendor/FHC-vendor/easyui/demo/numberspinner/basic.html diff --git a/vendor/easyui/demo/numberspinner/fluid.html b/vendor/FHC-vendor/easyui/demo/numberspinner/fluid.html similarity index 100% rename from vendor/easyui/demo/numberspinner/fluid.html rename to vendor/FHC-vendor/easyui/demo/numberspinner/fluid.html diff --git a/vendor/easyui/demo/numberspinner/increment.html b/vendor/FHC-vendor/easyui/demo/numberspinner/increment.html similarity index 100% rename from vendor/easyui/demo/numberspinner/increment.html rename to vendor/FHC-vendor/easyui/demo/numberspinner/increment.html diff --git a/vendor/easyui/demo/numberspinner/range.html b/vendor/FHC-vendor/easyui/demo/numberspinner/range.html similarity index 100% rename from vendor/easyui/demo/numberspinner/range.html rename to vendor/FHC-vendor/easyui/demo/numberspinner/range.html diff --git a/vendor/easyui/demo/pagination/attaching.html b/vendor/FHC-vendor/easyui/demo/pagination/attaching.html similarity index 100% rename from vendor/easyui/demo/pagination/attaching.html rename to vendor/FHC-vendor/easyui/demo/pagination/attaching.html diff --git a/vendor/easyui/demo/pagination/basic.html b/vendor/FHC-vendor/easyui/demo/pagination/basic.html similarity index 100% rename from vendor/easyui/demo/pagination/basic.html rename to vendor/FHC-vendor/easyui/demo/pagination/basic.html diff --git a/vendor/easyui/demo/pagination/custombuttons.html b/vendor/FHC-vendor/easyui/demo/pagination/custombuttons.html similarity index 100% rename from vendor/easyui/demo/pagination/custombuttons.html rename to vendor/FHC-vendor/easyui/demo/pagination/custombuttons.html diff --git a/vendor/easyui/demo/pagination/layout.html b/vendor/FHC-vendor/easyui/demo/pagination/layout.html similarity index 100% rename from vendor/easyui/demo/pagination/layout.html rename to vendor/FHC-vendor/easyui/demo/pagination/layout.html diff --git a/vendor/easyui/demo/pagination/links.html b/vendor/FHC-vendor/easyui/demo/pagination/links.html similarity index 100% rename from vendor/easyui/demo/pagination/links.html rename to vendor/FHC-vendor/easyui/demo/pagination/links.html diff --git a/vendor/easyui/demo/pagination/simple.html b/vendor/FHC-vendor/easyui/demo/pagination/simple.html similarity index 100% rename from vendor/easyui/demo/pagination/simple.html rename to vendor/FHC-vendor/easyui/demo/pagination/simple.html diff --git a/vendor/easyui/demo/panel/_content.html b/vendor/FHC-vendor/easyui/demo/panel/_content.html similarity index 100% rename from vendor/easyui/demo/panel/_content.html rename to vendor/FHC-vendor/easyui/demo/panel/_content.html diff --git a/vendor/easyui/demo/panel/basic.html b/vendor/FHC-vendor/easyui/demo/panel/basic.html similarity index 100% rename from vendor/easyui/demo/panel/basic.html rename to vendor/FHC-vendor/easyui/demo/panel/basic.html diff --git a/vendor/easyui/demo/panel/customtools.html b/vendor/FHC-vendor/easyui/demo/panel/customtools.html similarity index 100% rename from vendor/easyui/demo/panel/customtools.html rename to vendor/FHC-vendor/easyui/demo/panel/customtools.html diff --git a/vendor/easyui/demo/panel/fluid.html b/vendor/FHC-vendor/easyui/demo/panel/fluid.html similarity index 100% rename from vendor/easyui/demo/panel/fluid.html rename to vendor/FHC-vendor/easyui/demo/panel/fluid.html diff --git a/vendor/easyui/demo/panel/footer.html b/vendor/FHC-vendor/easyui/demo/panel/footer.html similarity index 100% rename from vendor/easyui/demo/panel/footer.html rename to vendor/FHC-vendor/easyui/demo/panel/footer.html diff --git a/vendor/easyui/demo/panel/loadcontent.html b/vendor/FHC-vendor/easyui/demo/panel/loadcontent.html similarity index 100% rename from vendor/easyui/demo/panel/loadcontent.html rename to vendor/FHC-vendor/easyui/demo/panel/loadcontent.html diff --git a/vendor/easyui/demo/panel/nestedpanel.html b/vendor/FHC-vendor/easyui/demo/panel/nestedpanel.html similarity index 100% rename from vendor/easyui/demo/panel/nestedpanel.html rename to vendor/FHC-vendor/easyui/demo/panel/nestedpanel.html diff --git a/vendor/easyui/demo/panel/paneltools.html b/vendor/FHC-vendor/easyui/demo/panel/paneltools.html similarity index 100% rename from vendor/easyui/demo/panel/paneltools.html rename to vendor/FHC-vendor/easyui/demo/panel/paneltools.html diff --git a/vendor/easyui/demo/progressbar/basic.html b/vendor/FHC-vendor/easyui/demo/progressbar/basic.html similarity index 100% rename from vendor/easyui/demo/progressbar/basic.html rename to vendor/FHC-vendor/easyui/demo/progressbar/basic.html diff --git a/vendor/easyui/demo/progressbar/fluid.html b/vendor/FHC-vendor/easyui/demo/progressbar/fluid.html similarity index 100% rename from vendor/easyui/demo/progressbar/fluid.html rename to vendor/FHC-vendor/easyui/demo/progressbar/fluid.html diff --git a/vendor/easyui/demo/propertygrid/basic.html b/vendor/FHC-vendor/easyui/demo/propertygrid/basic.html similarity index 100% rename from vendor/easyui/demo/propertygrid/basic.html rename to vendor/FHC-vendor/easyui/demo/propertygrid/basic.html diff --git a/vendor/easyui/demo/propertygrid/customcolumns.html b/vendor/FHC-vendor/easyui/demo/propertygrid/customcolumns.html similarity index 100% rename from vendor/easyui/demo/propertygrid/customcolumns.html rename to vendor/FHC-vendor/easyui/demo/propertygrid/customcolumns.html diff --git a/vendor/easyui/demo/propertygrid/groupformat.html b/vendor/FHC-vendor/easyui/demo/propertygrid/groupformat.html similarity index 100% rename from vendor/easyui/demo/propertygrid/groupformat.html rename to vendor/FHC-vendor/easyui/demo/propertygrid/groupformat.html diff --git a/vendor/easyui/demo/propertygrid/propertygrid_data1.json b/vendor/FHC-vendor/easyui/demo/propertygrid/propertygrid_data1.json similarity index 100% rename from vendor/easyui/demo/propertygrid/propertygrid_data1.json rename to vendor/FHC-vendor/easyui/demo/propertygrid/propertygrid_data1.json diff --git a/vendor/easyui/demo/resizable/basic.html b/vendor/FHC-vendor/easyui/demo/resizable/basic.html similarity index 100% rename from vendor/easyui/demo/resizable/basic.html rename to vendor/FHC-vendor/easyui/demo/resizable/basic.html diff --git a/vendor/easyui/demo/searchbox/basic.html b/vendor/FHC-vendor/easyui/demo/searchbox/basic.html similarity index 100% rename from vendor/easyui/demo/searchbox/basic.html rename to vendor/FHC-vendor/easyui/demo/searchbox/basic.html diff --git a/vendor/easyui/demo/searchbox/category.html b/vendor/FHC-vendor/easyui/demo/searchbox/category.html similarity index 100% rename from vendor/easyui/demo/searchbox/category.html rename to vendor/FHC-vendor/easyui/demo/searchbox/category.html diff --git a/vendor/easyui/demo/searchbox/fluid.html b/vendor/FHC-vendor/easyui/demo/searchbox/fluid.html similarity index 100% rename from vendor/easyui/demo/searchbox/fluid.html rename to vendor/FHC-vendor/easyui/demo/searchbox/fluid.html diff --git a/vendor/easyui/demo/slider/basic.html b/vendor/FHC-vendor/easyui/demo/slider/basic.html similarity index 100% rename from vendor/easyui/demo/slider/basic.html rename to vendor/FHC-vendor/easyui/demo/slider/basic.html diff --git a/vendor/easyui/demo/slider/fluid.html b/vendor/FHC-vendor/easyui/demo/slider/fluid.html similarity index 100% rename from vendor/easyui/demo/slider/fluid.html rename to vendor/FHC-vendor/easyui/demo/slider/fluid.html diff --git a/vendor/easyui/demo/slider/formattip.html b/vendor/FHC-vendor/easyui/demo/slider/formattip.html similarity index 100% rename from vendor/easyui/demo/slider/formattip.html rename to vendor/FHC-vendor/easyui/demo/slider/formattip.html diff --git a/vendor/easyui/demo/slider/nonlinear.html b/vendor/FHC-vendor/easyui/demo/slider/nonlinear.html similarity index 100% rename from vendor/easyui/demo/slider/nonlinear.html rename to vendor/FHC-vendor/easyui/demo/slider/nonlinear.html diff --git a/vendor/easyui/demo/slider/range.html b/vendor/FHC-vendor/easyui/demo/slider/range.html similarity index 100% rename from vendor/easyui/demo/slider/range.html rename to vendor/FHC-vendor/easyui/demo/slider/range.html diff --git a/vendor/easyui/demo/slider/rule.html b/vendor/FHC-vendor/easyui/demo/slider/rule.html similarity index 100% rename from vendor/easyui/demo/slider/rule.html rename to vendor/FHC-vendor/easyui/demo/slider/rule.html diff --git a/vendor/easyui/demo/slider/vertical.html b/vendor/FHC-vendor/easyui/demo/slider/vertical.html similarity index 100% rename from vendor/easyui/demo/slider/vertical.html rename to vendor/FHC-vendor/easyui/demo/slider/vertical.html diff --git a/vendor/easyui/demo/splitbutton/actions.html b/vendor/FHC-vendor/easyui/demo/splitbutton/actions.html similarity index 100% rename from vendor/easyui/demo/splitbutton/actions.html rename to vendor/FHC-vendor/easyui/demo/splitbutton/actions.html diff --git a/vendor/easyui/demo/splitbutton/basic.html b/vendor/FHC-vendor/easyui/demo/splitbutton/basic.html similarity index 100% rename from vendor/easyui/demo/splitbutton/basic.html rename to vendor/FHC-vendor/easyui/demo/splitbutton/basic.html diff --git a/vendor/easyui/demo/switchbutton/action.html b/vendor/FHC-vendor/easyui/demo/switchbutton/action.html similarity index 100% rename from vendor/easyui/demo/switchbutton/action.html rename to vendor/FHC-vendor/easyui/demo/switchbutton/action.html diff --git a/vendor/easyui/demo/switchbutton/basic.html b/vendor/FHC-vendor/easyui/demo/switchbutton/basic.html similarity index 100% rename from vendor/easyui/demo/switchbutton/basic.html rename to vendor/FHC-vendor/easyui/demo/switchbutton/basic.html diff --git a/vendor/easyui/demo/tabs/_content.html b/vendor/FHC-vendor/easyui/demo/tabs/_content.html similarity index 100% rename from vendor/easyui/demo/tabs/_content.html rename to vendor/FHC-vendor/easyui/demo/tabs/_content.html diff --git a/vendor/easyui/demo/tabs/autoheight.html b/vendor/FHC-vendor/easyui/demo/tabs/autoheight.html similarity index 100% rename from vendor/easyui/demo/tabs/autoheight.html rename to vendor/FHC-vendor/easyui/demo/tabs/autoheight.html diff --git a/vendor/easyui/demo/tabs/basic.html b/vendor/FHC-vendor/easyui/demo/tabs/basic.html similarity index 100% rename from vendor/easyui/demo/tabs/basic.html rename to vendor/FHC-vendor/easyui/demo/tabs/basic.html diff --git a/vendor/easyui/demo/tabs/dropdown.html b/vendor/FHC-vendor/easyui/demo/tabs/dropdown.html similarity index 100% rename from vendor/easyui/demo/tabs/dropdown.html rename to vendor/FHC-vendor/easyui/demo/tabs/dropdown.html diff --git a/vendor/easyui/demo/tabs/fixedwidth.html b/vendor/FHC-vendor/easyui/demo/tabs/fixedwidth.html similarity index 100% rename from vendor/easyui/demo/tabs/fixedwidth.html rename to vendor/FHC-vendor/easyui/demo/tabs/fixedwidth.html diff --git a/vendor/easyui/demo/tabs/fluid.html b/vendor/FHC-vendor/easyui/demo/tabs/fluid.html similarity index 100% rename from vendor/easyui/demo/tabs/fluid.html rename to vendor/FHC-vendor/easyui/demo/tabs/fluid.html diff --git a/vendor/easyui/demo/tabs/hover.html b/vendor/FHC-vendor/easyui/demo/tabs/hover.html similarity index 100% rename from vendor/easyui/demo/tabs/hover.html rename to vendor/FHC-vendor/easyui/demo/tabs/hover.html diff --git a/vendor/easyui/demo/tabs/images/modem.png b/vendor/FHC-vendor/easyui/demo/tabs/images/modem.png similarity index 100% rename from vendor/easyui/demo/tabs/images/modem.png rename to vendor/FHC-vendor/easyui/demo/tabs/images/modem.png diff --git a/vendor/easyui/demo/tabs/images/pda.png b/vendor/FHC-vendor/easyui/demo/tabs/images/pda.png similarity index 100% rename from vendor/easyui/demo/tabs/images/pda.png rename to vendor/FHC-vendor/easyui/demo/tabs/images/pda.png diff --git a/vendor/easyui/demo/tabs/images/scanner.png b/vendor/FHC-vendor/easyui/demo/tabs/images/scanner.png similarity index 100% rename from vendor/easyui/demo/tabs/images/scanner.png rename to vendor/FHC-vendor/easyui/demo/tabs/images/scanner.png diff --git a/vendor/easyui/demo/tabs/images/tablet.png b/vendor/FHC-vendor/easyui/demo/tabs/images/tablet.png similarity index 100% rename from vendor/easyui/demo/tabs/images/tablet.png rename to vendor/FHC-vendor/easyui/demo/tabs/images/tablet.png diff --git a/vendor/easyui/demo/tabs/nestedtabs.html b/vendor/FHC-vendor/easyui/demo/tabs/nestedtabs.html similarity index 100% rename from vendor/easyui/demo/tabs/nestedtabs.html rename to vendor/FHC-vendor/easyui/demo/tabs/nestedtabs.html diff --git a/vendor/easyui/demo/tabs/striptools.html b/vendor/FHC-vendor/easyui/demo/tabs/striptools.html similarity index 100% rename from vendor/easyui/demo/tabs/striptools.html rename to vendor/FHC-vendor/easyui/demo/tabs/striptools.html diff --git a/vendor/easyui/demo/tabs/style.html b/vendor/FHC-vendor/easyui/demo/tabs/style.html similarity index 100% rename from vendor/easyui/demo/tabs/style.html rename to vendor/FHC-vendor/easyui/demo/tabs/style.html diff --git a/vendor/easyui/demo/tabs/tabimage.html b/vendor/FHC-vendor/easyui/demo/tabs/tabimage.html similarity index 100% rename from vendor/easyui/demo/tabs/tabimage.html rename to vendor/FHC-vendor/easyui/demo/tabs/tabimage.html diff --git a/vendor/easyui/demo/tabs/tabposition.html b/vendor/FHC-vendor/easyui/demo/tabs/tabposition.html similarity index 100% rename from vendor/easyui/demo/tabs/tabposition.html rename to vendor/FHC-vendor/easyui/demo/tabs/tabposition.html diff --git a/vendor/easyui/demo/tabs/tabstools.html b/vendor/FHC-vendor/easyui/demo/tabs/tabstools.html similarity index 100% rename from vendor/easyui/demo/tabs/tabstools.html rename to vendor/FHC-vendor/easyui/demo/tabs/tabstools.html diff --git a/vendor/easyui/demo/tabs/tree_data1.json b/vendor/FHC-vendor/easyui/demo/tabs/tree_data1.json similarity index 100% rename from vendor/easyui/demo/tabs/tree_data1.json rename to vendor/FHC-vendor/easyui/demo/tabs/tree_data1.json diff --git a/vendor/easyui/demo/textbox/basic.html b/vendor/FHC-vendor/easyui/demo/textbox/basic.html similarity index 100% rename from vendor/easyui/demo/textbox/basic.html rename to vendor/FHC-vendor/easyui/demo/textbox/basic.html diff --git a/vendor/easyui/demo/textbox/button.html b/vendor/FHC-vendor/easyui/demo/textbox/button.html similarity index 100% rename from vendor/easyui/demo/textbox/button.html rename to vendor/FHC-vendor/easyui/demo/textbox/button.html diff --git a/vendor/easyui/demo/textbox/clearicon.html b/vendor/FHC-vendor/easyui/demo/textbox/clearicon.html similarity index 100% rename from vendor/easyui/demo/textbox/clearicon.html rename to vendor/FHC-vendor/easyui/demo/textbox/clearicon.html diff --git a/vendor/easyui/demo/textbox/custom.html b/vendor/FHC-vendor/easyui/demo/textbox/custom.html similarity index 100% rename from vendor/easyui/demo/textbox/custom.html rename to vendor/FHC-vendor/easyui/demo/textbox/custom.html diff --git a/vendor/easyui/demo/textbox/fluid.html b/vendor/FHC-vendor/easyui/demo/textbox/fluid.html similarity index 100% rename from vendor/easyui/demo/textbox/fluid.html rename to vendor/FHC-vendor/easyui/demo/textbox/fluid.html diff --git a/vendor/easyui/demo/textbox/icons.html b/vendor/FHC-vendor/easyui/demo/textbox/icons.html similarity index 100% rename from vendor/easyui/demo/textbox/icons.html rename to vendor/FHC-vendor/easyui/demo/textbox/icons.html diff --git a/vendor/easyui/demo/textbox/multiline.html b/vendor/FHC-vendor/easyui/demo/textbox/multiline.html similarity index 100% rename from vendor/easyui/demo/textbox/multiline.html rename to vendor/FHC-vendor/easyui/demo/textbox/multiline.html diff --git a/vendor/easyui/demo/textbox/size.html b/vendor/FHC-vendor/easyui/demo/textbox/size.html similarity index 100% rename from vendor/easyui/demo/textbox/size.html rename to vendor/FHC-vendor/easyui/demo/textbox/size.html diff --git a/vendor/easyui/demo/timespinner/actions.html b/vendor/FHC-vendor/easyui/demo/timespinner/actions.html similarity index 100% rename from vendor/easyui/demo/timespinner/actions.html rename to vendor/FHC-vendor/easyui/demo/timespinner/actions.html diff --git a/vendor/easyui/demo/timespinner/basic.html b/vendor/FHC-vendor/easyui/demo/timespinner/basic.html similarity index 100% rename from vendor/easyui/demo/timespinner/basic.html rename to vendor/FHC-vendor/easyui/demo/timespinner/basic.html diff --git a/vendor/easyui/demo/timespinner/fluid.html b/vendor/FHC-vendor/easyui/demo/timespinner/fluid.html similarity index 100% rename from vendor/easyui/demo/timespinner/fluid.html rename to vendor/FHC-vendor/easyui/demo/timespinner/fluid.html diff --git a/vendor/easyui/demo/timespinner/range.html b/vendor/FHC-vendor/easyui/demo/timespinner/range.html similarity index 100% rename from vendor/easyui/demo/timespinner/range.html rename to vendor/FHC-vendor/easyui/demo/timespinner/range.html diff --git a/vendor/easyui/demo/tooltip/_content.html b/vendor/FHC-vendor/easyui/demo/tooltip/_content.html similarity index 100% rename from vendor/easyui/demo/tooltip/_content.html rename to vendor/FHC-vendor/easyui/demo/tooltip/_content.html diff --git a/vendor/easyui/demo/tooltip/_dialog.html b/vendor/FHC-vendor/easyui/demo/tooltip/_dialog.html similarity index 100% rename from vendor/easyui/demo/tooltip/_dialog.html rename to vendor/FHC-vendor/easyui/demo/tooltip/_dialog.html diff --git a/vendor/easyui/demo/tooltip/ajax.html b/vendor/FHC-vendor/easyui/demo/tooltip/ajax.html similarity index 100% rename from vendor/easyui/demo/tooltip/ajax.html rename to vendor/FHC-vendor/easyui/demo/tooltip/ajax.html diff --git a/vendor/easyui/demo/tooltip/basic.html b/vendor/FHC-vendor/easyui/demo/tooltip/basic.html similarity index 100% rename from vendor/easyui/demo/tooltip/basic.html rename to vendor/FHC-vendor/easyui/demo/tooltip/basic.html diff --git a/vendor/easyui/demo/tooltip/customcontent.html b/vendor/FHC-vendor/easyui/demo/tooltip/customcontent.html similarity index 100% rename from vendor/easyui/demo/tooltip/customcontent.html rename to vendor/FHC-vendor/easyui/demo/tooltip/customcontent.html diff --git a/vendor/easyui/demo/tooltip/customstyle.html b/vendor/FHC-vendor/easyui/demo/tooltip/customstyle.html similarity index 100% rename from vendor/easyui/demo/tooltip/customstyle.html rename to vendor/FHC-vendor/easyui/demo/tooltip/customstyle.html diff --git a/vendor/easyui/demo/tooltip/position.html b/vendor/FHC-vendor/easyui/demo/tooltip/position.html similarity index 100% rename from vendor/easyui/demo/tooltip/position.html rename to vendor/FHC-vendor/easyui/demo/tooltip/position.html diff --git a/vendor/easyui/demo/tooltip/toolbar.html b/vendor/FHC-vendor/easyui/demo/tooltip/toolbar.html similarity index 100% rename from vendor/easyui/demo/tooltip/toolbar.html rename to vendor/FHC-vendor/easyui/demo/tooltip/toolbar.html diff --git a/vendor/easyui/demo/tooltip/tooltipdialog.html b/vendor/FHC-vendor/easyui/demo/tooltip/tooltipdialog.html similarity index 100% rename from vendor/easyui/demo/tooltip/tooltipdialog.html rename to vendor/FHC-vendor/easyui/demo/tooltip/tooltipdialog.html diff --git a/vendor/easyui/demo/tree/actions.html b/vendor/FHC-vendor/easyui/demo/tree/actions.html similarity index 100% rename from vendor/easyui/demo/tree/actions.html rename to vendor/FHC-vendor/easyui/demo/tree/actions.html diff --git a/vendor/easyui/demo/tree/animation.html b/vendor/FHC-vendor/easyui/demo/tree/animation.html similarity index 100% rename from vendor/easyui/demo/tree/animation.html rename to vendor/FHC-vendor/easyui/demo/tree/animation.html diff --git a/vendor/easyui/demo/tree/basic.html b/vendor/FHC-vendor/easyui/demo/tree/basic.html similarity index 100% rename from vendor/easyui/demo/tree/basic.html rename to vendor/FHC-vendor/easyui/demo/tree/basic.html diff --git a/vendor/easyui/demo/tree/checkbox.html b/vendor/FHC-vendor/easyui/demo/tree/checkbox.html similarity index 100% rename from vendor/easyui/demo/tree/checkbox.html rename to vendor/FHC-vendor/easyui/demo/tree/checkbox.html diff --git a/vendor/easyui/demo/tree/contextmenu.html b/vendor/FHC-vendor/easyui/demo/tree/contextmenu.html similarity index 100% rename from vendor/easyui/demo/tree/contextmenu.html rename to vendor/FHC-vendor/easyui/demo/tree/contextmenu.html diff --git a/vendor/easyui/demo/tree/dnd.html b/vendor/FHC-vendor/easyui/demo/tree/dnd.html similarity index 100% rename from vendor/easyui/demo/tree/dnd.html rename to vendor/FHC-vendor/easyui/demo/tree/dnd.html diff --git a/vendor/easyui/demo/tree/editable.html b/vendor/FHC-vendor/easyui/demo/tree/editable.html similarity index 100% rename from vendor/easyui/demo/tree/editable.html rename to vendor/FHC-vendor/easyui/demo/tree/editable.html diff --git a/vendor/easyui/demo/tree/formatting.html b/vendor/FHC-vendor/easyui/demo/tree/formatting.html similarity index 100% rename from vendor/easyui/demo/tree/formatting.html rename to vendor/FHC-vendor/easyui/demo/tree/formatting.html diff --git a/vendor/easyui/demo/tree/icons.html b/vendor/FHC-vendor/easyui/demo/tree/icons.html similarity index 100% rename from vendor/easyui/demo/tree/icons.html rename to vendor/FHC-vendor/easyui/demo/tree/icons.html diff --git a/vendor/easyui/demo/tree/lazyload.html b/vendor/FHC-vendor/easyui/demo/tree/lazyload.html similarity index 100% rename from vendor/easyui/demo/tree/lazyload.html rename to vendor/FHC-vendor/easyui/demo/tree/lazyload.html diff --git a/vendor/easyui/demo/tree/lines.html b/vendor/FHC-vendor/easyui/demo/tree/lines.html similarity index 100% rename from vendor/easyui/demo/tree/lines.html rename to vendor/FHC-vendor/easyui/demo/tree/lines.html diff --git a/vendor/easyui/demo/tree/tree_data1.json b/vendor/FHC-vendor/easyui/demo/tree/tree_data1.json similarity index 100% rename from vendor/easyui/demo/tree/tree_data1.json rename to vendor/FHC-vendor/easyui/demo/tree/tree_data1.json diff --git a/vendor/easyui/demo/tree/tree_data2.json b/vendor/FHC-vendor/easyui/demo/tree/tree_data2.json similarity index 100% rename from vendor/easyui/demo/tree/tree_data2.json rename to vendor/FHC-vendor/easyui/demo/tree/tree_data2.json diff --git a/vendor/easyui/demo/treegrid/actions.html b/vendor/FHC-vendor/easyui/demo/treegrid/actions.html similarity index 100% rename from vendor/easyui/demo/treegrid/actions.html rename to vendor/FHC-vendor/easyui/demo/treegrid/actions.html diff --git a/vendor/easyui/demo/treegrid/basic.html b/vendor/FHC-vendor/easyui/demo/treegrid/basic.html similarity index 100% rename from vendor/easyui/demo/treegrid/basic.html rename to vendor/FHC-vendor/easyui/demo/treegrid/basic.html diff --git a/vendor/easyui/demo/treegrid/clientpagination.html b/vendor/FHC-vendor/easyui/demo/treegrid/clientpagination.html similarity index 100% rename from vendor/easyui/demo/treegrid/clientpagination.html rename to vendor/FHC-vendor/easyui/demo/treegrid/clientpagination.html diff --git a/vendor/easyui/demo/treegrid/contextmenu.html b/vendor/FHC-vendor/easyui/demo/treegrid/contextmenu.html similarity index 100% rename from vendor/easyui/demo/treegrid/contextmenu.html rename to vendor/FHC-vendor/easyui/demo/treegrid/contextmenu.html diff --git a/vendor/easyui/demo/treegrid/editable.html b/vendor/FHC-vendor/easyui/demo/treegrid/editable.html similarity index 100% rename from vendor/easyui/demo/treegrid/editable.html rename to vendor/FHC-vendor/easyui/demo/treegrid/editable.html diff --git a/vendor/easyui/demo/treegrid/fluid.html b/vendor/FHC-vendor/easyui/demo/treegrid/fluid.html similarity index 100% rename from vendor/easyui/demo/treegrid/fluid.html rename to vendor/FHC-vendor/easyui/demo/treegrid/fluid.html diff --git a/vendor/easyui/demo/treegrid/footer.html b/vendor/FHC-vendor/easyui/demo/treegrid/footer.html similarity index 100% rename from vendor/easyui/demo/treegrid/footer.html rename to vendor/FHC-vendor/easyui/demo/treegrid/footer.html diff --git a/vendor/easyui/demo/treegrid/lines.html b/vendor/FHC-vendor/easyui/demo/treegrid/lines.html similarity index 100% rename from vendor/easyui/demo/treegrid/lines.html rename to vendor/FHC-vendor/easyui/demo/treegrid/lines.html diff --git a/vendor/easyui/demo/treegrid/reports.html b/vendor/FHC-vendor/easyui/demo/treegrid/reports.html similarity index 100% rename from vendor/easyui/demo/treegrid/reports.html rename to vendor/FHC-vendor/easyui/demo/treegrid/reports.html diff --git a/vendor/easyui/demo/treegrid/treegrid_data1.json b/vendor/FHC-vendor/easyui/demo/treegrid/treegrid_data1.json similarity index 100% rename from vendor/easyui/demo/treegrid/treegrid_data1.json rename to vendor/FHC-vendor/easyui/demo/treegrid/treegrid_data1.json diff --git a/vendor/easyui/demo/treegrid/treegrid_data2.json b/vendor/FHC-vendor/easyui/demo/treegrid/treegrid_data2.json similarity index 100% rename from vendor/easyui/demo/treegrid/treegrid_data2.json rename to vendor/FHC-vendor/easyui/demo/treegrid/treegrid_data2.json diff --git a/vendor/easyui/demo/treegrid/treegrid_data3.json b/vendor/FHC-vendor/easyui/demo/treegrid/treegrid_data3.json similarity index 100% rename from vendor/easyui/demo/treegrid/treegrid_data3.json rename to vendor/FHC-vendor/easyui/demo/treegrid/treegrid_data3.json diff --git a/vendor/easyui/demo/validatebox/basic.html b/vendor/FHC-vendor/easyui/demo/validatebox/basic.html similarity index 100% rename from vendor/easyui/demo/validatebox/basic.html rename to vendor/FHC-vendor/easyui/demo/validatebox/basic.html diff --git a/vendor/easyui/demo/validatebox/customtooltip.html b/vendor/FHC-vendor/easyui/demo/validatebox/customtooltip.html similarity index 100% rename from vendor/easyui/demo/validatebox/customtooltip.html rename to vendor/FHC-vendor/easyui/demo/validatebox/customtooltip.html diff --git a/vendor/easyui/demo/validatebox/validateonblur.html b/vendor/FHC-vendor/easyui/demo/validatebox/validateonblur.html similarity index 100% rename from vendor/easyui/demo/validatebox/validateonblur.html rename to vendor/FHC-vendor/easyui/demo/validatebox/validateonblur.html diff --git a/vendor/easyui/demo/window/basic.html b/vendor/FHC-vendor/easyui/demo/window/basic.html similarity index 100% rename from vendor/easyui/demo/window/basic.html rename to vendor/FHC-vendor/easyui/demo/window/basic.html diff --git a/vendor/easyui/demo/window/customtools.html b/vendor/FHC-vendor/easyui/demo/window/customtools.html similarity index 100% rename from vendor/easyui/demo/window/customtools.html rename to vendor/FHC-vendor/easyui/demo/window/customtools.html diff --git a/vendor/easyui/demo/window/fluid.html b/vendor/FHC-vendor/easyui/demo/window/fluid.html similarity index 100% rename from vendor/easyui/demo/window/fluid.html rename to vendor/FHC-vendor/easyui/demo/window/fluid.html diff --git a/vendor/easyui/demo/window/footer.html b/vendor/FHC-vendor/easyui/demo/window/footer.html similarity index 100% rename from vendor/easyui/demo/window/footer.html rename to vendor/FHC-vendor/easyui/demo/window/footer.html diff --git a/vendor/easyui/demo/window/inlinewindow.html b/vendor/FHC-vendor/easyui/demo/window/inlinewindow.html similarity index 100% rename from vendor/easyui/demo/window/inlinewindow.html rename to vendor/FHC-vendor/easyui/demo/window/inlinewindow.html diff --git a/vendor/easyui/demo/window/modalwindow.html b/vendor/FHC-vendor/easyui/demo/window/modalwindow.html similarity index 100% rename from vendor/easyui/demo/window/modalwindow.html rename to vendor/FHC-vendor/easyui/demo/window/modalwindow.html diff --git a/vendor/easyui/demo/window/windowlayout.html b/vendor/FHC-vendor/easyui/demo/window/windowlayout.html similarity index 100% rename from vendor/easyui/demo/window/windowlayout.html rename to vendor/FHC-vendor/easyui/demo/window/windowlayout.html diff --git a/vendor/easyui/easyloader.js b/vendor/FHC-vendor/easyui/easyloader.js similarity index 100% rename from vendor/easyui/easyloader.js rename to vendor/FHC-vendor/easyui/easyloader.js diff --git a/vendor/easyui/jquery.easyui.min.js b/vendor/FHC-vendor/easyui/jquery.easyui.min.js similarity index 100% rename from vendor/easyui/jquery.easyui.min.js rename to vendor/FHC-vendor/easyui/jquery.easyui.min.js diff --git a/vendor/easyui/jquery.easyui.mobile.js b/vendor/FHC-vendor/easyui/jquery.easyui.mobile.js similarity index 100% rename from vendor/easyui/jquery.easyui.mobile.js rename to vendor/FHC-vendor/easyui/jquery.easyui.mobile.js diff --git a/vendor/easyui/jquery.min.js b/vendor/FHC-vendor/easyui/jquery.min.js similarity index 100% rename from vendor/easyui/jquery.min.js rename to vendor/FHC-vendor/easyui/jquery.min.js diff --git a/vendor/easyui/license_freeware.txt b/vendor/FHC-vendor/easyui/license_freeware.txt similarity index 100% rename from vendor/easyui/license_freeware.txt rename to vendor/FHC-vendor/easyui/license_freeware.txt diff --git a/vendor/easyui/locale/easyui-lang-af.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-af.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-af.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-af.js diff --git a/vendor/easyui/locale/easyui-lang-am.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-am.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-am.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-am.js diff --git a/vendor/easyui/locale/easyui-lang-ar.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-ar.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-ar.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-ar.js diff --git a/vendor/easyui/locale/easyui-lang-bg.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-bg.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-bg.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-bg.js diff --git a/vendor/easyui/locale/easyui-lang-ca.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-ca.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-ca.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-ca.js diff --git a/vendor/easyui/locale/easyui-lang-cs.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-cs.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-cs.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-cs.js diff --git a/vendor/easyui/locale/easyui-lang-cz.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-cz.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-cz.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-cz.js diff --git a/vendor/easyui/locale/easyui-lang-da.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-da.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-da.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-da.js diff --git a/vendor/easyui/locale/easyui-lang-de.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-de.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-de.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-de.js diff --git a/vendor/easyui/locale/easyui-lang-el.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-el.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-el.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-el.js diff --git a/vendor/easyui/locale/easyui-lang-en.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-en.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-en.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-en.js diff --git a/vendor/easyui/locale/easyui-lang-es.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-es.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-es.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-es.js diff --git a/vendor/easyui/locale/easyui-lang-fr.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-fr.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-fr.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-fr.js diff --git a/vendor/easyui/locale/easyui-lang-it.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-it.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-it.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-it.js diff --git a/vendor/easyui/locale/easyui-lang-jp.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-jp.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-jp.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-jp.js diff --git a/vendor/easyui/locale/easyui-lang-nl.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-nl.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-nl.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-nl.js diff --git a/vendor/easyui/locale/easyui-lang-pl.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-pl.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-pl.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-pl.js diff --git a/vendor/easyui/locale/easyui-lang-pt_BR.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-pt_BR.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-pt_BR.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-pt_BR.js diff --git a/vendor/easyui/locale/easyui-lang-ru.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-ru.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-ru.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-ru.js diff --git a/vendor/easyui/locale/easyui-lang-sv_SE.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-sv_SE.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-sv_SE.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-sv_SE.js diff --git a/vendor/easyui/locale/easyui-lang-tr.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-tr.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-tr.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-tr.js diff --git a/vendor/easyui/locale/easyui-lang-zh_CN.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-zh_CN.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-zh_CN.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-zh_CN.js diff --git a/vendor/easyui/locale/easyui-lang-zh_TW.js b/vendor/FHC-vendor/easyui/locale/easyui-lang-zh_TW.js similarity index 100% rename from vendor/easyui/locale/easyui-lang-zh_TW.js rename to vendor/FHC-vendor/easyui/locale/easyui-lang-zh_TW.js diff --git a/vendor/easyui/plugins/jquery.accordion.js b/vendor/FHC-vendor/easyui/plugins/jquery.accordion.js similarity index 100% rename from vendor/easyui/plugins/jquery.accordion.js rename to vendor/FHC-vendor/easyui/plugins/jquery.accordion.js diff --git a/vendor/easyui/plugins/jquery.calendar.js b/vendor/FHC-vendor/easyui/plugins/jquery.calendar.js similarity index 100% rename from vendor/easyui/plugins/jquery.calendar.js rename to vendor/FHC-vendor/easyui/plugins/jquery.calendar.js diff --git a/vendor/easyui/plugins/jquery.combo.js b/vendor/FHC-vendor/easyui/plugins/jquery.combo.js similarity index 100% rename from vendor/easyui/plugins/jquery.combo.js rename to vendor/FHC-vendor/easyui/plugins/jquery.combo.js diff --git a/vendor/easyui/plugins/jquery.combobox.js b/vendor/FHC-vendor/easyui/plugins/jquery.combobox.js similarity index 100% rename from vendor/easyui/plugins/jquery.combobox.js rename to vendor/FHC-vendor/easyui/plugins/jquery.combobox.js diff --git a/vendor/easyui/plugins/jquery.combogrid.js b/vendor/FHC-vendor/easyui/plugins/jquery.combogrid.js similarity index 100% rename from vendor/easyui/plugins/jquery.combogrid.js rename to vendor/FHC-vendor/easyui/plugins/jquery.combogrid.js diff --git a/vendor/easyui/plugins/jquery.combotree.js b/vendor/FHC-vendor/easyui/plugins/jquery.combotree.js similarity index 100% rename from vendor/easyui/plugins/jquery.combotree.js rename to vendor/FHC-vendor/easyui/plugins/jquery.combotree.js diff --git a/vendor/easyui/plugins/jquery.datagrid.js b/vendor/FHC-vendor/easyui/plugins/jquery.datagrid.js similarity index 100% rename from vendor/easyui/plugins/jquery.datagrid.js rename to vendor/FHC-vendor/easyui/plugins/jquery.datagrid.js diff --git a/vendor/easyui/plugins/jquery.datalist.js b/vendor/FHC-vendor/easyui/plugins/jquery.datalist.js similarity index 100% rename from vendor/easyui/plugins/jquery.datalist.js rename to vendor/FHC-vendor/easyui/plugins/jquery.datalist.js diff --git a/vendor/easyui/plugins/jquery.datebox.js b/vendor/FHC-vendor/easyui/plugins/jquery.datebox.js similarity index 100% rename from vendor/easyui/plugins/jquery.datebox.js rename to vendor/FHC-vendor/easyui/plugins/jquery.datebox.js diff --git a/vendor/easyui/plugins/jquery.datetimebox.js b/vendor/FHC-vendor/easyui/plugins/jquery.datetimebox.js similarity index 100% rename from vendor/easyui/plugins/jquery.datetimebox.js rename to vendor/FHC-vendor/easyui/plugins/jquery.datetimebox.js diff --git a/vendor/easyui/plugins/jquery.datetimespinner.js b/vendor/FHC-vendor/easyui/plugins/jquery.datetimespinner.js similarity index 100% rename from vendor/easyui/plugins/jquery.datetimespinner.js rename to vendor/FHC-vendor/easyui/plugins/jquery.datetimespinner.js diff --git a/vendor/easyui/plugins/jquery.dialog.js b/vendor/FHC-vendor/easyui/plugins/jquery.dialog.js similarity index 100% rename from vendor/easyui/plugins/jquery.dialog.js rename to vendor/FHC-vendor/easyui/plugins/jquery.dialog.js diff --git a/vendor/easyui/plugins/jquery.draggable.js b/vendor/FHC-vendor/easyui/plugins/jquery.draggable.js similarity index 100% rename from vendor/easyui/plugins/jquery.draggable.js rename to vendor/FHC-vendor/easyui/plugins/jquery.draggable.js diff --git a/vendor/easyui/plugins/jquery.droppable.js b/vendor/FHC-vendor/easyui/plugins/jquery.droppable.js similarity index 100% rename from vendor/easyui/plugins/jquery.droppable.js rename to vendor/FHC-vendor/easyui/plugins/jquery.droppable.js diff --git a/vendor/easyui/plugins/jquery.filebox.js b/vendor/FHC-vendor/easyui/plugins/jquery.filebox.js similarity index 100% rename from vendor/easyui/plugins/jquery.filebox.js rename to vendor/FHC-vendor/easyui/plugins/jquery.filebox.js diff --git a/vendor/easyui/plugins/jquery.form.js b/vendor/FHC-vendor/easyui/plugins/jquery.form.js similarity index 100% rename from vendor/easyui/plugins/jquery.form.js rename to vendor/FHC-vendor/easyui/plugins/jquery.form.js diff --git a/vendor/easyui/plugins/jquery.layout.js b/vendor/FHC-vendor/easyui/plugins/jquery.layout.js similarity index 100% rename from vendor/easyui/plugins/jquery.layout.js rename to vendor/FHC-vendor/easyui/plugins/jquery.layout.js diff --git a/vendor/easyui/plugins/jquery.linkbutton.js b/vendor/FHC-vendor/easyui/plugins/jquery.linkbutton.js similarity index 100% rename from vendor/easyui/plugins/jquery.linkbutton.js rename to vendor/FHC-vendor/easyui/plugins/jquery.linkbutton.js diff --git a/vendor/easyui/plugins/jquery.menu.js b/vendor/FHC-vendor/easyui/plugins/jquery.menu.js similarity index 100% rename from vendor/easyui/plugins/jquery.menu.js rename to vendor/FHC-vendor/easyui/plugins/jquery.menu.js diff --git a/vendor/easyui/plugins/jquery.menubutton.js b/vendor/FHC-vendor/easyui/plugins/jquery.menubutton.js similarity index 100% rename from vendor/easyui/plugins/jquery.menubutton.js rename to vendor/FHC-vendor/easyui/plugins/jquery.menubutton.js diff --git a/vendor/easyui/plugins/jquery.messager.js b/vendor/FHC-vendor/easyui/plugins/jquery.messager.js similarity index 100% rename from vendor/easyui/plugins/jquery.messager.js rename to vendor/FHC-vendor/easyui/plugins/jquery.messager.js diff --git a/vendor/easyui/plugins/jquery.mobile.js b/vendor/FHC-vendor/easyui/plugins/jquery.mobile.js similarity index 100% rename from vendor/easyui/plugins/jquery.mobile.js rename to vendor/FHC-vendor/easyui/plugins/jquery.mobile.js diff --git a/vendor/easyui/plugins/jquery.numberbox.js b/vendor/FHC-vendor/easyui/plugins/jquery.numberbox.js similarity index 100% rename from vendor/easyui/plugins/jquery.numberbox.js rename to vendor/FHC-vendor/easyui/plugins/jquery.numberbox.js diff --git a/vendor/easyui/plugins/jquery.numberspinner.js b/vendor/FHC-vendor/easyui/plugins/jquery.numberspinner.js similarity index 100% rename from vendor/easyui/plugins/jquery.numberspinner.js rename to vendor/FHC-vendor/easyui/plugins/jquery.numberspinner.js diff --git a/vendor/easyui/plugins/jquery.pagination.js b/vendor/FHC-vendor/easyui/plugins/jquery.pagination.js similarity index 100% rename from vendor/easyui/plugins/jquery.pagination.js rename to vendor/FHC-vendor/easyui/plugins/jquery.pagination.js diff --git a/vendor/easyui/plugins/jquery.panel.js b/vendor/FHC-vendor/easyui/plugins/jquery.panel.js similarity index 100% rename from vendor/easyui/plugins/jquery.panel.js rename to vendor/FHC-vendor/easyui/plugins/jquery.panel.js diff --git a/vendor/easyui/plugins/jquery.parser.js b/vendor/FHC-vendor/easyui/plugins/jquery.parser.js similarity index 100% rename from vendor/easyui/plugins/jquery.parser.js rename to vendor/FHC-vendor/easyui/plugins/jquery.parser.js diff --git a/vendor/easyui/plugins/jquery.progressbar.js b/vendor/FHC-vendor/easyui/plugins/jquery.progressbar.js similarity index 100% rename from vendor/easyui/plugins/jquery.progressbar.js rename to vendor/FHC-vendor/easyui/plugins/jquery.progressbar.js diff --git a/vendor/easyui/plugins/jquery.propertygrid.js b/vendor/FHC-vendor/easyui/plugins/jquery.propertygrid.js similarity index 100% rename from vendor/easyui/plugins/jquery.propertygrid.js rename to vendor/FHC-vendor/easyui/plugins/jquery.propertygrid.js diff --git a/vendor/easyui/plugins/jquery.resizable.js b/vendor/FHC-vendor/easyui/plugins/jquery.resizable.js similarity index 100% rename from vendor/easyui/plugins/jquery.resizable.js rename to vendor/FHC-vendor/easyui/plugins/jquery.resizable.js diff --git a/vendor/easyui/plugins/jquery.searchbox.js b/vendor/FHC-vendor/easyui/plugins/jquery.searchbox.js similarity index 100% rename from vendor/easyui/plugins/jquery.searchbox.js rename to vendor/FHC-vendor/easyui/plugins/jquery.searchbox.js diff --git a/vendor/easyui/plugins/jquery.slider.js b/vendor/FHC-vendor/easyui/plugins/jquery.slider.js similarity index 100% rename from vendor/easyui/plugins/jquery.slider.js rename to vendor/FHC-vendor/easyui/plugins/jquery.slider.js diff --git a/vendor/easyui/plugins/jquery.spinner.js b/vendor/FHC-vendor/easyui/plugins/jquery.spinner.js similarity index 100% rename from vendor/easyui/plugins/jquery.spinner.js rename to vendor/FHC-vendor/easyui/plugins/jquery.spinner.js diff --git a/vendor/easyui/plugins/jquery.splitbutton.js b/vendor/FHC-vendor/easyui/plugins/jquery.splitbutton.js similarity index 100% rename from vendor/easyui/plugins/jquery.splitbutton.js rename to vendor/FHC-vendor/easyui/plugins/jquery.splitbutton.js diff --git a/vendor/easyui/plugins/jquery.switchbutton.js b/vendor/FHC-vendor/easyui/plugins/jquery.switchbutton.js similarity index 100% rename from vendor/easyui/plugins/jquery.switchbutton.js rename to vendor/FHC-vendor/easyui/plugins/jquery.switchbutton.js diff --git a/vendor/easyui/plugins/jquery.tabs.js b/vendor/FHC-vendor/easyui/plugins/jquery.tabs.js similarity index 100% rename from vendor/easyui/plugins/jquery.tabs.js rename to vendor/FHC-vendor/easyui/plugins/jquery.tabs.js diff --git a/vendor/easyui/plugins/jquery.textbox.js b/vendor/FHC-vendor/easyui/plugins/jquery.textbox.js similarity index 100% rename from vendor/easyui/plugins/jquery.textbox.js rename to vendor/FHC-vendor/easyui/plugins/jquery.textbox.js diff --git a/vendor/easyui/plugins/jquery.timespinner.js b/vendor/FHC-vendor/easyui/plugins/jquery.timespinner.js similarity index 100% rename from vendor/easyui/plugins/jquery.timespinner.js rename to vendor/FHC-vendor/easyui/plugins/jquery.timespinner.js diff --git a/vendor/easyui/plugins/jquery.tooltip.js b/vendor/FHC-vendor/easyui/plugins/jquery.tooltip.js similarity index 100% rename from vendor/easyui/plugins/jquery.tooltip.js rename to vendor/FHC-vendor/easyui/plugins/jquery.tooltip.js diff --git a/vendor/easyui/plugins/jquery.tree.js b/vendor/FHC-vendor/easyui/plugins/jquery.tree.js similarity index 100% rename from vendor/easyui/plugins/jquery.tree.js rename to vendor/FHC-vendor/easyui/plugins/jquery.tree.js diff --git a/vendor/easyui/plugins/jquery.treegrid.js b/vendor/FHC-vendor/easyui/plugins/jquery.treegrid.js similarity index 100% rename from vendor/easyui/plugins/jquery.treegrid.js rename to vendor/FHC-vendor/easyui/plugins/jquery.treegrid.js diff --git a/vendor/easyui/plugins/jquery.validatebox.js b/vendor/FHC-vendor/easyui/plugins/jquery.validatebox.js similarity index 100% rename from vendor/easyui/plugins/jquery.validatebox.js rename to vendor/FHC-vendor/easyui/plugins/jquery.validatebox.js diff --git a/vendor/easyui/plugins/jquery.window.js b/vendor/FHC-vendor/easyui/plugins/jquery.window.js similarity index 100% rename from vendor/easyui/plugins/jquery.window.js rename to vendor/FHC-vendor/easyui/plugins/jquery.window.js diff --git a/vendor/easyui/readme.txt b/vendor/FHC-vendor/easyui/readme.txt similarity index 100% rename from vendor/easyui/readme.txt rename to vendor/FHC-vendor/easyui/readme.txt diff --git a/vendor/easyui/src/easyloader.js b/vendor/FHC-vendor/easyui/src/easyloader.js similarity index 100% rename from vendor/easyui/src/easyloader.js rename to vendor/FHC-vendor/easyui/src/easyloader.js diff --git a/vendor/easyui/src/jquery.accordion.js b/vendor/FHC-vendor/easyui/src/jquery.accordion.js similarity index 100% rename from vendor/easyui/src/jquery.accordion.js rename to vendor/FHC-vendor/easyui/src/jquery.accordion.js diff --git a/vendor/easyui/src/jquery.calendar.js b/vendor/FHC-vendor/easyui/src/jquery.calendar.js similarity index 100% rename from vendor/easyui/src/jquery.calendar.js rename to vendor/FHC-vendor/easyui/src/jquery.calendar.js diff --git a/vendor/easyui/src/jquery.combobox.js b/vendor/FHC-vendor/easyui/src/jquery.combobox.js similarity index 100% rename from vendor/easyui/src/jquery.combobox.js rename to vendor/FHC-vendor/easyui/src/jquery.combobox.js diff --git a/vendor/easyui/src/jquery.datebox.js b/vendor/FHC-vendor/easyui/src/jquery.datebox.js similarity index 100% rename from vendor/easyui/src/jquery.datebox.js rename to vendor/FHC-vendor/easyui/src/jquery.datebox.js diff --git a/vendor/easyui/src/jquery.draggable.js b/vendor/FHC-vendor/easyui/src/jquery.draggable.js similarity index 100% rename from vendor/easyui/src/jquery.draggable.js rename to vendor/FHC-vendor/easyui/src/jquery.draggable.js diff --git a/vendor/easyui/src/jquery.droppable.js b/vendor/FHC-vendor/easyui/src/jquery.droppable.js similarity index 100% rename from vendor/easyui/src/jquery.droppable.js rename to vendor/FHC-vendor/easyui/src/jquery.droppable.js diff --git a/vendor/easyui/src/jquery.form.js b/vendor/FHC-vendor/easyui/src/jquery.form.js similarity index 100% rename from vendor/easyui/src/jquery.form.js rename to vendor/FHC-vendor/easyui/src/jquery.form.js diff --git a/vendor/easyui/src/jquery.linkbutton.js b/vendor/FHC-vendor/easyui/src/jquery.linkbutton.js similarity index 100% rename from vendor/easyui/src/jquery.linkbutton.js rename to vendor/FHC-vendor/easyui/src/jquery.linkbutton.js diff --git a/vendor/easyui/src/jquery.menu.js b/vendor/FHC-vendor/easyui/src/jquery.menu.js similarity index 100% rename from vendor/easyui/src/jquery.menu.js rename to vendor/FHC-vendor/easyui/src/jquery.menu.js diff --git a/vendor/easyui/src/jquery.parser.js b/vendor/FHC-vendor/easyui/src/jquery.parser.js similarity index 100% rename from vendor/easyui/src/jquery.parser.js rename to vendor/FHC-vendor/easyui/src/jquery.parser.js diff --git a/vendor/easyui/src/jquery.progressbar.js b/vendor/FHC-vendor/easyui/src/jquery.progressbar.js similarity index 100% rename from vendor/easyui/src/jquery.progressbar.js rename to vendor/FHC-vendor/easyui/src/jquery.progressbar.js diff --git a/vendor/easyui/src/jquery.propertygrid.js b/vendor/FHC-vendor/easyui/src/jquery.propertygrid.js similarity index 100% rename from vendor/easyui/src/jquery.propertygrid.js rename to vendor/FHC-vendor/easyui/src/jquery.propertygrid.js diff --git a/vendor/easyui/src/jquery.resizable.js b/vendor/FHC-vendor/easyui/src/jquery.resizable.js similarity index 100% rename from vendor/easyui/src/jquery.resizable.js rename to vendor/FHC-vendor/easyui/src/jquery.resizable.js diff --git a/vendor/easyui/src/jquery.slider.js b/vendor/FHC-vendor/easyui/src/jquery.slider.js similarity index 100% rename from vendor/easyui/src/jquery.slider.js rename to vendor/FHC-vendor/easyui/src/jquery.slider.js diff --git a/vendor/easyui/src/jquery.tabs.js b/vendor/FHC-vendor/easyui/src/jquery.tabs.js similarity index 100% rename from vendor/easyui/src/jquery.tabs.js rename to vendor/FHC-vendor/easyui/src/jquery.tabs.js diff --git a/vendor/easyui/src/jquery.window.js b/vendor/FHC-vendor/easyui/src/jquery.window.js similarity index 100% rename from vendor/easyui/src/jquery.window.js rename to vendor/FHC-vendor/easyui/src/jquery.window.js diff --git a/vendor/easyui/themes/black/accordion.css b/vendor/FHC-vendor/easyui/themes/black/accordion.css similarity index 100% rename from vendor/easyui/themes/black/accordion.css rename to vendor/FHC-vendor/easyui/themes/black/accordion.css diff --git a/vendor/easyui/themes/black/calendar.css b/vendor/FHC-vendor/easyui/themes/black/calendar.css similarity index 100% rename from vendor/easyui/themes/black/calendar.css rename to vendor/FHC-vendor/easyui/themes/black/calendar.css diff --git a/vendor/easyui/themes/black/combo.css b/vendor/FHC-vendor/easyui/themes/black/combo.css similarity index 100% rename from vendor/easyui/themes/black/combo.css rename to vendor/FHC-vendor/easyui/themes/black/combo.css diff --git a/vendor/easyui/themes/black/combobox.css b/vendor/FHC-vendor/easyui/themes/black/combobox.css similarity index 100% rename from vendor/easyui/themes/black/combobox.css rename to vendor/FHC-vendor/easyui/themes/black/combobox.css diff --git a/vendor/easyui/themes/black/datagrid.css b/vendor/FHC-vendor/easyui/themes/black/datagrid.css similarity index 100% rename from vendor/easyui/themes/black/datagrid.css rename to vendor/FHC-vendor/easyui/themes/black/datagrid.css diff --git a/vendor/easyui/themes/black/datalist.css b/vendor/FHC-vendor/easyui/themes/black/datalist.css similarity index 100% rename from vendor/easyui/themes/black/datalist.css rename to vendor/FHC-vendor/easyui/themes/black/datalist.css diff --git a/vendor/easyui/themes/black/datebox.css b/vendor/FHC-vendor/easyui/themes/black/datebox.css similarity index 100% rename from vendor/easyui/themes/black/datebox.css rename to vendor/FHC-vendor/easyui/themes/black/datebox.css diff --git a/vendor/easyui/themes/black/dialog.css b/vendor/FHC-vendor/easyui/themes/black/dialog.css similarity index 100% rename from vendor/easyui/themes/black/dialog.css rename to vendor/FHC-vendor/easyui/themes/black/dialog.css diff --git a/vendor/easyui/themes/black/easyui.css b/vendor/FHC-vendor/easyui/themes/black/easyui.css similarity index 100% rename from vendor/easyui/themes/black/easyui.css rename to vendor/FHC-vendor/easyui/themes/black/easyui.css diff --git a/vendor/easyui/themes/black/filebox.css b/vendor/FHC-vendor/easyui/themes/black/filebox.css similarity index 100% rename from vendor/easyui/themes/black/filebox.css rename to vendor/FHC-vendor/easyui/themes/black/filebox.css diff --git a/vendor/easyui/themes/black/images/accordion_arrows.png b/vendor/FHC-vendor/easyui/themes/black/images/accordion_arrows.png similarity index 100% rename from vendor/easyui/themes/black/images/accordion_arrows.png rename to vendor/FHC-vendor/easyui/themes/black/images/accordion_arrows.png diff --git a/vendor/easyui/themes/black/images/blank.gif b/vendor/FHC-vendor/easyui/themes/black/images/blank.gif similarity index 100% rename from vendor/easyui/themes/black/images/blank.gif rename to vendor/FHC-vendor/easyui/themes/black/images/blank.gif diff --git a/vendor/easyui/themes/black/images/calendar_arrows.png b/vendor/FHC-vendor/easyui/themes/black/images/calendar_arrows.png similarity index 100% rename from vendor/easyui/themes/black/images/calendar_arrows.png rename to vendor/FHC-vendor/easyui/themes/black/images/calendar_arrows.png diff --git a/vendor/easyui/themes/black/images/combo_arrow.png b/vendor/FHC-vendor/easyui/themes/black/images/combo_arrow.png similarity index 100% rename from vendor/easyui/themes/black/images/combo_arrow.png rename to vendor/FHC-vendor/easyui/themes/black/images/combo_arrow.png diff --git a/vendor/easyui/themes/black/images/datagrid_icons.png b/vendor/FHC-vendor/easyui/themes/black/images/datagrid_icons.png similarity index 100% rename from vendor/easyui/themes/black/images/datagrid_icons.png rename to vendor/FHC-vendor/easyui/themes/black/images/datagrid_icons.png diff --git a/vendor/easyui/themes/black/images/datebox_arrow.png b/vendor/FHC-vendor/easyui/themes/black/images/datebox_arrow.png similarity index 100% rename from vendor/easyui/themes/black/images/datebox_arrow.png rename to vendor/FHC-vendor/easyui/themes/black/images/datebox_arrow.png diff --git a/vendor/easyui/themes/black/images/layout_arrows.png b/vendor/FHC-vendor/easyui/themes/black/images/layout_arrows.png similarity index 100% rename from vendor/easyui/themes/black/images/layout_arrows.png rename to vendor/FHC-vendor/easyui/themes/black/images/layout_arrows.png diff --git a/vendor/easyui/themes/black/images/linkbutton_bg.png b/vendor/FHC-vendor/easyui/themes/black/images/linkbutton_bg.png similarity index 100% rename from vendor/easyui/themes/black/images/linkbutton_bg.png rename to vendor/FHC-vendor/easyui/themes/black/images/linkbutton_bg.png diff --git a/vendor/easyui/themes/black/images/loading.gif b/vendor/FHC-vendor/easyui/themes/black/images/loading.gif similarity index 100% rename from vendor/easyui/themes/black/images/loading.gif rename to vendor/FHC-vendor/easyui/themes/black/images/loading.gif diff --git a/vendor/easyui/themes/black/images/menu_arrows.png b/vendor/FHC-vendor/easyui/themes/black/images/menu_arrows.png similarity index 100% rename from vendor/easyui/themes/black/images/menu_arrows.png rename to vendor/FHC-vendor/easyui/themes/black/images/menu_arrows.png diff --git a/vendor/easyui/themes/black/images/messager_icons.png b/vendor/FHC-vendor/easyui/themes/black/images/messager_icons.png similarity index 100% rename from vendor/easyui/themes/black/images/messager_icons.png rename to vendor/FHC-vendor/easyui/themes/black/images/messager_icons.png diff --git a/vendor/easyui/themes/black/images/pagination_icons.png b/vendor/FHC-vendor/easyui/themes/black/images/pagination_icons.png similarity index 100% rename from vendor/easyui/themes/black/images/pagination_icons.png rename to vendor/FHC-vendor/easyui/themes/black/images/pagination_icons.png diff --git a/vendor/easyui/themes/black/images/panel_tools.png b/vendor/FHC-vendor/easyui/themes/black/images/panel_tools.png similarity index 100% rename from vendor/easyui/themes/black/images/panel_tools.png rename to vendor/FHC-vendor/easyui/themes/black/images/panel_tools.png diff --git a/vendor/easyui/themes/black/images/searchbox_button.png b/vendor/FHC-vendor/easyui/themes/black/images/searchbox_button.png similarity index 100% rename from vendor/easyui/themes/black/images/searchbox_button.png rename to vendor/FHC-vendor/easyui/themes/black/images/searchbox_button.png diff --git a/vendor/easyui/themes/black/images/slider_handle.png b/vendor/FHC-vendor/easyui/themes/black/images/slider_handle.png similarity index 100% rename from vendor/easyui/themes/black/images/slider_handle.png rename to vendor/FHC-vendor/easyui/themes/black/images/slider_handle.png diff --git a/vendor/easyui/themes/black/images/spinner_arrows.png b/vendor/FHC-vendor/easyui/themes/black/images/spinner_arrows.png similarity index 100% rename from vendor/easyui/themes/black/images/spinner_arrows.png rename to vendor/FHC-vendor/easyui/themes/black/images/spinner_arrows.png diff --git a/vendor/easyui/themes/black/images/tabs_icons.png b/vendor/FHC-vendor/easyui/themes/black/images/tabs_icons.png similarity index 100% rename from vendor/easyui/themes/black/images/tabs_icons.png rename to vendor/FHC-vendor/easyui/themes/black/images/tabs_icons.png diff --git a/vendor/easyui/themes/black/images/tree_icons.png b/vendor/FHC-vendor/easyui/themes/black/images/tree_icons.png similarity index 100% rename from vendor/easyui/themes/black/images/tree_icons.png rename to vendor/FHC-vendor/easyui/themes/black/images/tree_icons.png diff --git a/vendor/easyui/themes/black/images/validatebox_warning.png b/vendor/FHC-vendor/easyui/themes/black/images/validatebox_warning.png similarity index 100% rename from vendor/easyui/themes/black/images/validatebox_warning.png rename to vendor/FHC-vendor/easyui/themes/black/images/validatebox_warning.png diff --git a/vendor/easyui/themes/black/layout.css b/vendor/FHC-vendor/easyui/themes/black/layout.css similarity index 100% rename from vendor/easyui/themes/black/layout.css rename to vendor/FHC-vendor/easyui/themes/black/layout.css diff --git a/vendor/easyui/themes/black/linkbutton.css b/vendor/FHC-vendor/easyui/themes/black/linkbutton.css similarity index 100% rename from vendor/easyui/themes/black/linkbutton.css rename to vendor/FHC-vendor/easyui/themes/black/linkbutton.css diff --git a/vendor/easyui/themes/black/menu.css b/vendor/FHC-vendor/easyui/themes/black/menu.css similarity index 100% rename from vendor/easyui/themes/black/menu.css rename to vendor/FHC-vendor/easyui/themes/black/menu.css diff --git a/vendor/easyui/themes/black/menubutton.css b/vendor/FHC-vendor/easyui/themes/black/menubutton.css similarity index 100% rename from vendor/easyui/themes/black/menubutton.css rename to vendor/FHC-vendor/easyui/themes/black/menubutton.css diff --git a/vendor/easyui/themes/black/messager.css b/vendor/FHC-vendor/easyui/themes/black/messager.css similarity index 100% rename from vendor/easyui/themes/black/messager.css rename to vendor/FHC-vendor/easyui/themes/black/messager.css diff --git a/vendor/easyui/themes/black/numberbox.css b/vendor/FHC-vendor/easyui/themes/black/numberbox.css similarity index 100% rename from vendor/easyui/themes/black/numberbox.css rename to vendor/FHC-vendor/easyui/themes/black/numberbox.css diff --git a/vendor/easyui/themes/black/pagination.css b/vendor/FHC-vendor/easyui/themes/black/pagination.css similarity index 100% rename from vendor/easyui/themes/black/pagination.css rename to vendor/FHC-vendor/easyui/themes/black/pagination.css diff --git a/vendor/easyui/themes/black/panel.css b/vendor/FHC-vendor/easyui/themes/black/panel.css similarity index 100% rename from vendor/easyui/themes/black/panel.css rename to vendor/FHC-vendor/easyui/themes/black/panel.css diff --git a/vendor/easyui/themes/black/progressbar.css b/vendor/FHC-vendor/easyui/themes/black/progressbar.css similarity index 100% rename from vendor/easyui/themes/black/progressbar.css rename to vendor/FHC-vendor/easyui/themes/black/progressbar.css diff --git a/vendor/easyui/themes/black/propertygrid.css b/vendor/FHC-vendor/easyui/themes/black/propertygrid.css similarity index 100% rename from vendor/easyui/themes/black/propertygrid.css rename to vendor/FHC-vendor/easyui/themes/black/propertygrid.css diff --git a/vendor/easyui/themes/black/searchbox.css b/vendor/FHC-vendor/easyui/themes/black/searchbox.css similarity index 100% rename from vendor/easyui/themes/black/searchbox.css rename to vendor/FHC-vendor/easyui/themes/black/searchbox.css diff --git a/vendor/easyui/themes/black/slider.css b/vendor/FHC-vendor/easyui/themes/black/slider.css similarity index 100% rename from vendor/easyui/themes/black/slider.css rename to vendor/FHC-vendor/easyui/themes/black/slider.css diff --git a/vendor/easyui/themes/black/spinner.css b/vendor/FHC-vendor/easyui/themes/black/spinner.css similarity index 100% rename from vendor/easyui/themes/black/spinner.css rename to vendor/FHC-vendor/easyui/themes/black/spinner.css diff --git a/vendor/easyui/themes/black/splitbutton.css b/vendor/FHC-vendor/easyui/themes/black/splitbutton.css similarity index 100% rename from vendor/easyui/themes/black/splitbutton.css rename to vendor/FHC-vendor/easyui/themes/black/splitbutton.css diff --git a/vendor/easyui/themes/black/switchbutton.css b/vendor/FHC-vendor/easyui/themes/black/switchbutton.css similarity index 100% rename from vendor/easyui/themes/black/switchbutton.css rename to vendor/FHC-vendor/easyui/themes/black/switchbutton.css diff --git a/vendor/easyui/themes/black/tabs.css b/vendor/FHC-vendor/easyui/themes/black/tabs.css similarity index 100% rename from vendor/easyui/themes/black/tabs.css rename to vendor/FHC-vendor/easyui/themes/black/tabs.css diff --git a/vendor/easyui/themes/black/textbox.css b/vendor/FHC-vendor/easyui/themes/black/textbox.css similarity index 100% rename from vendor/easyui/themes/black/textbox.css rename to vendor/FHC-vendor/easyui/themes/black/textbox.css diff --git a/vendor/easyui/themes/black/tooltip.css b/vendor/FHC-vendor/easyui/themes/black/tooltip.css similarity index 100% rename from vendor/easyui/themes/black/tooltip.css rename to vendor/FHC-vendor/easyui/themes/black/tooltip.css diff --git a/vendor/easyui/themes/black/tree.css b/vendor/FHC-vendor/easyui/themes/black/tree.css similarity index 100% rename from vendor/easyui/themes/black/tree.css rename to vendor/FHC-vendor/easyui/themes/black/tree.css diff --git a/vendor/easyui/themes/black/validatebox.css b/vendor/FHC-vendor/easyui/themes/black/validatebox.css similarity index 100% rename from vendor/easyui/themes/black/validatebox.css rename to vendor/FHC-vendor/easyui/themes/black/validatebox.css diff --git a/vendor/easyui/themes/black/window.css b/vendor/FHC-vendor/easyui/themes/black/window.css similarity index 100% rename from vendor/easyui/themes/black/window.css rename to vendor/FHC-vendor/easyui/themes/black/window.css diff --git a/vendor/easyui/themes/bootstrap/accordion.css b/vendor/FHC-vendor/easyui/themes/bootstrap/accordion.css similarity index 100% rename from vendor/easyui/themes/bootstrap/accordion.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/accordion.css diff --git a/vendor/easyui/themes/bootstrap/calendar.css b/vendor/FHC-vendor/easyui/themes/bootstrap/calendar.css similarity index 100% rename from vendor/easyui/themes/bootstrap/calendar.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/calendar.css diff --git a/vendor/easyui/themes/bootstrap/combo.css b/vendor/FHC-vendor/easyui/themes/bootstrap/combo.css similarity index 100% rename from vendor/easyui/themes/bootstrap/combo.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/combo.css diff --git a/vendor/easyui/themes/bootstrap/combobox.css b/vendor/FHC-vendor/easyui/themes/bootstrap/combobox.css similarity index 100% rename from vendor/easyui/themes/bootstrap/combobox.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/combobox.css diff --git a/vendor/easyui/themes/bootstrap/datagrid.css b/vendor/FHC-vendor/easyui/themes/bootstrap/datagrid.css similarity index 100% rename from vendor/easyui/themes/bootstrap/datagrid.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/datagrid.css diff --git a/vendor/easyui/themes/bootstrap/datalist.css b/vendor/FHC-vendor/easyui/themes/bootstrap/datalist.css similarity index 100% rename from vendor/easyui/themes/bootstrap/datalist.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/datalist.css diff --git a/vendor/easyui/themes/bootstrap/datebox.css b/vendor/FHC-vendor/easyui/themes/bootstrap/datebox.css similarity index 100% rename from vendor/easyui/themes/bootstrap/datebox.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/datebox.css diff --git a/vendor/easyui/themes/bootstrap/dialog.css b/vendor/FHC-vendor/easyui/themes/bootstrap/dialog.css similarity index 100% rename from vendor/easyui/themes/bootstrap/dialog.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/dialog.css diff --git a/vendor/easyui/themes/bootstrap/easyui.css b/vendor/FHC-vendor/easyui/themes/bootstrap/easyui.css similarity index 100% rename from vendor/easyui/themes/bootstrap/easyui.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/easyui.css diff --git a/vendor/easyui/themes/bootstrap/filebox.css b/vendor/FHC-vendor/easyui/themes/bootstrap/filebox.css similarity index 100% rename from vendor/easyui/themes/bootstrap/filebox.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/filebox.css diff --git a/vendor/easyui/themes/bootstrap/images/accordion_arrows.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/accordion_arrows.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/accordion_arrows.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/accordion_arrows.png diff --git a/vendor/easyui/themes/bootstrap/images/blank.gif b/vendor/FHC-vendor/easyui/themes/bootstrap/images/blank.gif similarity index 100% rename from vendor/easyui/themes/bootstrap/images/blank.gif rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/blank.gif diff --git a/vendor/easyui/themes/bootstrap/images/calendar_arrows.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/calendar_arrows.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/calendar_arrows.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/calendar_arrows.png diff --git a/vendor/easyui/themes/bootstrap/images/combo_arrow.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/combo_arrow.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/combo_arrow.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/combo_arrow.png diff --git a/vendor/easyui/themes/bootstrap/images/datagrid_icons.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/datagrid_icons.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/datagrid_icons.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/datagrid_icons.png diff --git a/vendor/easyui/themes/bootstrap/images/datebox_arrow.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/datebox_arrow.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/datebox_arrow.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/datebox_arrow.png diff --git a/vendor/easyui/themes/bootstrap/images/layout_arrows.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/layout_arrows.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/layout_arrows.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/layout_arrows.png diff --git a/vendor/easyui/themes/bootstrap/images/linkbutton_bg.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/linkbutton_bg.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/linkbutton_bg.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/linkbutton_bg.png diff --git a/vendor/easyui/themes/bootstrap/images/loading.gif b/vendor/FHC-vendor/easyui/themes/bootstrap/images/loading.gif similarity index 100% rename from vendor/easyui/themes/bootstrap/images/loading.gif rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/loading.gif diff --git a/vendor/easyui/themes/bootstrap/images/menu_arrows.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/menu_arrows.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/menu_arrows.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/menu_arrows.png diff --git a/vendor/easyui/themes/bootstrap/images/messager_icons.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/messager_icons.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/messager_icons.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/messager_icons.png diff --git a/vendor/easyui/themes/bootstrap/images/pagination_icons.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/pagination_icons.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/pagination_icons.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/pagination_icons.png diff --git a/vendor/easyui/themes/bootstrap/images/panel_tools.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/panel_tools.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/panel_tools.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/panel_tools.png diff --git a/vendor/easyui/themes/bootstrap/images/searchbox_button.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/searchbox_button.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/searchbox_button.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/searchbox_button.png diff --git a/vendor/easyui/themes/bootstrap/images/slider_handle.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/slider_handle.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/slider_handle.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/slider_handle.png diff --git a/vendor/easyui/themes/bootstrap/images/spinner_arrows.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/spinner_arrows.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/spinner_arrows.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/spinner_arrows.png diff --git a/vendor/easyui/themes/bootstrap/images/tabs_icons.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/tabs_icons.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/tabs_icons.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/tabs_icons.png diff --git a/vendor/easyui/themes/bootstrap/images/tree_icons.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/tree_icons.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/tree_icons.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/tree_icons.png diff --git a/vendor/easyui/themes/bootstrap/images/validatebox_warning.png b/vendor/FHC-vendor/easyui/themes/bootstrap/images/validatebox_warning.png similarity index 100% rename from vendor/easyui/themes/bootstrap/images/validatebox_warning.png rename to vendor/FHC-vendor/easyui/themes/bootstrap/images/validatebox_warning.png diff --git a/vendor/easyui/themes/bootstrap/layout.css b/vendor/FHC-vendor/easyui/themes/bootstrap/layout.css similarity index 100% rename from vendor/easyui/themes/bootstrap/layout.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/layout.css diff --git a/vendor/easyui/themes/bootstrap/linkbutton.css b/vendor/FHC-vendor/easyui/themes/bootstrap/linkbutton.css similarity index 100% rename from vendor/easyui/themes/bootstrap/linkbutton.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/linkbutton.css diff --git a/vendor/easyui/themes/bootstrap/menu.css b/vendor/FHC-vendor/easyui/themes/bootstrap/menu.css similarity index 100% rename from vendor/easyui/themes/bootstrap/menu.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/menu.css diff --git a/vendor/easyui/themes/bootstrap/menubutton.css b/vendor/FHC-vendor/easyui/themes/bootstrap/menubutton.css similarity index 100% rename from vendor/easyui/themes/bootstrap/menubutton.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/menubutton.css diff --git a/vendor/easyui/themes/bootstrap/messager.css b/vendor/FHC-vendor/easyui/themes/bootstrap/messager.css similarity index 100% rename from vendor/easyui/themes/bootstrap/messager.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/messager.css diff --git a/vendor/easyui/themes/bootstrap/numberbox.css b/vendor/FHC-vendor/easyui/themes/bootstrap/numberbox.css similarity index 100% rename from vendor/easyui/themes/bootstrap/numberbox.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/numberbox.css diff --git a/vendor/easyui/themes/bootstrap/pagination.css b/vendor/FHC-vendor/easyui/themes/bootstrap/pagination.css similarity index 100% rename from vendor/easyui/themes/bootstrap/pagination.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/pagination.css diff --git a/vendor/easyui/themes/bootstrap/panel.css b/vendor/FHC-vendor/easyui/themes/bootstrap/panel.css similarity index 100% rename from vendor/easyui/themes/bootstrap/panel.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/panel.css diff --git a/vendor/easyui/themes/bootstrap/progressbar.css b/vendor/FHC-vendor/easyui/themes/bootstrap/progressbar.css similarity index 100% rename from vendor/easyui/themes/bootstrap/progressbar.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/progressbar.css diff --git a/vendor/easyui/themes/bootstrap/propertygrid.css b/vendor/FHC-vendor/easyui/themes/bootstrap/propertygrid.css similarity index 100% rename from vendor/easyui/themes/bootstrap/propertygrid.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/propertygrid.css diff --git a/vendor/easyui/themes/bootstrap/searchbox.css b/vendor/FHC-vendor/easyui/themes/bootstrap/searchbox.css similarity index 100% rename from vendor/easyui/themes/bootstrap/searchbox.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/searchbox.css diff --git a/vendor/easyui/themes/bootstrap/slider.css b/vendor/FHC-vendor/easyui/themes/bootstrap/slider.css similarity index 100% rename from vendor/easyui/themes/bootstrap/slider.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/slider.css diff --git a/vendor/easyui/themes/bootstrap/spinner.css b/vendor/FHC-vendor/easyui/themes/bootstrap/spinner.css similarity index 100% rename from vendor/easyui/themes/bootstrap/spinner.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/spinner.css diff --git a/vendor/easyui/themes/bootstrap/splitbutton.css b/vendor/FHC-vendor/easyui/themes/bootstrap/splitbutton.css similarity index 100% rename from vendor/easyui/themes/bootstrap/splitbutton.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/splitbutton.css diff --git a/vendor/easyui/themes/bootstrap/switchbutton.css b/vendor/FHC-vendor/easyui/themes/bootstrap/switchbutton.css similarity index 100% rename from vendor/easyui/themes/bootstrap/switchbutton.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/switchbutton.css diff --git a/vendor/easyui/themes/bootstrap/tabs.css b/vendor/FHC-vendor/easyui/themes/bootstrap/tabs.css similarity index 100% rename from vendor/easyui/themes/bootstrap/tabs.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/tabs.css diff --git a/vendor/easyui/themes/bootstrap/textbox.css b/vendor/FHC-vendor/easyui/themes/bootstrap/textbox.css similarity index 100% rename from vendor/easyui/themes/bootstrap/textbox.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/textbox.css diff --git a/vendor/easyui/themes/bootstrap/tooltip.css b/vendor/FHC-vendor/easyui/themes/bootstrap/tooltip.css similarity index 100% rename from vendor/easyui/themes/bootstrap/tooltip.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/tooltip.css diff --git a/vendor/easyui/themes/bootstrap/tree.css b/vendor/FHC-vendor/easyui/themes/bootstrap/tree.css similarity index 100% rename from vendor/easyui/themes/bootstrap/tree.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/tree.css diff --git a/vendor/easyui/themes/bootstrap/validatebox.css b/vendor/FHC-vendor/easyui/themes/bootstrap/validatebox.css similarity index 100% rename from vendor/easyui/themes/bootstrap/validatebox.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/validatebox.css diff --git a/vendor/easyui/themes/bootstrap/window.css b/vendor/FHC-vendor/easyui/themes/bootstrap/window.css similarity index 100% rename from vendor/easyui/themes/bootstrap/window.css rename to vendor/FHC-vendor/easyui/themes/bootstrap/window.css diff --git a/vendor/easyui/themes/color.css b/vendor/FHC-vendor/easyui/themes/color.css similarity index 100% rename from vendor/easyui/themes/color.css rename to vendor/FHC-vendor/easyui/themes/color.css diff --git a/vendor/easyui/themes/default/accordion.css b/vendor/FHC-vendor/easyui/themes/default/accordion.css similarity index 100% rename from vendor/easyui/themes/default/accordion.css rename to vendor/FHC-vendor/easyui/themes/default/accordion.css diff --git a/vendor/easyui/themes/default/calendar.css b/vendor/FHC-vendor/easyui/themes/default/calendar.css similarity index 100% rename from vendor/easyui/themes/default/calendar.css rename to vendor/FHC-vendor/easyui/themes/default/calendar.css diff --git a/vendor/easyui/themes/default/combo.css b/vendor/FHC-vendor/easyui/themes/default/combo.css similarity index 100% rename from vendor/easyui/themes/default/combo.css rename to vendor/FHC-vendor/easyui/themes/default/combo.css diff --git a/vendor/easyui/themes/default/combobox.css b/vendor/FHC-vendor/easyui/themes/default/combobox.css similarity index 100% rename from vendor/easyui/themes/default/combobox.css rename to vendor/FHC-vendor/easyui/themes/default/combobox.css diff --git a/vendor/easyui/themes/default/datagrid.css b/vendor/FHC-vendor/easyui/themes/default/datagrid.css similarity index 100% rename from vendor/easyui/themes/default/datagrid.css rename to vendor/FHC-vendor/easyui/themes/default/datagrid.css diff --git a/vendor/easyui/themes/default/datalist.css b/vendor/FHC-vendor/easyui/themes/default/datalist.css similarity index 100% rename from vendor/easyui/themes/default/datalist.css rename to vendor/FHC-vendor/easyui/themes/default/datalist.css diff --git a/vendor/easyui/themes/default/datebox.css b/vendor/FHC-vendor/easyui/themes/default/datebox.css similarity index 100% rename from vendor/easyui/themes/default/datebox.css rename to vendor/FHC-vendor/easyui/themes/default/datebox.css diff --git a/vendor/easyui/themes/default/dialog.css b/vendor/FHC-vendor/easyui/themes/default/dialog.css similarity index 100% rename from vendor/easyui/themes/default/dialog.css rename to vendor/FHC-vendor/easyui/themes/default/dialog.css diff --git a/vendor/easyui/themes/default/easyui.css b/vendor/FHC-vendor/easyui/themes/default/easyui.css similarity index 100% rename from vendor/easyui/themes/default/easyui.css rename to vendor/FHC-vendor/easyui/themes/default/easyui.css diff --git a/vendor/easyui/themes/default/filebox.css b/vendor/FHC-vendor/easyui/themes/default/filebox.css similarity index 100% rename from vendor/easyui/themes/default/filebox.css rename to vendor/FHC-vendor/easyui/themes/default/filebox.css diff --git a/vendor/easyui/themes/default/images/accordion_arrows.png b/vendor/FHC-vendor/easyui/themes/default/images/accordion_arrows.png similarity index 100% rename from vendor/easyui/themes/default/images/accordion_arrows.png rename to vendor/FHC-vendor/easyui/themes/default/images/accordion_arrows.png diff --git a/vendor/easyui/themes/default/images/blank.gif b/vendor/FHC-vendor/easyui/themes/default/images/blank.gif similarity index 100% rename from vendor/easyui/themes/default/images/blank.gif rename to vendor/FHC-vendor/easyui/themes/default/images/blank.gif diff --git a/vendor/easyui/themes/default/images/calendar_arrows.png b/vendor/FHC-vendor/easyui/themes/default/images/calendar_arrows.png similarity index 100% rename from vendor/easyui/themes/default/images/calendar_arrows.png rename to vendor/FHC-vendor/easyui/themes/default/images/calendar_arrows.png diff --git a/vendor/easyui/themes/default/images/combo_arrow.png b/vendor/FHC-vendor/easyui/themes/default/images/combo_arrow.png similarity index 100% rename from vendor/easyui/themes/default/images/combo_arrow.png rename to vendor/FHC-vendor/easyui/themes/default/images/combo_arrow.png diff --git a/vendor/easyui/themes/default/images/datagrid_icons.png b/vendor/FHC-vendor/easyui/themes/default/images/datagrid_icons.png similarity index 100% rename from vendor/easyui/themes/default/images/datagrid_icons.png rename to vendor/FHC-vendor/easyui/themes/default/images/datagrid_icons.png diff --git a/vendor/easyui/themes/default/images/datebox_arrow.png b/vendor/FHC-vendor/easyui/themes/default/images/datebox_arrow.png similarity index 100% rename from vendor/easyui/themes/default/images/datebox_arrow.png rename to vendor/FHC-vendor/easyui/themes/default/images/datebox_arrow.png diff --git a/vendor/easyui/themes/default/images/layout_arrows.png b/vendor/FHC-vendor/easyui/themes/default/images/layout_arrows.png similarity index 100% rename from vendor/easyui/themes/default/images/layout_arrows.png rename to vendor/FHC-vendor/easyui/themes/default/images/layout_arrows.png diff --git a/vendor/easyui/themes/default/images/linkbutton_bg.png b/vendor/FHC-vendor/easyui/themes/default/images/linkbutton_bg.png similarity index 100% rename from vendor/easyui/themes/default/images/linkbutton_bg.png rename to vendor/FHC-vendor/easyui/themes/default/images/linkbutton_bg.png diff --git a/vendor/easyui/themes/default/images/loading.gif b/vendor/FHC-vendor/easyui/themes/default/images/loading.gif similarity index 100% rename from vendor/easyui/themes/default/images/loading.gif rename to vendor/FHC-vendor/easyui/themes/default/images/loading.gif diff --git a/vendor/easyui/themes/default/images/menu_arrows.png b/vendor/FHC-vendor/easyui/themes/default/images/menu_arrows.png similarity index 100% rename from vendor/easyui/themes/default/images/menu_arrows.png rename to vendor/FHC-vendor/easyui/themes/default/images/menu_arrows.png diff --git a/vendor/easyui/themes/default/images/messager_icons.png b/vendor/FHC-vendor/easyui/themes/default/images/messager_icons.png similarity index 100% rename from vendor/easyui/themes/default/images/messager_icons.png rename to vendor/FHC-vendor/easyui/themes/default/images/messager_icons.png diff --git a/vendor/easyui/themes/default/images/pagination_icons.png b/vendor/FHC-vendor/easyui/themes/default/images/pagination_icons.png similarity index 100% rename from vendor/easyui/themes/default/images/pagination_icons.png rename to vendor/FHC-vendor/easyui/themes/default/images/pagination_icons.png diff --git a/vendor/easyui/themes/default/images/panel_tools.png b/vendor/FHC-vendor/easyui/themes/default/images/panel_tools.png similarity index 100% rename from vendor/easyui/themes/default/images/panel_tools.png rename to vendor/FHC-vendor/easyui/themes/default/images/panel_tools.png diff --git a/vendor/easyui/themes/default/images/searchbox_button.png b/vendor/FHC-vendor/easyui/themes/default/images/searchbox_button.png similarity index 100% rename from vendor/easyui/themes/default/images/searchbox_button.png rename to vendor/FHC-vendor/easyui/themes/default/images/searchbox_button.png diff --git a/vendor/easyui/themes/default/images/slider_handle.png b/vendor/FHC-vendor/easyui/themes/default/images/slider_handle.png similarity index 100% rename from vendor/easyui/themes/default/images/slider_handle.png rename to vendor/FHC-vendor/easyui/themes/default/images/slider_handle.png diff --git a/vendor/easyui/themes/default/images/spinner_arrows.png b/vendor/FHC-vendor/easyui/themes/default/images/spinner_arrows.png similarity index 100% rename from vendor/easyui/themes/default/images/spinner_arrows.png rename to vendor/FHC-vendor/easyui/themes/default/images/spinner_arrows.png diff --git a/vendor/easyui/themes/default/images/tabs_icons.png b/vendor/FHC-vendor/easyui/themes/default/images/tabs_icons.png similarity index 100% rename from vendor/easyui/themes/default/images/tabs_icons.png rename to vendor/FHC-vendor/easyui/themes/default/images/tabs_icons.png diff --git a/vendor/easyui/themes/default/images/tree_icons.png b/vendor/FHC-vendor/easyui/themes/default/images/tree_icons.png similarity index 100% rename from vendor/easyui/themes/default/images/tree_icons.png rename to vendor/FHC-vendor/easyui/themes/default/images/tree_icons.png diff --git a/vendor/easyui/themes/default/images/validatebox_warning.png b/vendor/FHC-vendor/easyui/themes/default/images/validatebox_warning.png similarity index 100% rename from vendor/easyui/themes/default/images/validatebox_warning.png rename to vendor/FHC-vendor/easyui/themes/default/images/validatebox_warning.png diff --git a/vendor/easyui/themes/default/layout.css b/vendor/FHC-vendor/easyui/themes/default/layout.css similarity index 100% rename from vendor/easyui/themes/default/layout.css rename to vendor/FHC-vendor/easyui/themes/default/layout.css diff --git a/vendor/easyui/themes/default/linkbutton.css b/vendor/FHC-vendor/easyui/themes/default/linkbutton.css similarity index 100% rename from vendor/easyui/themes/default/linkbutton.css rename to vendor/FHC-vendor/easyui/themes/default/linkbutton.css diff --git a/vendor/easyui/themes/default/menu.css b/vendor/FHC-vendor/easyui/themes/default/menu.css similarity index 100% rename from vendor/easyui/themes/default/menu.css rename to vendor/FHC-vendor/easyui/themes/default/menu.css diff --git a/vendor/easyui/themes/default/menubutton.css b/vendor/FHC-vendor/easyui/themes/default/menubutton.css similarity index 100% rename from vendor/easyui/themes/default/menubutton.css rename to vendor/FHC-vendor/easyui/themes/default/menubutton.css diff --git a/vendor/easyui/themes/default/messager.css b/vendor/FHC-vendor/easyui/themes/default/messager.css similarity index 100% rename from vendor/easyui/themes/default/messager.css rename to vendor/FHC-vendor/easyui/themes/default/messager.css diff --git a/vendor/easyui/themes/default/numberbox.css b/vendor/FHC-vendor/easyui/themes/default/numberbox.css similarity index 100% rename from vendor/easyui/themes/default/numberbox.css rename to vendor/FHC-vendor/easyui/themes/default/numberbox.css diff --git a/vendor/easyui/themes/default/pagination.css b/vendor/FHC-vendor/easyui/themes/default/pagination.css similarity index 100% rename from vendor/easyui/themes/default/pagination.css rename to vendor/FHC-vendor/easyui/themes/default/pagination.css diff --git a/vendor/easyui/themes/default/panel.css b/vendor/FHC-vendor/easyui/themes/default/panel.css similarity index 100% rename from vendor/easyui/themes/default/panel.css rename to vendor/FHC-vendor/easyui/themes/default/panel.css diff --git a/vendor/easyui/themes/default/progressbar.css b/vendor/FHC-vendor/easyui/themes/default/progressbar.css similarity index 100% rename from vendor/easyui/themes/default/progressbar.css rename to vendor/FHC-vendor/easyui/themes/default/progressbar.css diff --git a/vendor/easyui/themes/default/propertygrid.css b/vendor/FHC-vendor/easyui/themes/default/propertygrid.css similarity index 100% rename from vendor/easyui/themes/default/propertygrid.css rename to vendor/FHC-vendor/easyui/themes/default/propertygrid.css diff --git a/vendor/easyui/themes/default/searchbox.css b/vendor/FHC-vendor/easyui/themes/default/searchbox.css similarity index 100% rename from vendor/easyui/themes/default/searchbox.css rename to vendor/FHC-vendor/easyui/themes/default/searchbox.css diff --git a/vendor/easyui/themes/default/slider.css b/vendor/FHC-vendor/easyui/themes/default/slider.css similarity index 100% rename from vendor/easyui/themes/default/slider.css rename to vendor/FHC-vendor/easyui/themes/default/slider.css diff --git a/vendor/easyui/themes/default/spinner.css b/vendor/FHC-vendor/easyui/themes/default/spinner.css similarity index 100% rename from vendor/easyui/themes/default/spinner.css rename to vendor/FHC-vendor/easyui/themes/default/spinner.css diff --git a/vendor/easyui/themes/default/splitbutton.css b/vendor/FHC-vendor/easyui/themes/default/splitbutton.css similarity index 100% rename from vendor/easyui/themes/default/splitbutton.css rename to vendor/FHC-vendor/easyui/themes/default/splitbutton.css diff --git a/vendor/easyui/themes/default/switchbutton.css b/vendor/FHC-vendor/easyui/themes/default/switchbutton.css similarity index 100% rename from vendor/easyui/themes/default/switchbutton.css rename to vendor/FHC-vendor/easyui/themes/default/switchbutton.css diff --git a/vendor/easyui/themes/default/tabs.css b/vendor/FHC-vendor/easyui/themes/default/tabs.css similarity index 100% rename from vendor/easyui/themes/default/tabs.css rename to vendor/FHC-vendor/easyui/themes/default/tabs.css diff --git a/vendor/easyui/themes/default/textbox.css b/vendor/FHC-vendor/easyui/themes/default/textbox.css similarity index 100% rename from vendor/easyui/themes/default/textbox.css rename to vendor/FHC-vendor/easyui/themes/default/textbox.css diff --git a/vendor/easyui/themes/default/tooltip.css b/vendor/FHC-vendor/easyui/themes/default/tooltip.css similarity index 100% rename from vendor/easyui/themes/default/tooltip.css rename to vendor/FHC-vendor/easyui/themes/default/tooltip.css diff --git a/vendor/easyui/themes/default/tree.css b/vendor/FHC-vendor/easyui/themes/default/tree.css similarity index 100% rename from vendor/easyui/themes/default/tree.css rename to vendor/FHC-vendor/easyui/themes/default/tree.css diff --git a/vendor/easyui/themes/default/validatebox.css b/vendor/FHC-vendor/easyui/themes/default/validatebox.css similarity index 100% rename from vendor/easyui/themes/default/validatebox.css rename to vendor/FHC-vendor/easyui/themes/default/validatebox.css diff --git a/vendor/easyui/themes/default/window.css b/vendor/FHC-vendor/easyui/themes/default/window.css similarity index 100% rename from vendor/easyui/themes/default/window.css rename to vendor/FHC-vendor/easyui/themes/default/window.css diff --git a/vendor/easyui/themes/gray/accordion.css b/vendor/FHC-vendor/easyui/themes/gray/accordion.css similarity index 100% rename from vendor/easyui/themes/gray/accordion.css rename to vendor/FHC-vendor/easyui/themes/gray/accordion.css diff --git a/vendor/easyui/themes/gray/calendar.css b/vendor/FHC-vendor/easyui/themes/gray/calendar.css similarity index 100% rename from vendor/easyui/themes/gray/calendar.css rename to vendor/FHC-vendor/easyui/themes/gray/calendar.css diff --git a/vendor/easyui/themes/gray/combo.css b/vendor/FHC-vendor/easyui/themes/gray/combo.css similarity index 100% rename from vendor/easyui/themes/gray/combo.css rename to vendor/FHC-vendor/easyui/themes/gray/combo.css diff --git a/vendor/easyui/themes/gray/combobox.css b/vendor/FHC-vendor/easyui/themes/gray/combobox.css similarity index 100% rename from vendor/easyui/themes/gray/combobox.css rename to vendor/FHC-vendor/easyui/themes/gray/combobox.css diff --git a/vendor/easyui/themes/gray/datagrid.css b/vendor/FHC-vendor/easyui/themes/gray/datagrid.css similarity index 100% rename from vendor/easyui/themes/gray/datagrid.css rename to vendor/FHC-vendor/easyui/themes/gray/datagrid.css diff --git a/vendor/easyui/themes/gray/datalist.css b/vendor/FHC-vendor/easyui/themes/gray/datalist.css similarity index 100% rename from vendor/easyui/themes/gray/datalist.css rename to vendor/FHC-vendor/easyui/themes/gray/datalist.css diff --git a/vendor/easyui/themes/gray/datebox.css b/vendor/FHC-vendor/easyui/themes/gray/datebox.css similarity index 100% rename from vendor/easyui/themes/gray/datebox.css rename to vendor/FHC-vendor/easyui/themes/gray/datebox.css diff --git a/vendor/easyui/themes/gray/dialog.css b/vendor/FHC-vendor/easyui/themes/gray/dialog.css similarity index 100% rename from vendor/easyui/themes/gray/dialog.css rename to vendor/FHC-vendor/easyui/themes/gray/dialog.css diff --git a/vendor/easyui/themes/gray/easyui.css b/vendor/FHC-vendor/easyui/themes/gray/easyui.css similarity index 100% rename from vendor/easyui/themes/gray/easyui.css rename to vendor/FHC-vendor/easyui/themes/gray/easyui.css diff --git a/vendor/easyui/themes/gray/filebox.css b/vendor/FHC-vendor/easyui/themes/gray/filebox.css similarity index 100% rename from vendor/easyui/themes/gray/filebox.css rename to vendor/FHC-vendor/easyui/themes/gray/filebox.css diff --git a/vendor/easyui/themes/gray/images/accordion_arrows.png b/vendor/FHC-vendor/easyui/themes/gray/images/accordion_arrows.png similarity index 100% rename from vendor/easyui/themes/gray/images/accordion_arrows.png rename to vendor/FHC-vendor/easyui/themes/gray/images/accordion_arrows.png diff --git a/vendor/easyui/themes/gray/images/blank.gif b/vendor/FHC-vendor/easyui/themes/gray/images/blank.gif similarity index 100% rename from vendor/easyui/themes/gray/images/blank.gif rename to vendor/FHC-vendor/easyui/themes/gray/images/blank.gif diff --git a/vendor/easyui/themes/gray/images/calendar_arrows.png b/vendor/FHC-vendor/easyui/themes/gray/images/calendar_arrows.png similarity index 100% rename from vendor/easyui/themes/gray/images/calendar_arrows.png rename to vendor/FHC-vendor/easyui/themes/gray/images/calendar_arrows.png diff --git a/vendor/easyui/themes/gray/images/combo_arrow.png b/vendor/FHC-vendor/easyui/themes/gray/images/combo_arrow.png similarity index 100% rename from vendor/easyui/themes/gray/images/combo_arrow.png rename to vendor/FHC-vendor/easyui/themes/gray/images/combo_arrow.png diff --git a/vendor/easyui/themes/gray/images/datagrid_icons.png b/vendor/FHC-vendor/easyui/themes/gray/images/datagrid_icons.png similarity index 100% rename from vendor/easyui/themes/gray/images/datagrid_icons.png rename to vendor/FHC-vendor/easyui/themes/gray/images/datagrid_icons.png diff --git a/vendor/easyui/themes/gray/images/datebox_arrow.png b/vendor/FHC-vendor/easyui/themes/gray/images/datebox_arrow.png similarity index 100% rename from vendor/easyui/themes/gray/images/datebox_arrow.png rename to vendor/FHC-vendor/easyui/themes/gray/images/datebox_arrow.png diff --git a/vendor/easyui/themes/gray/images/layout_arrows.png b/vendor/FHC-vendor/easyui/themes/gray/images/layout_arrows.png similarity index 100% rename from vendor/easyui/themes/gray/images/layout_arrows.png rename to vendor/FHC-vendor/easyui/themes/gray/images/layout_arrows.png diff --git a/vendor/easyui/themes/gray/images/linkbutton_bg.png b/vendor/FHC-vendor/easyui/themes/gray/images/linkbutton_bg.png similarity index 100% rename from vendor/easyui/themes/gray/images/linkbutton_bg.png rename to vendor/FHC-vendor/easyui/themes/gray/images/linkbutton_bg.png diff --git a/vendor/easyui/themes/gray/images/loading.gif b/vendor/FHC-vendor/easyui/themes/gray/images/loading.gif similarity index 100% rename from vendor/easyui/themes/gray/images/loading.gif rename to vendor/FHC-vendor/easyui/themes/gray/images/loading.gif diff --git a/vendor/easyui/themes/gray/images/menu_arrows.png b/vendor/FHC-vendor/easyui/themes/gray/images/menu_arrows.png similarity index 100% rename from vendor/easyui/themes/gray/images/menu_arrows.png rename to vendor/FHC-vendor/easyui/themes/gray/images/menu_arrows.png diff --git a/vendor/easyui/themes/gray/images/messager_icons.png b/vendor/FHC-vendor/easyui/themes/gray/images/messager_icons.png similarity index 100% rename from vendor/easyui/themes/gray/images/messager_icons.png rename to vendor/FHC-vendor/easyui/themes/gray/images/messager_icons.png diff --git a/vendor/easyui/themes/gray/images/pagination_icons.png b/vendor/FHC-vendor/easyui/themes/gray/images/pagination_icons.png similarity index 100% rename from vendor/easyui/themes/gray/images/pagination_icons.png rename to vendor/FHC-vendor/easyui/themes/gray/images/pagination_icons.png diff --git a/vendor/easyui/themes/gray/images/panel_tools.png b/vendor/FHC-vendor/easyui/themes/gray/images/panel_tools.png similarity index 100% rename from vendor/easyui/themes/gray/images/panel_tools.png rename to vendor/FHC-vendor/easyui/themes/gray/images/panel_tools.png diff --git a/vendor/easyui/themes/gray/images/searchbox_button.png b/vendor/FHC-vendor/easyui/themes/gray/images/searchbox_button.png similarity index 100% rename from vendor/easyui/themes/gray/images/searchbox_button.png rename to vendor/FHC-vendor/easyui/themes/gray/images/searchbox_button.png diff --git a/vendor/easyui/themes/gray/images/slider_handle.png b/vendor/FHC-vendor/easyui/themes/gray/images/slider_handle.png similarity index 100% rename from vendor/easyui/themes/gray/images/slider_handle.png rename to vendor/FHC-vendor/easyui/themes/gray/images/slider_handle.png diff --git a/vendor/easyui/themes/gray/images/spinner_arrows.png b/vendor/FHC-vendor/easyui/themes/gray/images/spinner_arrows.png similarity index 100% rename from vendor/easyui/themes/gray/images/spinner_arrows.png rename to vendor/FHC-vendor/easyui/themes/gray/images/spinner_arrows.png diff --git a/vendor/easyui/themes/gray/images/tabs_icons.png b/vendor/FHC-vendor/easyui/themes/gray/images/tabs_icons.png similarity index 100% rename from vendor/easyui/themes/gray/images/tabs_icons.png rename to vendor/FHC-vendor/easyui/themes/gray/images/tabs_icons.png diff --git a/vendor/easyui/themes/gray/images/tree_icons.png b/vendor/FHC-vendor/easyui/themes/gray/images/tree_icons.png similarity index 100% rename from vendor/easyui/themes/gray/images/tree_icons.png rename to vendor/FHC-vendor/easyui/themes/gray/images/tree_icons.png diff --git a/vendor/easyui/themes/gray/images/validatebox_warning.png b/vendor/FHC-vendor/easyui/themes/gray/images/validatebox_warning.png similarity index 100% rename from vendor/easyui/themes/gray/images/validatebox_warning.png rename to vendor/FHC-vendor/easyui/themes/gray/images/validatebox_warning.png diff --git a/vendor/easyui/themes/gray/layout.css b/vendor/FHC-vendor/easyui/themes/gray/layout.css similarity index 100% rename from vendor/easyui/themes/gray/layout.css rename to vendor/FHC-vendor/easyui/themes/gray/layout.css diff --git a/vendor/easyui/themes/gray/linkbutton.css b/vendor/FHC-vendor/easyui/themes/gray/linkbutton.css similarity index 100% rename from vendor/easyui/themes/gray/linkbutton.css rename to vendor/FHC-vendor/easyui/themes/gray/linkbutton.css diff --git a/vendor/easyui/themes/gray/menu.css b/vendor/FHC-vendor/easyui/themes/gray/menu.css similarity index 100% rename from vendor/easyui/themes/gray/menu.css rename to vendor/FHC-vendor/easyui/themes/gray/menu.css diff --git a/vendor/easyui/themes/gray/menubutton.css b/vendor/FHC-vendor/easyui/themes/gray/menubutton.css similarity index 100% rename from vendor/easyui/themes/gray/menubutton.css rename to vendor/FHC-vendor/easyui/themes/gray/menubutton.css diff --git a/vendor/easyui/themes/gray/messager.css b/vendor/FHC-vendor/easyui/themes/gray/messager.css similarity index 100% rename from vendor/easyui/themes/gray/messager.css rename to vendor/FHC-vendor/easyui/themes/gray/messager.css diff --git a/vendor/easyui/themes/gray/numberbox.css b/vendor/FHC-vendor/easyui/themes/gray/numberbox.css similarity index 100% rename from vendor/easyui/themes/gray/numberbox.css rename to vendor/FHC-vendor/easyui/themes/gray/numberbox.css diff --git a/vendor/easyui/themes/gray/pagination.css b/vendor/FHC-vendor/easyui/themes/gray/pagination.css similarity index 100% rename from vendor/easyui/themes/gray/pagination.css rename to vendor/FHC-vendor/easyui/themes/gray/pagination.css diff --git a/vendor/easyui/themes/gray/panel.css b/vendor/FHC-vendor/easyui/themes/gray/panel.css similarity index 100% rename from vendor/easyui/themes/gray/panel.css rename to vendor/FHC-vendor/easyui/themes/gray/panel.css diff --git a/vendor/easyui/themes/gray/progressbar.css b/vendor/FHC-vendor/easyui/themes/gray/progressbar.css similarity index 100% rename from vendor/easyui/themes/gray/progressbar.css rename to vendor/FHC-vendor/easyui/themes/gray/progressbar.css diff --git a/vendor/easyui/themes/gray/propertygrid.css b/vendor/FHC-vendor/easyui/themes/gray/propertygrid.css similarity index 100% rename from vendor/easyui/themes/gray/propertygrid.css rename to vendor/FHC-vendor/easyui/themes/gray/propertygrid.css diff --git a/vendor/easyui/themes/gray/searchbox.css b/vendor/FHC-vendor/easyui/themes/gray/searchbox.css similarity index 100% rename from vendor/easyui/themes/gray/searchbox.css rename to vendor/FHC-vendor/easyui/themes/gray/searchbox.css diff --git a/vendor/easyui/themes/gray/slider.css b/vendor/FHC-vendor/easyui/themes/gray/slider.css similarity index 100% rename from vendor/easyui/themes/gray/slider.css rename to vendor/FHC-vendor/easyui/themes/gray/slider.css diff --git a/vendor/easyui/themes/gray/spinner.css b/vendor/FHC-vendor/easyui/themes/gray/spinner.css similarity index 100% rename from vendor/easyui/themes/gray/spinner.css rename to vendor/FHC-vendor/easyui/themes/gray/spinner.css diff --git a/vendor/easyui/themes/gray/splitbutton.css b/vendor/FHC-vendor/easyui/themes/gray/splitbutton.css similarity index 100% rename from vendor/easyui/themes/gray/splitbutton.css rename to vendor/FHC-vendor/easyui/themes/gray/splitbutton.css diff --git a/vendor/easyui/themes/gray/switchbutton.css b/vendor/FHC-vendor/easyui/themes/gray/switchbutton.css similarity index 100% rename from vendor/easyui/themes/gray/switchbutton.css rename to vendor/FHC-vendor/easyui/themes/gray/switchbutton.css diff --git a/vendor/easyui/themes/gray/tabs.css b/vendor/FHC-vendor/easyui/themes/gray/tabs.css similarity index 100% rename from vendor/easyui/themes/gray/tabs.css rename to vendor/FHC-vendor/easyui/themes/gray/tabs.css diff --git a/vendor/easyui/themes/gray/textbox.css b/vendor/FHC-vendor/easyui/themes/gray/textbox.css similarity index 100% rename from vendor/easyui/themes/gray/textbox.css rename to vendor/FHC-vendor/easyui/themes/gray/textbox.css diff --git a/vendor/easyui/themes/gray/tooltip.css b/vendor/FHC-vendor/easyui/themes/gray/tooltip.css similarity index 100% rename from vendor/easyui/themes/gray/tooltip.css rename to vendor/FHC-vendor/easyui/themes/gray/tooltip.css diff --git a/vendor/easyui/themes/gray/tree.css b/vendor/FHC-vendor/easyui/themes/gray/tree.css similarity index 100% rename from vendor/easyui/themes/gray/tree.css rename to vendor/FHC-vendor/easyui/themes/gray/tree.css diff --git a/vendor/easyui/themes/gray/validatebox.css b/vendor/FHC-vendor/easyui/themes/gray/validatebox.css similarity index 100% rename from vendor/easyui/themes/gray/validatebox.css rename to vendor/FHC-vendor/easyui/themes/gray/validatebox.css diff --git a/vendor/easyui/themes/gray/window.css b/vendor/FHC-vendor/easyui/themes/gray/window.css similarity index 100% rename from vendor/easyui/themes/gray/window.css rename to vendor/FHC-vendor/easyui/themes/gray/window.css diff --git a/vendor/easyui/themes/icon.css b/vendor/FHC-vendor/easyui/themes/icon.css similarity index 100% rename from vendor/easyui/themes/icon.css rename to vendor/FHC-vendor/easyui/themes/icon.css diff --git a/vendor/easyui/themes/icons/back.png b/vendor/FHC-vendor/easyui/themes/icons/back.png similarity index 100% rename from vendor/easyui/themes/icons/back.png rename to vendor/FHC-vendor/easyui/themes/icons/back.png diff --git a/vendor/easyui/themes/icons/blank.gif b/vendor/FHC-vendor/easyui/themes/icons/blank.gif similarity index 100% rename from vendor/easyui/themes/icons/blank.gif rename to vendor/FHC-vendor/easyui/themes/icons/blank.gif diff --git a/vendor/easyui/themes/icons/cancel.png b/vendor/FHC-vendor/easyui/themes/icons/cancel.png similarity index 100% rename from vendor/easyui/themes/icons/cancel.png rename to vendor/FHC-vendor/easyui/themes/icons/cancel.png diff --git a/vendor/easyui/themes/icons/clear.png b/vendor/FHC-vendor/easyui/themes/icons/clear.png similarity index 100% rename from vendor/easyui/themes/icons/clear.png rename to vendor/FHC-vendor/easyui/themes/icons/clear.png diff --git a/vendor/easyui/themes/icons/cut.png b/vendor/FHC-vendor/easyui/themes/icons/cut.png similarity index 100% rename from vendor/easyui/themes/icons/cut.png rename to vendor/FHC-vendor/easyui/themes/icons/cut.png diff --git a/vendor/easyui/themes/icons/edit_add.png b/vendor/FHC-vendor/easyui/themes/icons/edit_add.png similarity index 100% rename from vendor/easyui/themes/icons/edit_add.png rename to vendor/FHC-vendor/easyui/themes/icons/edit_add.png diff --git a/vendor/easyui/themes/icons/edit_remove.png b/vendor/FHC-vendor/easyui/themes/icons/edit_remove.png similarity index 100% rename from vendor/easyui/themes/icons/edit_remove.png rename to vendor/FHC-vendor/easyui/themes/icons/edit_remove.png diff --git a/vendor/easyui/themes/icons/filesave.png b/vendor/FHC-vendor/easyui/themes/icons/filesave.png similarity index 100% rename from vendor/easyui/themes/icons/filesave.png rename to vendor/FHC-vendor/easyui/themes/icons/filesave.png diff --git a/vendor/easyui/themes/icons/filter.png b/vendor/FHC-vendor/easyui/themes/icons/filter.png similarity index 100% rename from vendor/easyui/themes/icons/filter.png rename to vendor/FHC-vendor/easyui/themes/icons/filter.png diff --git a/vendor/easyui/themes/icons/help.png b/vendor/FHC-vendor/easyui/themes/icons/help.png similarity index 100% rename from vendor/easyui/themes/icons/help.png rename to vendor/FHC-vendor/easyui/themes/icons/help.png diff --git a/vendor/easyui/themes/icons/large_chart.png b/vendor/FHC-vendor/easyui/themes/icons/large_chart.png similarity index 100% rename from vendor/easyui/themes/icons/large_chart.png rename to vendor/FHC-vendor/easyui/themes/icons/large_chart.png diff --git a/vendor/easyui/themes/icons/large_clipart.png b/vendor/FHC-vendor/easyui/themes/icons/large_clipart.png similarity index 100% rename from vendor/easyui/themes/icons/large_clipart.png rename to vendor/FHC-vendor/easyui/themes/icons/large_clipart.png diff --git a/vendor/easyui/themes/icons/large_picture.png b/vendor/FHC-vendor/easyui/themes/icons/large_picture.png similarity index 100% rename from vendor/easyui/themes/icons/large_picture.png rename to vendor/FHC-vendor/easyui/themes/icons/large_picture.png diff --git a/vendor/easyui/themes/icons/large_shapes.png b/vendor/FHC-vendor/easyui/themes/icons/large_shapes.png similarity index 100% rename from vendor/easyui/themes/icons/large_shapes.png rename to vendor/FHC-vendor/easyui/themes/icons/large_shapes.png diff --git a/vendor/easyui/themes/icons/large_smartart.png b/vendor/FHC-vendor/easyui/themes/icons/large_smartart.png similarity index 100% rename from vendor/easyui/themes/icons/large_smartart.png rename to vendor/FHC-vendor/easyui/themes/icons/large_smartart.png diff --git a/vendor/easyui/themes/icons/lock.png b/vendor/FHC-vendor/easyui/themes/icons/lock.png similarity index 100% rename from vendor/easyui/themes/icons/lock.png rename to vendor/FHC-vendor/easyui/themes/icons/lock.png diff --git a/vendor/easyui/themes/icons/man.png b/vendor/FHC-vendor/easyui/themes/icons/man.png similarity index 100% rename from vendor/easyui/themes/icons/man.png rename to vendor/FHC-vendor/easyui/themes/icons/man.png diff --git a/vendor/easyui/themes/icons/mini_add.png b/vendor/FHC-vendor/easyui/themes/icons/mini_add.png similarity index 100% rename from vendor/easyui/themes/icons/mini_add.png rename to vendor/FHC-vendor/easyui/themes/icons/mini_add.png diff --git a/vendor/easyui/themes/icons/mini_edit.png b/vendor/FHC-vendor/easyui/themes/icons/mini_edit.png similarity index 100% rename from vendor/easyui/themes/icons/mini_edit.png rename to vendor/FHC-vendor/easyui/themes/icons/mini_edit.png diff --git a/vendor/easyui/themes/icons/mini_refresh.png b/vendor/FHC-vendor/easyui/themes/icons/mini_refresh.png similarity index 100% rename from vendor/easyui/themes/icons/mini_refresh.png rename to vendor/FHC-vendor/easyui/themes/icons/mini_refresh.png diff --git a/vendor/easyui/themes/icons/more.png b/vendor/FHC-vendor/easyui/themes/icons/more.png similarity index 100% rename from vendor/easyui/themes/icons/more.png rename to vendor/FHC-vendor/easyui/themes/icons/more.png diff --git a/vendor/easyui/themes/icons/no.png b/vendor/FHC-vendor/easyui/themes/icons/no.png similarity index 100% rename from vendor/easyui/themes/icons/no.png rename to vendor/FHC-vendor/easyui/themes/icons/no.png diff --git a/vendor/easyui/themes/icons/ok.png b/vendor/FHC-vendor/easyui/themes/icons/ok.png similarity index 100% rename from vendor/easyui/themes/icons/ok.png rename to vendor/FHC-vendor/easyui/themes/icons/ok.png diff --git a/vendor/easyui/themes/icons/pencil.png b/vendor/FHC-vendor/easyui/themes/icons/pencil.png similarity index 100% rename from vendor/easyui/themes/icons/pencil.png rename to vendor/FHC-vendor/easyui/themes/icons/pencil.png diff --git a/vendor/easyui/themes/icons/print.png b/vendor/FHC-vendor/easyui/themes/icons/print.png similarity index 100% rename from vendor/easyui/themes/icons/print.png rename to vendor/FHC-vendor/easyui/themes/icons/print.png diff --git a/vendor/easyui/themes/icons/redo.png b/vendor/FHC-vendor/easyui/themes/icons/redo.png similarity index 100% rename from vendor/easyui/themes/icons/redo.png rename to vendor/FHC-vendor/easyui/themes/icons/redo.png diff --git a/vendor/easyui/themes/icons/reload.png b/vendor/FHC-vendor/easyui/themes/icons/reload.png similarity index 100% rename from vendor/easyui/themes/icons/reload.png rename to vendor/FHC-vendor/easyui/themes/icons/reload.png diff --git a/vendor/easyui/themes/icons/search.png b/vendor/FHC-vendor/easyui/themes/icons/search.png similarity index 100% rename from vendor/easyui/themes/icons/search.png rename to vendor/FHC-vendor/easyui/themes/icons/search.png diff --git a/vendor/easyui/themes/icons/sum.png b/vendor/FHC-vendor/easyui/themes/icons/sum.png similarity index 100% rename from vendor/easyui/themes/icons/sum.png rename to vendor/FHC-vendor/easyui/themes/icons/sum.png diff --git a/vendor/easyui/themes/icons/tip.png b/vendor/FHC-vendor/easyui/themes/icons/tip.png similarity index 100% rename from vendor/easyui/themes/icons/tip.png rename to vendor/FHC-vendor/easyui/themes/icons/tip.png diff --git a/vendor/easyui/themes/icons/undo.png b/vendor/FHC-vendor/easyui/themes/icons/undo.png similarity index 100% rename from vendor/easyui/themes/icons/undo.png rename to vendor/FHC-vendor/easyui/themes/icons/undo.png diff --git a/vendor/easyui/themes/metro/accordion.css b/vendor/FHC-vendor/easyui/themes/metro/accordion.css similarity index 100% rename from vendor/easyui/themes/metro/accordion.css rename to vendor/FHC-vendor/easyui/themes/metro/accordion.css diff --git a/vendor/easyui/themes/metro/calendar.css b/vendor/FHC-vendor/easyui/themes/metro/calendar.css similarity index 100% rename from vendor/easyui/themes/metro/calendar.css rename to vendor/FHC-vendor/easyui/themes/metro/calendar.css diff --git a/vendor/easyui/themes/metro/combo.css b/vendor/FHC-vendor/easyui/themes/metro/combo.css similarity index 100% rename from vendor/easyui/themes/metro/combo.css rename to vendor/FHC-vendor/easyui/themes/metro/combo.css diff --git a/vendor/easyui/themes/metro/combobox.css b/vendor/FHC-vendor/easyui/themes/metro/combobox.css similarity index 100% rename from vendor/easyui/themes/metro/combobox.css rename to vendor/FHC-vendor/easyui/themes/metro/combobox.css diff --git a/vendor/easyui/themes/metro/datagrid.css b/vendor/FHC-vendor/easyui/themes/metro/datagrid.css similarity index 100% rename from vendor/easyui/themes/metro/datagrid.css rename to vendor/FHC-vendor/easyui/themes/metro/datagrid.css diff --git a/vendor/easyui/themes/metro/datalist.css b/vendor/FHC-vendor/easyui/themes/metro/datalist.css similarity index 100% rename from vendor/easyui/themes/metro/datalist.css rename to vendor/FHC-vendor/easyui/themes/metro/datalist.css diff --git a/vendor/easyui/themes/metro/datebox.css b/vendor/FHC-vendor/easyui/themes/metro/datebox.css similarity index 100% rename from vendor/easyui/themes/metro/datebox.css rename to vendor/FHC-vendor/easyui/themes/metro/datebox.css diff --git a/vendor/easyui/themes/metro/dialog.css b/vendor/FHC-vendor/easyui/themes/metro/dialog.css similarity index 100% rename from vendor/easyui/themes/metro/dialog.css rename to vendor/FHC-vendor/easyui/themes/metro/dialog.css diff --git a/vendor/easyui/themes/metro/easyui.css b/vendor/FHC-vendor/easyui/themes/metro/easyui.css similarity index 100% rename from vendor/easyui/themes/metro/easyui.css rename to vendor/FHC-vendor/easyui/themes/metro/easyui.css diff --git a/vendor/easyui/themes/metro/filebox.css b/vendor/FHC-vendor/easyui/themes/metro/filebox.css similarity index 100% rename from vendor/easyui/themes/metro/filebox.css rename to vendor/FHC-vendor/easyui/themes/metro/filebox.css diff --git a/vendor/easyui/themes/metro/images/accordion_arrows.png b/vendor/FHC-vendor/easyui/themes/metro/images/accordion_arrows.png similarity index 100% rename from vendor/easyui/themes/metro/images/accordion_arrows.png rename to vendor/FHC-vendor/easyui/themes/metro/images/accordion_arrows.png diff --git a/vendor/easyui/themes/metro/images/blank.gif b/vendor/FHC-vendor/easyui/themes/metro/images/blank.gif similarity index 100% rename from vendor/easyui/themes/metro/images/blank.gif rename to vendor/FHC-vendor/easyui/themes/metro/images/blank.gif diff --git a/vendor/easyui/themes/metro/images/calendar_arrows.png b/vendor/FHC-vendor/easyui/themes/metro/images/calendar_arrows.png similarity index 100% rename from vendor/easyui/themes/metro/images/calendar_arrows.png rename to vendor/FHC-vendor/easyui/themes/metro/images/calendar_arrows.png diff --git a/vendor/easyui/themes/metro/images/combo_arrow.png b/vendor/FHC-vendor/easyui/themes/metro/images/combo_arrow.png similarity index 100% rename from vendor/easyui/themes/metro/images/combo_arrow.png rename to vendor/FHC-vendor/easyui/themes/metro/images/combo_arrow.png diff --git a/vendor/easyui/themes/metro/images/datagrid_icons.png b/vendor/FHC-vendor/easyui/themes/metro/images/datagrid_icons.png similarity index 100% rename from vendor/easyui/themes/metro/images/datagrid_icons.png rename to vendor/FHC-vendor/easyui/themes/metro/images/datagrid_icons.png diff --git a/vendor/easyui/themes/metro/images/datebox_arrow.png b/vendor/FHC-vendor/easyui/themes/metro/images/datebox_arrow.png similarity index 100% rename from vendor/easyui/themes/metro/images/datebox_arrow.png rename to vendor/FHC-vendor/easyui/themes/metro/images/datebox_arrow.png diff --git a/vendor/easyui/themes/metro/images/layout_arrows.png b/vendor/FHC-vendor/easyui/themes/metro/images/layout_arrows.png similarity index 100% rename from vendor/easyui/themes/metro/images/layout_arrows.png rename to vendor/FHC-vendor/easyui/themes/metro/images/layout_arrows.png diff --git a/vendor/easyui/themes/metro/images/linkbutton_bg.png b/vendor/FHC-vendor/easyui/themes/metro/images/linkbutton_bg.png similarity index 100% rename from vendor/easyui/themes/metro/images/linkbutton_bg.png rename to vendor/FHC-vendor/easyui/themes/metro/images/linkbutton_bg.png diff --git a/vendor/easyui/themes/metro/images/loading.gif b/vendor/FHC-vendor/easyui/themes/metro/images/loading.gif similarity index 100% rename from vendor/easyui/themes/metro/images/loading.gif rename to vendor/FHC-vendor/easyui/themes/metro/images/loading.gif diff --git a/vendor/easyui/themes/metro/images/menu_arrows.png b/vendor/FHC-vendor/easyui/themes/metro/images/menu_arrows.png similarity index 100% rename from vendor/easyui/themes/metro/images/menu_arrows.png rename to vendor/FHC-vendor/easyui/themes/metro/images/menu_arrows.png diff --git a/vendor/easyui/themes/metro/images/messager_icons.png b/vendor/FHC-vendor/easyui/themes/metro/images/messager_icons.png similarity index 100% rename from vendor/easyui/themes/metro/images/messager_icons.png rename to vendor/FHC-vendor/easyui/themes/metro/images/messager_icons.png diff --git a/vendor/easyui/themes/metro/images/pagination_icons.png b/vendor/FHC-vendor/easyui/themes/metro/images/pagination_icons.png similarity index 100% rename from vendor/easyui/themes/metro/images/pagination_icons.png rename to vendor/FHC-vendor/easyui/themes/metro/images/pagination_icons.png diff --git a/vendor/easyui/themes/metro/images/panel_tools.png b/vendor/FHC-vendor/easyui/themes/metro/images/panel_tools.png similarity index 100% rename from vendor/easyui/themes/metro/images/panel_tools.png rename to vendor/FHC-vendor/easyui/themes/metro/images/panel_tools.png diff --git a/vendor/easyui/themes/metro/images/searchbox_button.png b/vendor/FHC-vendor/easyui/themes/metro/images/searchbox_button.png similarity index 100% rename from vendor/easyui/themes/metro/images/searchbox_button.png rename to vendor/FHC-vendor/easyui/themes/metro/images/searchbox_button.png diff --git a/vendor/easyui/themes/metro/images/slider_handle.png b/vendor/FHC-vendor/easyui/themes/metro/images/slider_handle.png similarity index 100% rename from vendor/easyui/themes/metro/images/slider_handle.png rename to vendor/FHC-vendor/easyui/themes/metro/images/slider_handle.png diff --git a/vendor/easyui/themes/metro/images/spinner_arrows.png b/vendor/FHC-vendor/easyui/themes/metro/images/spinner_arrows.png similarity index 100% rename from vendor/easyui/themes/metro/images/spinner_arrows.png rename to vendor/FHC-vendor/easyui/themes/metro/images/spinner_arrows.png diff --git a/vendor/easyui/themes/metro/images/tabs_icons.png b/vendor/FHC-vendor/easyui/themes/metro/images/tabs_icons.png similarity index 100% rename from vendor/easyui/themes/metro/images/tabs_icons.png rename to vendor/FHC-vendor/easyui/themes/metro/images/tabs_icons.png diff --git a/vendor/easyui/themes/metro/images/tree_icons.png b/vendor/FHC-vendor/easyui/themes/metro/images/tree_icons.png similarity index 100% rename from vendor/easyui/themes/metro/images/tree_icons.png rename to vendor/FHC-vendor/easyui/themes/metro/images/tree_icons.png diff --git a/vendor/easyui/themes/metro/images/validatebox_warning.png b/vendor/FHC-vendor/easyui/themes/metro/images/validatebox_warning.png similarity index 100% rename from vendor/easyui/themes/metro/images/validatebox_warning.png rename to vendor/FHC-vendor/easyui/themes/metro/images/validatebox_warning.png diff --git a/vendor/easyui/themes/metro/layout.css b/vendor/FHC-vendor/easyui/themes/metro/layout.css similarity index 100% rename from vendor/easyui/themes/metro/layout.css rename to vendor/FHC-vendor/easyui/themes/metro/layout.css diff --git a/vendor/easyui/themes/metro/linkbutton.css b/vendor/FHC-vendor/easyui/themes/metro/linkbutton.css similarity index 100% rename from vendor/easyui/themes/metro/linkbutton.css rename to vendor/FHC-vendor/easyui/themes/metro/linkbutton.css diff --git a/vendor/easyui/themes/metro/menu.css b/vendor/FHC-vendor/easyui/themes/metro/menu.css similarity index 100% rename from vendor/easyui/themes/metro/menu.css rename to vendor/FHC-vendor/easyui/themes/metro/menu.css diff --git a/vendor/easyui/themes/metro/menubutton.css b/vendor/FHC-vendor/easyui/themes/metro/menubutton.css similarity index 100% rename from vendor/easyui/themes/metro/menubutton.css rename to vendor/FHC-vendor/easyui/themes/metro/menubutton.css diff --git a/vendor/easyui/themes/metro/messager.css b/vendor/FHC-vendor/easyui/themes/metro/messager.css similarity index 100% rename from vendor/easyui/themes/metro/messager.css rename to vendor/FHC-vendor/easyui/themes/metro/messager.css diff --git a/vendor/easyui/themes/metro/numberbox.css b/vendor/FHC-vendor/easyui/themes/metro/numberbox.css similarity index 100% rename from vendor/easyui/themes/metro/numberbox.css rename to vendor/FHC-vendor/easyui/themes/metro/numberbox.css diff --git a/vendor/easyui/themes/metro/pagination.css b/vendor/FHC-vendor/easyui/themes/metro/pagination.css similarity index 100% rename from vendor/easyui/themes/metro/pagination.css rename to vendor/FHC-vendor/easyui/themes/metro/pagination.css diff --git a/vendor/easyui/themes/metro/panel.css b/vendor/FHC-vendor/easyui/themes/metro/panel.css similarity index 100% rename from vendor/easyui/themes/metro/panel.css rename to vendor/FHC-vendor/easyui/themes/metro/panel.css diff --git a/vendor/easyui/themes/metro/progressbar.css b/vendor/FHC-vendor/easyui/themes/metro/progressbar.css similarity index 100% rename from vendor/easyui/themes/metro/progressbar.css rename to vendor/FHC-vendor/easyui/themes/metro/progressbar.css diff --git a/vendor/easyui/themes/metro/propertygrid.css b/vendor/FHC-vendor/easyui/themes/metro/propertygrid.css similarity index 100% rename from vendor/easyui/themes/metro/propertygrid.css rename to vendor/FHC-vendor/easyui/themes/metro/propertygrid.css diff --git a/vendor/easyui/themes/metro/searchbox.css b/vendor/FHC-vendor/easyui/themes/metro/searchbox.css similarity index 100% rename from vendor/easyui/themes/metro/searchbox.css rename to vendor/FHC-vendor/easyui/themes/metro/searchbox.css diff --git a/vendor/easyui/themes/metro/slider.css b/vendor/FHC-vendor/easyui/themes/metro/slider.css similarity index 100% rename from vendor/easyui/themes/metro/slider.css rename to vendor/FHC-vendor/easyui/themes/metro/slider.css diff --git a/vendor/easyui/themes/metro/spinner.css b/vendor/FHC-vendor/easyui/themes/metro/spinner.css similarity index 100% rename from vendor/easyui/themes/metro/spinner.css rename to vendor/FHC-vendor/easyui/themes/metro/spinner.css diff --git a/vendor/easyui/themes/metro/splitbutton.css b/vendor/FHC-vendor/easyui/themes/metro/splitbutton.css similarity index 100% rename from vendor/easyui/themes/metro/splitbutton.css rename to vendor/FHC-vendor/easyui/themes/metro/splitbutton.css diff --git a/vendor/easyui/themes/metro/switchbutton.css b/vendor/FHC-vendor/easyui/themes/metro/switchbutton.css similarity index 100% rename from vendor/easyui/themes/metro/switchbutton.css rename to vendor/FHC-vendor/easyui/themes/metro/switchbutton.css diff --git a/vendor/easyui/themes/metro/tabs.css b/vendor/FHC-vendor/easyui/themes/metro/tabs.css similarity index 100% rename from vendor/easyui/themes/metro/tabs.css rename to vendor/FHC-vendor/easyui/themes/metro/tabs.css diff --git a/vendor/easyui/themes/metro/textbox.css b/vendor/FHC-vendor/easyui/themes/metro/textbox.css similarity index 100% rename from vendor/easyui/themes/metro/textbox.css rename to vendor/FHC-vendor/easyui/themes/metro/textbox.css diff --git a/vendor/easyui/themes/metro/tooltip.css b/vendor/FHC-vendor/easyui/themes/metro/tooltip.css similarity index 100% rename from vendor/easyui/themes/metro/tooltip.css rename to vendor/FHC-vendor/easyui/themes/metro/tooltip.css diff --git a/vendor/easyui/themes/metro/tree.css b/vendor/FHC-vendor/easyui/themes/metro/tree.css similarity index 100% rename from vendor/easyui/themes/metro/tree.css rename to vendor/FHC-vendor/easyui/themes/metro/tree.css diff --git a/vendor/easyui/themes/metro/validatebox.css b/vendor/FHC-vendor/easyui/themes/metro/validatebox.css similarity index 100% rename from vendor/easyui/themes/metro/validatebox.css rename to vendor/FHC-vendor/easyui/themes/metro/validatebox.css diff --git a/vendor/easyui/themes/metro/window.css b/vendor/FHC-vendor/easyui/themes/metro/window.css similarity index 100% rename from vendor/easyui/themes/metro/window.css rename to vendor/FHC-vendor/easyui/themes/metro/window.css diff --git a/vendor/easyui/themes/mobile.css b/vendor/FHC-vendor/easyui/themes/mobile.css similarity index 100% rename from vendor/easyui/themes/mobile.css rename to vendor/FHC-vendor/easyui/themes/mobile.css diff --git a/vendor/easyui/themes/vilesci b/vendor/FHC-vendor/easyui/themes/vilesci similarity index 100% rename from vendor/easyui/themes/vilesci rename to vendor/FHC-vendor/easyui/themes/vilesci diff --git a/vendor/FHC-vendor/jquery-tablesorter/.gitattributes b/vendor/FHC-vendor/jquery-tablesorter/.gitattributes new file mode 100644 index 000000000..14d674691 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/.gitattributes @@ -0,0 +1,23 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp +*.sln merge=union +*.csproj merge=union +*.vbproj merge=union +*.fsproj merge=union +*.dbproj merge=union + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain +*.md diss=astextplain \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/.gitignore b/vendor/FHC-vendor/jquery-tablesorter/.gitignore new file mode 100644 index 000000000..4fa9ca09d --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/.gitignore @@ -0,0 +1,165 @@ +################# +## Eclipse +################# + +*.pydevproject +.project +.metadata +bin/ +tmp/ +*_test*.* +*.tmp +*.bak +*.swp +*~.nib +local.properties +.classpath +.settings/ +.loadpath + +# External tool builders +.externalToolBuilders/ + +# Locally stored "Eclipse launch configurations" +*.launch + +# CDT-specific +.cproject + +# PDT-specific +.buildpath + + +################# +## Visual Studio +################# + +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.suo +*.user +*.sln.docstates + +# Build results +[Dd]ebug/ +[Rr]elease/ +node_modules/ +*_i.c +*_p.c +*.ilk +*.log +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.vspscc +.builds +*.dotCover + +## TODO: If you have NuGet Package Restore enabled, uncomment this +#packages/ + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf + +# Visual Studio profiler +*.psess +*.vsp + +# ReSharper is a .NET coding add-in +_ReSharper* + +# Installshield output folder +[Ee]xpress + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish + +# Others +[Bb]in +[Oo]bj +sql +TestResults +*.Cache +ClientBin +stylecop.* +~$* +*.dbmdl +Generated_Code #added for RIA/Silverlight projects + +# Backup & report files from converting an old project file to a newer +# Visual Studio version. Backup files are not needed, because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML + + + +############ +## Windows +############ + +# Windows image file caches +Thumbs.db + +# Folder config file +Desktop.ini + + +############# +## Python +############# + +*.py[co] + +# Packages +*.egg +*.egg-info +build +eggs +parts +bin +var +sdist +develop-eggs +.installed.cfg + +# Installer logs +pip-log.txt + +# Unit test / coverage reports +.coverage +.tox + +#Translations +*.mo + +#Mr Developer +.mr.developer.cfg + +# Mac crap +.DS_Store diff --git a/vendor/FHC-vendor/jquery-tablesorter/.jscsrc b/vendor/FHC-vendor/jquery-tablesorter/.jscsrc new file mode 100644 index 000000000..d0bf1c210 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/.jscsrc @@ -0,0 +1,65 @@ +{ + "disallowDanglingUnderscores": true, + "disallowEmptyBlocks": true, + "disallowKeywords": [ + "with" + ], + "disallowMixedSpacesAndTabs": "smart", + "disallowMultipleLineBreaks": true, + "disallowMultipleLineStrings": true, + "disallowNewlineBeforeBlockStatements": true, + "disallowOperatorBeforeLineBreak": [ + "." + ], + "disallowSpaceAfterPrefixUnaryOperators": true, + "disallowSpaceBeforeBinaryOperators": [ + "," + ], + "disallowSpaceBeforePostfixUnaryOperators": true, + "disallowSpacesInCallExpression": true, + + "disallowTrailingComma": true, + "maximumLineLength": { + "allowRegex": true, + "allowUrlComments": true, + "tabSize": 2, + "value": 180 + }, + "requireBlocksOnNewline": 1, + "requireCommaBeforeLineBreak": true, + "requireCurlyBraces": [ + "do" + ], + "requireDollarBeforejQueryAssignment": true, + "requireDotNotation": true, + "requireLineFeedAtFileEnd": true, + "requireParenthesesAroundIIFE": true, + "requireSemicolons": true, + "requireSpaceAfterBinaryOperators": true, + "requireSpaceAfterKeywords": [ + "if", + "else", + "for", + "while", + "do", + "switch", + "case", + "return", + "try", + "catch", + "typeof" + ], + "requireSpaceAfterLineComment": true, + "requireSpaceBeforeBinaryOperators": true, + "requireSpacesInConditionalExpression": true, + "requireSpacesInForStatement": true, + "requireSpacesInsideArrayBrackets": "all", + "validateIndentation": { + "includeEmptyLines": false, + "value": "\t" + }, + "validateQuoteMarks": { + "escape": true, + "mark": "'" + } +} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/CONTRIBUTING.md b/vendor/FHC-vendor/jquery-tablesorter/CONTRIBUTING.md new file mode 100644 index 000000000..e707a1bee --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/CONTRIBUTING.md @@ -0,0 +1,45 @@ +# Contributing to tablesorter (FORK) + +1. [Getting Involved](#getting-involved) +2. [How To Report issues](#how-to-report-issues) +3. [Contributing Code](#contributing-code) + +## Getting Involved + +There are a number of ways to get involved with the development of this fork of Tablesorter. Even if you've never contributed to an Open Source project before, we're always looking for help identifying issues. + +## How to Report issues, or make requests. + +* First off make sure it's a new issue. Search the [FAQ](https://github.com/Mottie/tablesorter/wiki/FAQ), [documents](http://mottie.github.io/tablesorter/docs/) and the [issues](https://github.com/Mottie/tablesorter/issues). +* If it's an existing issue or feature request, and you want to show that it is also a concern for you. Add a comment! +* If it turns out to not be an issue, but a question instead: + * Please don't open a new issue. + * Jump on out freenode.net IRC channel: `#tablesorter`. + * Ask the question on [Stackoverflow](https://stackoverflow.com/questions/tagged/tablesorter) (tablesorter or jQuery tag). +* If you do open a new issue: + * If the issue only occurs in a particular browser or version of jQuery, that would be awesome to know! + * Please include any *relevant* code (posting the entire page usually isn't that helpful). + * Add if there are any errors showing in the console (press F12 in the browser and go to the console tab). + * Include screenshots, animated gifs, videos (check out [screenr](https://www.screenr.com/)) or funny cat pictures. You never know what might help! + +## Contributing Code + +* Installation: + * Please see the [Customize](https://github.com/Mottie/tablesorter/wiki/Customize) wiki page for specifics on how to install the necessary modules & create a custom build. + * If you aren't comfortable using grunt or making a build file, you can go ahead and just share the changes. +* Style Guide: + * We're not too strict, just try to follow the style that is already being used in the code; here is a [.jscsrc file](https://gist.github.com/Herst/39263a478046a48f1860) by [@Herst](https://github.com/Herst) you can use! + * When naming variables: + * Use names that describe it's contents. I'm guilty of naming things `t` and `i`, but I'm slowly trying to rename them to make reading code and finding the variable in the code easier. + * Name jQuery objects with a leading `$`, e.g. `var $table = $('table');` + * We like semicolons! Jshint will yell at you if you don't use them. + * We like single quotes! It's OCD man! + * We like tabs! + * We like pizza! +* Pull request: + * Before opening a pull request, please make sure that your code is on a *fork* of the master. This is really for your own convenience: it's easy for us to accept your pull request from your master branch, but it's problematic for your fork when you want to pull the changes back and your master branch has diverged from upstream's master branch. + * Add unit tests - tablesorter is still missing a lot of unit tests, so adding tests for your contribution would be a tremendous help! + * Also, make sure to test your changes! + * Use `grunt test` ([ref](https://github.com/Mottie/tablesorter/wiki/Customize#testing-a-build)) + * If you aren't comfortable with using grunt, copy, then paste your code into [jsHint](http://jshint.com/) to help find any problems with the changes. + * There is no need to open an issue, then create a pull request. Just create the pull request and add any comments about your changes there. diff --git a/vendor/FHC-vendor/jquery-tablesorter/Gruntfile.js b/vendor/FHC-vendor/jquery-tablesorter/Gruntfile.js new file mode 100644 index 000000000..5c259b3b7 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/Gruntfile.js @@ -0,0 +1,428 @@ +/*global module:false*/ +module.exports = function( grunt ) { + 'use strict'; + + var pkg = grunt.file.readJSON( 'package.json' ), + tasks, + widgetFilePrefix, + widgetFileSuffix, + + defaults = { + dependencies : { + widgets: { + 'saveSort resizable pager filter columnSelector' : 'storage', + 'filter-formatter-html5 filter-formatter-jui filter-formatter-select2' : 'filter' + // 'stickyHeaders' : 'addResizeEvent' // included with stickyHeaders widget (for now) + } + }, + standardWidgets: [ + 'storage', // req by saveSort; optional in others + 'uitheme', + 'columns', + 'filter', + 'stickyHeaders', + 'resizable', + 'saveSort' + // 'addResizeEvent', // included with stickyHeaders widget + // 'zebra' // included in core + ], + standardWidgetFileName: 'jquery.tablesorter.widgets.js', + wrappers : { + widgetPrefix: 'js/widgets/widget-', + widgetSuffix: '.js', + parserPrefix: 'js/parsers/parser-', + parserSuffix: '.js' + }, + wrapperUMD: { + // tablesorter core + coreBanner: '(function(factory) {\n' + + " if (typeof define === 'function' && define.amd) {\n" + + " define(['jquery'], factory);\n" + + " } else if (typeof module === 'object' && typeof module.exports === 'object') {\n" + + " module.exports = factory(require('jquery'));\n" + + ' } else {\n' + + ' factory(jQuery);\n' + + ' }\n' + + '}(function($) {\n\n', + // widgets wrapper & combined wrapper - may need a separate entry when this wrapper is redefined to make + // widgets a dependency of the core (see https://github.com/Mottie/tablesorter/issues/855) + banner: '<%= pkg.banner %>/* Includes widgets ( <%= pkg.selectedWidgets %> <%= pkg.selectedParsers %>) */\n' + + '(function(factory) {\n' + + " if (typeof define === 'function' && define.amd) {\n" + + " define(['jquery'], factory);\n" + + " } else if (typeof module === 'object' && typeof module.exports === 'object') {\n" + + " module.exports = factory(require('jquery'));\n" + + ' } else {\n' + + ' factory(jQuery);\n' + + ' }\n' + + '}(function($) {\n\n', + footer: '\nreturn $.tablesorter;\n}));\n' + }, + noModBanner: '/*** This file is dynamically generated ***\n' + + '█████▄ ▄████▄ █████▄ ▄████▄ ██████ ███████▄ ▄████▄ █████▄ ██ ██████ ██ ██\n' + + '██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▄▄ ██▄▄██\n' + + '██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀▀▀██\n' + + '█████▀ ▀████▀ ██ ██ ▀████▀ ██ ██ ██ ██ ▀████▀ █████▀ ██ ██ █████▀\n*/\n' + }, + + // example widgets = [ 'pager', 'column', 'filter', 'stickyHeaders' ]; + addWidgetDependencies = function( widgets ) { + var indx, dep, + maxDeps = 40, // just in case (there are currently 27 widgets) + len = widgets.length, + deps = defaults.dependencies.widgets; + for ( dep in deps ) { + if ( typeof dep === 'string' ) { + for ( indx = 0; indx < len; indx++ ) { + // make sure indexOf is not matching 'column' instead of 'columnSelector' with surrounding spaces + if ( ( ' ' + dep + ' ' ).indexOf( ' ' + widgets[indx] + ' ' ) >= 0 && widgets.indexOf( deps[ dep ] ) < 0 ) { + widgets.push( deps[ dep ] ); + // keep checking newly added widgets, in case 'filter' is added and 'storage' hasn't been + if ( len < maxDeps ) { len++; } + continue; + } + } + } + } + return widgets; + }, + formFileNames = function() { + var wrap = defaults.wrappers; + // add widget path & file extension + pkg.processedWidgets = ( wrap.widgetPrefix + + pkg.selectedWidgets.join( wrap.widgetSuffix + ',' + wrap.widgetPrefix ) + + wrap.widgetSuffix ).split( ',' ); + console.info( 'Creating a widgets file with: ' + pkg.selectedWidgets.join(', ') ); + + if ( pkg.selectedParsers ) { + // parser path & file extension + pkg.processedParsers = ( wrap.parserPrefix + + pkg.selectedParsers.join( wrap.parserSuffix + ',' + wrap.parserPrefix ) + + wrap.parserSuffix ).split( ',' ); + console.info( 'Creating a combined file with selected widgets & these parsers: ' + pkg.selectedParsers.join(', ') ); + // make this look nice for the banner + pkg.selectedParsers = ') & parsers ( ' + pkg.selectedParsers + ' '; + } + console.info( pkg.processedParsers ); + }; + + // minified banner template - updated ##/##/20## (v2.##.##) + pkg.banner = '/*! <%= pkg.name %> (FORK) - updated ' + + '<%= grunt.template.today("mm-dd-yyyy") %> (v<%= pkg.version %>)*/\n'; + + pkg.buildWidget = defaults.standardWidgetFileName; + pkg.buildCombined = 'jquery.tablesorter.combined.js'; + pkg.processedParsers = '!js/parsers/*.js'; + + // Project configuration. + grunt.initConfig({ + pkg: pkg, + + clean: { + build: { + src: [ 'dist/**/**/**/*', 'dist/**/**/*', 'dist/**/*', 'dist' ] + }, + css: { + src: [ 'dist/css/*.css', '!dist/css/*.min.css' ] + } + }, + + copy: { + css: { + files : [{ + expand: true, + dot: true, + flatten: true, + src: [ 'css/*.css', 'addons/pager/*.css' ], + dest: 'dist/css/', + rename: function( dest, src ) { + if ( /black-ice/.test( src ) ) { + src = src.replace( /-/, '' ); + } + return dest + src; + } + }] + }, + less: { + expand: true, + flatten: true, + src: 'css/*.less', + dest: 'dist/css/less/' + }, + images: { + expand: true, + flatten: true, + src: [ 'addons/pager/icons/*', 'css/images/*' ], + dest: 'dist/css/images/' + } + }, + + concat: { + main: { + options: { + banner: defaults.wrapperUMD.coreBanner, + footer: defaults.wrapperUMD.footer + }, + src: [ 'js/jquery.tablesorter.js' ], + dest: 'dist/js/jquery.tablesorter.js' + }, + widgets: { + options: { + banner: defaults.wrapperUMD.banner, + footer: defaults.wrapperUMD.footer + }, + src: [ + '<%= pkg.processedWidgets %>', + '!js/widgets/_test-*.js', + '!js/widgets/*.min.js' + ], + dest: 'dist/js/<%= pkg.buildWidget %>' + }, + everything: { + options: { + banner: defaults.wrapperUMD.banner, + footer: defaults.wrapperUMD.footer + }, + src: [ + 'js/jquery.tablesorter.js', + '<%= pkg.processedWidgets %>', + '<%= pkg.processedParsers %>', + '!js/widgets/_test-*.js', + '!js/widgets/*.min.js' + ], + dest: 'dist/js/<%= pkg.buildCombined %>' + }, + // keep all the existing jsFiddle demos from breaking + copybackWidgets: { + options: { + banner: defaults.noModBanner + }, + src : ['dist/js/<%= pkg.buildWidget %>'], + dest: 'js/<%= pkg.buildWidget %>' + }, + copybackCombined: { + options: { + banner: defaults.noModBanner + }, + src : ['dist/js/<%= pkg.buildCombined %>'], + dest: 'js/<%= pkg.buildCombined %>' + } + }, + + jscs: { + src: [ + 'addons/pager/*.js', + '!addons/pager/*.min.js', + 'js/jquery.*.js', + 'js/**/*.js', + '!js/_test-*.js', + '!js/jquery.tablesorter.combined.js', + '!js/jquery.tablesorter.widgets.js', + '!js/extras/jquery.dragtable.mod.js', // indents with spaces; keeping original formatting to make diffs easier + '!js/extras/jquery.metadata.js', // phasing this one out anyway + '!js/**/_test-*.js', + '!js/*.min.js', + '!js/**/semver*.js' + ], + options: { + config: '.jscsrc' + } + }, + + jshint: { + files: { + src: [ + 'addons/pager/*.js', + '!addons/pager/*.min.js', + 'js/jquery.*.js', + 'js/**/*.js', + '!js/_test-*.js', + '!js/**/_test-*.js', + '!js/*.min.js', + '!js/**/semver*.js' + ] + }, + options: { + globals: { + 'JSON': false, + 'localStorage': false, + 'navigator': false, + 'console': false, + 'require': false, + 'define': false, + 'module': false + }, + 'loopfunc': true, + 'jquery': true, + 'browser': true, + 'es3': true, + 'unused': true, + 'undef': true + } + }, + + uglify: { + options: { + preserveComments: function( node, comment ){ + return /^!/.test( comment.value ); + }, + report: 'gzip' + }, + allFiles: { + files: [{ + expand: true, + cwd: './js/', // Src matches are relative to this path. + src: [ + '**/*.js', + '!jquery.tablesorter.js', + '!_test-*.js', + '!**/_test-*.js', + '!*.min.js', + '!**/semver.js' + ], + dest: 'dist/js/', + ext: '.min.js', // Dist files will have this extension. + extDot: 'last' // Extensions in filenames begin after this dot + }] + }, + // jquery.tablesorter.min.js is being minified from js/jquery.tablesorter.js + // so it doesn't include the UMD wrapper! Point to the dist/js/ version + main: { + files : [{ + expand: true, + cwd: './dist/js/', + src: [ 'jquery.tablesorter.js' ], + dest: 'dist/js/', + ext: '.min.js', // Dist files will have this extension. + extDot: 'last' // Extensions in filenames begin after this dot + }] + }, + pageraddon: { + files: { + 'dist/js/extras/jquery.tablesorter.pager.min.js': [ 'addons/pager/*.js' ] + } + } + }, + + cssmin: { + target: { + files: [{ + expand: true, + flatten: true, + cwd: 'dist/css', + src: ['*.css', '!_test-*.css'], + dest: 'dist/css', + ext: '.min.css', + extDot: 'last' + }] + } + }, + + qunit: { + files: [ 'test.html' ] + }, + + watch: { + scripts: { + files: [ + 'js/*.js', + 'js/**/*.js', + '!js/_test-*.js', + '!js/*.min.js' + ], + tasks: [ 'build' ] + } + } + + }); + + grunt.loadNpmTasks( 'grunt-contrib-clean' ); + grunt.loadNpmTasks( 'grunt-contrib-jshint' ); + grunt.loadNpmTasks( 'grunt-contrib-qunit' ); + grunt.loadNpmTasks( 'grunt-contrib-concat' ); + grunt.loadNpmTasks( 'grunt-contrib-uglify' ); + grunt.loadNpmTasks( 'grunt-contrib-copy' ); + grunt.loadNpmTasks( 'grunt-contrib-watch' ); + grunt.loadNpmTasks( 'grunt-contrib-cssmin' ); + grunt.loadNpmTasks( 'grunt-jscs' ); + + grunt.registerTask( 'test', [ 'jscs', 'jshint', 'qunit' ] ); + + tasks = [ + 'clean:build', + 'copy', + 'concat', + 'uglify', + 'cssmin', + 'clean:css', + 'updateManifest' + ]; + + // basic = same as before: core, widgets, filterformatter all separate + grunt.registerTask( 'default', 'Default build', function() { + pkg.selectedWidgets = addWidgetDependencies( defaults.standardWidgets ); + formFileNames(); + grunt.task.run(tasks); + }); + + // quick build to just minify files for pushes between updates + grunt.registerTask( 'quick', [ 'copy', 'uglify', 'clean:css' ] ); + + // enter 'grunt custom:{filename}' (not including the '.json') + // to load in a custom json file + // the expected JSON format is (with custom widgets in a string): + // { "widgets" : "columnHighlight filter resizable saveSort stickyHeaders uitheme" } + grunt.registerTask( 'custom', 'Custom build', function(file) { + var temp, widgets, + parsers = '', + deps = true; + + /* Allow developer to set up a custom widget build (json file will have settings)*/ + try { + temp = grunt.file.readJSON( file ); + if ( temp ) { + parsers = temp.parsers; + // include dependencies? + deps = ('includeDependencies' in temp) ? temp.includeDependencies : true; + // custom file name? + pkg.buildWidget = ('destFileName' in temp) ? temp.destFileName : 'jquery.tablesorter.custom-widgets.js'; + // widgets to include + widgets = (temp.widgets || ''); + if (widgets.replace(/\s+/g,'') === '') { + grunt.log.error('No widgets found in custom build file.'); + console.info('Continuing build with default widgets...'); + temp = defaults.standardWidgets; + pkg.buildWidget = defaults.standardWidgetFileName; + } else { + temp = widgets.split(/\s+/); + } + } + } catch (err) { + grunt.log.error('Custom build json not found - Use "grunt custom:{filename}"'); + console.info('Continuing build with default settings'); + temp = defaults.standardWidgets; + } + // add dependencies + pkg.selectedWidgets = deps ? addWidgetDependencies( temp ) : temp; + pkg.selectedParsers = parsers.split( /\s+/ ); + formFileNames(); + grunt.task.run(tasks); + }); + + // update tablesorter.jquery.json file version numbers to match the package.json version + grunt.registerTask( 'updateManifest', function() { + var i, project, + projectFile = [ 'tablesorter.jquery.json' ], + len = projectFile.length; + for ( i = 0; i < len; i++ ) { + if ( !grunt.file.exists( projectFile[ i ] ) ) { + grunt.log.error( 'file ' + projectFile[ i ] + ' not found' ); + return true; // return false to abort the execution + } + project = grunt.file.readJSON( projectFile[ i ] ); // get file as json object + project.version = pkg.version; + grunt.file.write( projectFile[i], JSON.stringify( project, null, 2 ) ); // serialize it back to file + } + }); + +}; diff --git a/vendor/FHC-vendor/jquery-tablesorter/README.md b/vendor/FHC-vendor/jquery-tablesorter/README.md new file mode 100644 index 000000000..dd5fe0699 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/README.md @@ -0,0 +1,159 @@ +tablesorter (FORK) is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. tablesorter can successfully parse and sort many types of data including linked data in a cell. This forked version adds lots of new enhancements including: alphanumeric sorting, pager callback functons, multiple widgets providing column styling, ui theme application, sticky headers, column filters and resizer, as well as extended documentation with a lot more demos. + +[![Bower Version][bower-image]][bower-url] [![NPM Version][npm-image]][npm-url] [![devDependency Status][david-dev-image]][david-dev-url] [![zenhub-image]][zenhub-url] + +### Notice! + +* Because of the change to the internal cache, the tablesorter v2.16+ core, filter widget and pager (both plugin & widget) will only work with the same version or newer files. + +### [Documentation](//mottie.github.io/tablesorter/docs/) + +* See the [full documentation](//mottie.github.io/tablesorter/docs/). +* All of the [original document pages](//tablesorter.com/docs/) have been included. +* Information from my blog post on [undocumented options](//wowmotty.blogspot.com/2011/06/jquery-tablesorter-missing-docs.html) and lots of new demos have also been included. +* Change log moved from included text file into the [wiki documentation](//github.com/Mottie/tablesorter/wiki/Changes). + +### Demos + +* [Basic alpha-numeric sort Demo](//mottie.github.com/tablesorter/). +* Links to demo pages can be found within the main [documentation](//mottie.github.io/tablesorter/docs/). +* More demos & playgrounds - updated in the [wiki pages](//github.com/Mottie/tablesorter/wiki). + +### Features + +* Multi-column alphanumeric sorting and filtering. +* Multi-tbody sorting - see the [options](//mottie.github.io/tablesorter/docs/index.html#options) table on the main document page. +* Supports [Bootstrap v2 and 3](//mottie.github.io/tablesorter/docs/example-widget-bootstrap-theme.html) +* Parsers for sorting text, alphanumeric text, URIs, integers, currency, floats, IP addresses, dates (ISO, long and short formats) & time. [Add your own easily](//mottie.github.io/tablesorter/docs/example-parsers.html). +* Inline editing - see [demo](//mottie.github.io/tablesorter/docs/example-widget-editable.html) +* Support for ROWSPAN and COLSPAN on TH elements. +* Support secondary "hidden" sorting (e.g., maintain alphabetical sort when sorting on other criteria). +* Extensibility via [widget system](//mottie.github.io/tablesorter/docs/example-widgets.html). +* Cross-browser: IE 6.0+, FF 2+, Safari 2.0+, Opera 9.0+, Chrome 5.0+. +* Small code size, starting at 25K minified +* Works with jQuery 1.2.6+ (jQuery 1.4.1+ needed with some widgets). +* Works with jQuery 1.9+ (`$.browser.msie` was removed; needed in the original version). + +### Licensing + +* Copyright (c) 2007 Christian Bach. +* Original examples and docs at: [http://tablesorter.com](//tablesorter.com). +* Dual licensed under the [MIT](//www.opensource.org/licenses/mit-license.php) and [GPL](//www.gnu.org/licenses/gpl.html) licenses. + +### Download + +* Get all files: [zip](//github.com/Mottie/tablesorter/archive/master.zip) or [tar.gz](//github.com/Mottie/tablesorter/archive/master.tar.gz) +* Use [bower](http://bower.io/): `bower install jquery.tablesorter` +* Use [node.js](http://nodejs.org/): `npm install tablesorter` +* CDNJS: [https://cdnjs.com/libraries/jquery.tablesorter](https://cdnjs.com/libraries/jquery.tablesorter) + +### Related Projects + +* [Plugin for Rails](//github.com/themilkman/jquery-tablesorter-rails). Maintained by [themilkman](//github.com/themilkman). +* [UserFrosting](//github.com/alexweissman/UserFrosting) (A secure, modern user management system for PHP that uses tablesorter) by [alexweissman](//github.com/alexweissman). + +### Contributing + +If you would like to contribute, please... + +1. Fork. +2. Make changes in a branch & add unit tests. +3. Run `grunt test` (if qunit fails, run it again - it's fickle). +4. Create a pull request. + +### Special Thanks + +* Big shout-out to [Nick Craver](//github.com/NickCraver) for getting rid of the `eval()` function that was previously needed for multi-column sorting. +* Big thanks to [thezoggy](//github.com/thezoggy) for helping with code, themes and providing valuable feedback. +* Big thanks to [ThsSin-](//github.com/TheSin-) for taking over for a while and also providing valuable feedback. +* Thanks to [prijutme4ty](https://github.com/prijutme4ty) for numerous contributions! +* Also extra thanks to [christhomas](//github.com/christhomas) and [Lynesth](//github.com/Lynesth) for help with code. +* And, of course thanks to everyone else that has contributed, and continues to contribute to this forked project! + +### Questions? + +* Check the [FAQ](//github.com/Mottie/tablesorter/wiki/FAQ) page. +* Search the [main documentation](//mottie.github.io/tablesorter/docs/) (click the menu button in the upper left corner). +* Search the [issues](//github.com/Mottie/tablesorter/issues) to see if the question or problem has been brought up before, and hopefully resolved. +* If someone is available, ask your question in the `#tablesorter` IRC channel at freenode.net. +* Ask your question at [Stackoverflow](//stackoverflow.com/questions/tagged/tablesorter) using a tablesorter tag. +* Please don't open a [new issue](//github.com/Mottie/tablesorter/issues) unless it really is an issue with the plugin, or a feature request. Thanks! + +[npm-url]: https://npmjs.org/package/tablesorter +[npm-image]: https://img.shields.io/npm/v/tablesorter.svg +[david-dev-url]: https://david-dm.org/Mottie/tablesorter#info=devDependencies +[david-dev-image]: https://img.shields.io/david/dev/Mottie/tablesorter.svg +[bower-url]: http://bower.io/search/?q=jquery.tablesorter +[bower-image]: https://img.shields.io/bower/v/jquery.tablesorter.svg +[zenhub-url]: https://zenhub.io +[zenhub-image]: https://raw.githubusercontent.com/ZenHubIO/support/master/zenhub-badge.png + +### Recent Changes + +View the [complete change log here](//github.com/Mottie/tablesorter/wiki/Changes). + +#### Version 2.24.6 (11/22/2015) + +* Core + * Prevent "tablesorter-ready" event from firing multiple times in a row. + * While detecting parsers, use `cssIgnoreRow` & stop after 50 rows. +* Docs + * Update utility options section. +* Math + * Add `math_rowFilter` option. See [issue #1083](https://github.com/Mottie/tablesorter/issues/1083). + * Spelling corrections to `math_rowFilter` option. + * Ensure internal updating flag gets cleared. Fixes [issue #1083](https://github.com/Mottie/tablesorter/issues/1083). +* Pager + * Initial page no longer ignored (no filter widget). Fixes [issue #1085](https://github.com/Mottie/tablesorter/issues/1085). + * Fix other page set issues (no filter widget). Fixes [issue #1085](https://github.com/Mottie/tablesorter/issues/1085). + * Fix page set issues (with filter widget). Fixes [issue #1085](https://github.com/Mottie/tablesorter/issues/1085). + * Clean up pager widget code. +* Print + * Add `print_now` option. See [issue #1081](https://github.com/Mottie/tablesorter/issues/1081). + * Fix print & close button actions. +* SortTbodies + * Use config parameter for numeric sorting. See [issue #1082](https://github.com/Mottie/tablesorter/issues/1082). +* Parsers: + * Update `parser-input-select.js`. See [issue #971](https://github.com/Mottie/tablesorter/issues/971). + * `parser-date-month.js` no longer removes other language data. + * Add alternate date range parser & update filter insideRange filter type. + * Don't use `$.extend` for simple additions. +* Misc + * Update grunt dependencies. + +#### Version 2.24.5 (11/10/2015) + +* Pager: Fix javascript error in pager addon when using ajax. + +#### Version 2.24.4 (11/10/2015) + +* Core + * `sortRestart` works again with multi-row headers. Fixes [issue #1074](https://github.com/Mottie/tablesorter/issues/1074). + * Add `sortDisabled` language setting; used in aria-labels. +* Docs + * Update `group_formatter` docs. See [issue #1077](https://github.com/Mottie/tablesorter/issues/1077). + * Add clarification & missing possible values. See [issue #1070](https://github.com/Mottie/tablesorter/issues/1070). + * Fixed mixed content issue, broken links (beta-testing demos) & other stuff. + * Add [filter + jQuery UI Selectmenu demo](http://mottie.github.io/tablesorter/docs/example-widget-filter-selectmenu.html). See [issue #1060](https://github.com/Mottie/tablesorter/issues/1060) + * Misc updates. +* Filter + * Convert filters to strings using conventional methods. + * Prevent "OR" filter type from splitting up regex string. See [issue #1070]https://github.com/Mottie/tablesorter/issues/1070). + * `filter_selectSource` option now accepts an array of objects ([demo](http://mottie.github.io/tablesorter/docs/example-widget-filter-selectmenu.html)). +* Group + * Include group & row data parameters in `group_formatter`. Fixes [issue #1077](https://github.com/Mottie/tablesorter/issues/1077). +* HeaderTitles + * Update aria-label usage. +* Math + * Avoid nested table math cells. See [Stackoverflow](http://stackoverflow.com/q/33631298/145346). +* Pager + * Clear `tbody` prior to calling `ajaxProcessing`. This again allows the developer to add the HTML to the table instead of needing to return it. +* Sort2Hash + * Make widget functions accessible. + * Add 2 utility functions to simplify hash processing. +* Toggle + * Add new widget to enable/disable sort & filter. See [issue #1075](https://github.com/Mottie/tablesorter/issues/1075). +* Parser + * Add "file-extension" parser. +* Misc + * Grunt: Fix uglify comment removal & update dist folder. diff --git a/vendor/FHC-vendor/jquery-tablesorter/addons/pager/icons/first.png b/vendor/FHC-vendor/jquery-tablesorter/addons/pager/icons/first.png new file mode 100644 index 0000000000000000000000000000000000000000..6f11fcb086b1bfa51bc5070ca45fac0a988c624c GIT binary patch literal 720 zcmV;>0x$iEP)ITpohD^Ctgf=H~o==W*|y0)VM;-LQd9lR=YF)677| z!Jh8V_;KSkP5LJrlF9S+j0qkk+2iPm7~x{#{$ZSbvzK9J-4zqYVC)27V7~717pTZd znit9v$VwYJS3ROyLxp^?0)a!0U)oMn7(0Xv0eUoZ@gH)t)d5_J+J%bT22oSJ)g^nf zqQZVCEIYOm2+rB;rB+cID%~N1o%g50=A<=fWgC_GFUb) z%s4&22M=t~3G+RMgR^pz#KbcfK)ZtsdJ$j@d{400GnQJeAz+sPu#&f$`6hKh0J%~V zq(%oWs|qZyzh}{lfSK@dRK#JSxg@DDP3^*cD+kP0j(npKkSQvp3bk_uYtD5My##O+ z;RpcDs9R5c#9;NFP5{z^GN_^r%PX%(0OOZ~7+aNFP*XZk{E2|i#E`vI`YjCrsfz|V zndEsDXoqvug2CxaF}ZvhdOaY6!{9q~KO+jO!o5Vk0qt%NcD}`cvVR;6QTNzYGWq-= zUX+?7V0e7VLW2m6_>T!vT6W8eRsOC$*+0hNMWWwDsLfA)S*X-WV71;M{bCzza-4I45g$8m^55K?|L?r+odSTVNnJ96LXt|7TGI4L>d~Fz z&-h8>1xd<>>vgSt=Y;X^$Jv9(As-4y`R%SPp?5wYYBW2LD^|g`7v>f>k`%^{A!C3N&EeR0q1EmI9?j zT<^fuCti3LD9UEdoCoe2BcvKUvD7KhHa~-21gL%Aj#%s&OGVR_$6iSuSoaqp%eN%J z76DWmU8pyEP^yWrwDz7wF9N262N52Jg#ie_jHv7Leqfv#&`?`&#}Fpfom5)T>7B!> zWsOHK0qlpu1b_k9E1Iu8-65F`u4B0T$PKrdAs|z3NmX=VY5BDbP=DEtvNfR%4Y5Zu z5VMpOD@qkb3GkT!aIm-Gn* z`85iZ>7zVE#RF?u>-GjXzTT2IfyTsX6XN-%yiPPHr0n_^E8Hzpe7MH(L!#e?D90zS zP^g}fN@{04Qcb!flJ%iEo~?q;Y!zl{=dXt}`IHwd0cyqO;QYY^WD0dM6YM#f=E3C+ z!2-R=&FDY;{gfv^)4f+|?c7Tj^US!+(gqX%T+i_HIx{<~voklC*uOv1|9t14Z-oeY T=@u`q-Vg)2ozNO$->CRz{H>f zQUKDzz~ne3e?i0B-7(yb4yr4bTs^i%F{Yz&j)hfn`=;ZaUeQxez2`bzvG#r5dd{19 z!Vll38%c$&oiKTOjaT|fg-sl?YN@OUQ`v#0ax(x)CXo=iMcq4Y^)WQ;^jy2>Pi|c0 z+yEr&d4XeL8If(~h1x7UMZQw|C0j$G*0IR9p-%D344shFF)_f@iA-r&*1q$O4~JHlrS=Ys z_3vtDAiIzOXf4!*A_|%9C!fc)bZLneovQiVkU1UVLRM%mejW= OqdvS&mB_TF$F*h9sL-j zNpc$weSXQZ6Gag%5kOy9HfA1@g zVA*&|VjFHeVhIV!`DzQM7F-a@NRTNvNlYYp4z%6NAQuJno^MeOJ!7dzy8e(=;etr6 z4q2h83Vb36o=G4!6u79$u)6u4LoN!;_)kItHmh9g5CP1HxVh+sSiS*Mlqx_uVfwL~ z+}p|}Y*;r1{g* z9DE4_W&SW~qUN5hWN@-RUJ#q3Ngxr&iJp;+4aEd;HM{A>I)B?7>yL4`Nc6h^we^ve z3YC6fwXTqAQWr8=Cd?emR={YnNptkhuSFVP{Q?6Lt^ zqF4A?)Arx1JpP&Pyh<4sUhXnam)AJ@xmkE-VuVGbg_|=vm|INb-=FD!zVlDxJ_uiv SXLQ>D0000yhD literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/addons/pager/icons/prev.png b/vendor/FHC-vendor/jquery-tablesorter/addons/pager/icons/prev.png new file mode 100644 index 0000000000000000000000000000000000000000..15d1584bdbb2c26a9fc4c8269aa54615a58a4657 GIT binary patch literal 745 zcmV1hlor z)=Ec^h7>5J3?Bj(D6|X+0|UcQj&m*_Qg!D|-c07sd7pF6opXl(U}#WhWg0W$d_xV%ATb~UcS*dC+@kfS*m{?64KBH-eM78JQAu#&2c z7TM!?0X98;&a@msh@1ehFDx4~_smCS0rm@Z$dv@5Y^ec>Jl}_`uDh5!i#cpZh5&_) z{y|~cgJzZ1d%`?CxkdJIg%by0u(~PqB0%Zdj?maMmYO=M!=;B#0>~5_5YO>&?w*4H z@LRbi!eNPrxg`gUUIeK8JG(3%R{o~|7so$K+8_qZe0Iz($pKd%d&oOhA&AGYXkKE` zO8~w=kN^smCS05H!-WT*2mpbXAJK6B{s*`+;U?8|s%XO8{Hs1d`DH6am$(L0coEX9 z)c+Ho)WS9-4?6~g4NrO@c2FaKCYmmR!DQ~YpfIn+s8pr^?KThtmU&}3Kr*7R^y^Rk z5Xsb_*=oc3w-9KI@B4=+yK6a8uQ@#oTkf1PnlL+NjAm=Zh)+xqld|idFEF=^(avw| z4U*w)Kx6;tnV0ZXQD@SHtHr7{`Y12 bpX>Y!%!CO%>C8GV00000NkvXXu0mjfJYGkQ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.css b/vendor/FHC-vendor/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.css new file mode 100644 index 000000000..e77cd88ed --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.css @@ -0,0 +1,42 @@ +/* pager wrapper, div */ +.tablesorter-pager { + padding: 5px; +} +/* pager wrapper, in thead/tfoot */ +td.tablesorter-pager { + background-color: #e6eeee; + margin: 0; /* needed for bootstrap .pager gets a 18px bottom margin */ +} +/* pager navigation arrows */ +.tablesorter-pager img { + vertical-align: middle; + margin-right: 2px; + cursor: pointer; +} + +/* pager output text */ +.tablesorter-pager .pagedisplay { + padding: 0 5px 0 5px; + width: auto; + white-space: nowrap; + text-align: center; +} + +/* pager element reset (needed for bootstrap) */ +.tablesorter-pager select { + margin: 0; + padding: 0; +} + +/*** css used when "updateArrows" option is true ***/ +/* the pager itself gets a disabled class when the number of rows is less than the size */ +.tablesorter-pager.disabled { + display: none; +} +/* hide or fade out pager arrows when the first or last row is visible */ +.tablesorter-pager .disabled { + /* visibility: hidden */ + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.js b/vendor/FHC-vendor/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.js new file mode 100644 index 000000000..020df44bd --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/addons/pager/jquery.tablesorter.pager.js @@ -0,0 +1,1178 @@ +/*! + * tablesorter (FORK) pager plugin + * updated 11/22/2015 (v2.24.6) + */ +/*jshint browser:true, jquery:true, unused:false */ +;(function($) { + 'use strict'; + /*jshint supernew:true */ + var ts = $.tablesorter; + + $.extend({ tablesorterPager: new function() { + + this.defaults = { + // target the pager markup + container: null, + + // use this format: "http://mydatabase.com?page={page}&size={size}&{sortList:col}&{filterList:fcol}" + // where {page} is replaced by the page number, {size} is replaced by the number of records to show, + // {sortList:col} adds the sortList to the url into a "col" array, and {filterList:fcol} adds + // the filterList to the url into an "fcol" array. + // So a sortList = [[2,0],[3,0]] becomes "&col[2]=0&col[3]=0" in the url + // and a filterList = [[2,Blue],[3,13]] becomes "&fcol[2]=Blue&fcol[3]=13" in the url + ajaxUrl: null, + + // modify the url after all processing has been applied + customAjaxUrl: function(table, url) { return url; }, + + // ajax error callback from $.tablesorter.showError function + // ajaxError: function( config, xhr, settings, exception ){ return exception; }; + // returning false will abort the error message + ajaxError: null, + + // modify the $.ajax object to allow complete control over your ajax requests + ajaxObject: { + dataType: 'json' + }, + + // set this to false if you want to block ajax loading on init + processAjaxOnInit: true, + + // process ajax so that the following information is returned: + // [ total_rows (number), rows (array of arrays), headers (array; optional) ] + // example: + // [ + // 100, // total rows + // [ + // [ "row1cell1", "row1cell2", ... "row1cellN" ], + // [ "row2cell1", "row2cell2", ... "row2cellN" ], + // ... + // [ "rowNcell1", "rowNcell2", ... "rowNcellN" ] + // ], + // [ "header1", "header2", ... "headerN" ] // optional + // ] + ajaxProcessing: function(ajax){ return [ 0, [], null ]; }, + + // output default: '{page}/{totalPages}' + // possible variables: {size}, {page}, {totalPages}, {filteredPages}, {startRow}, + // {endRow}, {filteredRows} and {totalRows} + output: '{startRow} to {endRow} of {totalRows} rows', // '{page}/{totalPages}' + + // apply disabled classname to the pager arrows when the rows at either extreme is visible + updateArrows: true, + + // starting page of the pager (zero based index) + page: 0, + + // reset pager after filtering; set to desired page # + // set to false to not change page at filter start + pageReset: 0, + + // Number of visible rows + size: 10, + + // Number of options to include in the pager number selector + maxOptionSize: 20, + + // Save pager page & size if the storage script is loaded (requires $.tablesorter.storage in jquery.tablesorter.widgets.js) + savePages: true, + + // defines custom storage key + storageKey: 'tablesorter-pager', + + // if true, the table will remain the same height no matter how many records are displayed. The space is made up by an empty + // table row set to a height to compensate; default is false + fixedHeight: false, + + // count child rows towards the set page size? (set true if it is a visible table row within the pager) + // if true, child row(s) may not appear to be attached to its parent row, may be split across pages or + // may distort the table if rowspan or cellspans are included. + countChildRows: false, + + // remove rows from the table to speed up the sort of large tables. + // setting this to false, only hides the non-visible rows; needed if you plan to add/remove rows with the pager enabled. + removeRows: false, // removing rows in larger tables speeds up the sort + + // css class names of pager arrows + cssFirst: '.first', // go to first page arrow + cssPrev: '.prev', // previous page arrow + cssNext: '.next', // next page arrow + cssLast: '.last', // go to last page arrow + cssGoto: '.gotoPage', // go to page selector - select dropdown that sets the current page + cssPageDisplay: '.pagedisplay', // location of where the "output" is displayed + cssPageSize: '.pagesize', // page size selector - select dropdown that sets the "size" option + cssErrorRow: 'tablesorter-errorRow', // error information row + + // class added to arrows when at the extremes (i.e. prev/first arrows are "disabled" when on the first page) + cssDisabled: 'disabled', // Note there is no period "." in front of this class name + + // stuff not set by the user + totalRows: 0, + totalPages: 0, + filteredRows: 0, + filteredPages: 0, + ajaxCounter: 0, + currentFilters: [], + startRow: 0, + endRow: 0, + $size: null, + last: {} + + }; + + var pagerEvents = 'filterInit filterStart filterEnd sortEnd disablePager enablePager destroyPager updateComplete ' + + 'pageSize pageSet pageAndSize pagerUpdate refreshComplete ', + + $this = this, + + // hide arrows at extremes + pagerArrows = function( table, p, disable ) { + var a = 'addClass', + r = 'removeClass', + d = p.cssDisabled, + dis = !!disable, + first = ( dis || p.page === 0 ), + tp = getTotalPages( table, p ), + last = ( dis || (p.page === tp - 1) || tp === 0 ); + if ( p.updateArrows ) { + p.$container.find(p.cssFirst + ',' + p.cssPrev)[ first ? a : r ](d).attr('aria-disabled', first); + p.$container.find(p.cssNext + ',' + p.cssLast)[ last ? a : r ](d).attr('aria-disabled', last); + } + }, + + calcFilters = function(table, p) { + var normalized, indx, len, + c = table.config, + hasFilters = c.$table.hasClass('hasFilters'); + if (hasFilters && !p.ajaxUrl) { + if (ts.isEmptyObject(c.cache)) { + // delayInit: true so nothing is in the cache + p.filteredRows = p.totalRows = c.$tbodies.eq(0).children('tr').not( p.countChildRows ? '' : '.' + c.cssChildRow ).length; + } else { + p.filteredRows = 0; + normalized = c.cache[0].normalized; + len = normalized.length; + for (indx = 0; indx < len; indx++) { + p.filteredRows += p.regexRows.test(normalized[indx][c.columns].$row[0].className) ? 0 : 1; + } + } + } else if (!hasFilters) { + p.filteredRows = p.totalRows; + } + }, + + updatePageDisplay = function(table, p, completed) { + if ( p.initializing ) { return; } + var s, t, $out, indx, len, options, + c = table.config, + namespace = c.namespace + 'pager', + sz = parsePageSize( p, p.size, 'get' ); // don't allow dividing by zero + if (p.countChildRows) { t.push(c.cssChildRow); } + p.totalPages = Math.ceil( p.totalRows / sz ); // needed for "pageSize" method + c.totalRows = p.totalRows; + parsePageNumber( table, p ); + calcFilters(table, p); + c.filteredRows = p.filteredRows; + p.filteredPages = Math.ceil( p.filteredRows / sz ) || 0; + if ( getTotalPages( table, p ) >= 0 ) { + t = (p.size * p.page > p.filteredRows) && completed; + p.page = (t) ? p.pageReset || 0 : p.page; + p.startRow = (t) ? p.size * p.page + 1 : (p.filteredRows === 0 ? 0 : p.size * p.page + 1); + p.endRow = Math.min( p.filteredRows, p.totalRows, p.size * ( p.page + 1 ) ); + $out = p.$container.find(p.cssPageDisplay); + // form the output string (can now get a new output string from the server) + s = ( p.ajaxData && p.ajaxData.output ? p.ajaxData.output || p.output : p.output ) + // {page} = one-based index; {page+#} = zero based index +/- value + .replace(/\{page([\-+]\d+)?\}/gi, function(m, n){ + return p.totalPages ? p.page + (n ? parseInt(n, 10) : 1) : 0; + }) + // {totalPages}, {extra}, {extra:0} (array) or {extra : key} (object) + .replace(/\{\w+(\s*:\s*\w+)?\}/gi, function(m){ + var len, indx, + str = m.replace(/[{}\s]/g, ''), + extra = str.split(':'), + data = p.ajaxData, + // return zero for default page/row numbers + deflt = /(rows?|pages?)$/i.test(str) ? 0 : ''; + if (/(startRow|page)/.test(extra[0]) && extra[1] === 'input') { + len = ('' + (extra[0] === 'page' ? p.totalPages : p.totalRows)).length; + indx = extra[0] === 'page' ? p.page + 1 : p.startRow; + return ''; + } + return extra.length > 1 && data && data[extra[0]] ? data[extra[0]][extra[1]] : p[str] || (data ? data[str] : deflt) || deflt; + }); + if ( p.$goto.length ) { + t = ''; + options = buildPageSelect( table, p ); + len = options.length; + for (indx = 0; indx < len; indx++) { + t += ''; + } + // innerHTML doesn't work in IE9 - http://support2.microsoft.com/kb/276228 + p.$goto.html(t).val( p.page + 1 ); + } + if ($out.length) { + $out[ ($out[0].nodeName === 'INPUT') ? 'val' : 'html' ](s); + // rebind startRow/page inputs + $out.find('.ts-startRow, .ts-page').unbind('change' + namespace).bind('change' + namespace, function(){ + var v = $(this).val(), + pg = $(this).hasClass('ts-startRow') ? Math.floor( v / p.size ) + 1 : v; + c.$table.trigger('pageSet' + namespace, [ pg ]); + }); + } + } + pagerArrows( table, p ); + fixHeight(table, p); + if (p.initialized && completed !== false) { + if (c.debug) { + console.log('Pager: Triggering pagerComplete'); + } + c.$table.trigger('pagerComplete', p); + // save pager info to storage + if (p.savePages && ts.storage) { + ts.storage(table, p.storageKey, { + page : p.page, + size : p.size + }); + } + } + }, + + buildPageSelect = function( table, p ) { + // Filter the options page number link array if it's larger than 'maxOptionSize' + // as large page set links will slow the browser on large dom inserts + var i, central_focus_size, focus_option_pages, insert_index, option_length, focus_length, + pg = getTotalPages( table, p ) || 1, + // make skip set size multiples of 5 + skip_set_size = Math.ceil( ( pg / p.maxOptionSize ) / 5 ) * 5, + large_collection = pg > p.maxOptionSize, + current_page = p.page + 1, + start_page = skip_set_size, + end_page = pg - skip_set_size, + option_pages = [ 1 ], + // construct default options pages array + option_pages_start_page = (large_collection) ? skip_set_size : 1; + + for ( i = option_pages_start_page; i <= pg; ) { + option_pages.push(i); + i = i + ( large_collection ? skip_set_size : 1 ); + } + option_pages.push(pg); + if (large_collection) { + focus_option_pages = []; + // don't allow central focus size to be > 5 on either side of current page + central_focus_size = Math.max( Math.floor( p.maxOptionSize / skip_set_size ) - 1, 5 ); + + start_page = current_page - central_focus_size; + if (start_page < 1) { start_page = 1; } + end_page = current_page + central_focus_size; + if (end_page > pg) { end_page = pg; } + // construct an array to get a focus set around the current page + for (i = start_page; i <= end_page ; i++) { + focus_option_pages.push(i); + } + + // keep unique values + option_pages = $.grep(option_pages, function(value, indx) { + return $.inArray(value, option_pages) === indx; + }); + + option_length = option_pages.length; + focus_length = focus_option_pages.length; + + // make sure at all option_pages aren't replaced + if (option_length - focus_length > skip_set_size / 2 && option_length + focus_length > p.maxOptionSize ) { + insert_index = Math.floor(option_length / 2) - Math.floor(focus_length / 2); + Array.prototype.splice.apply(option_pages, [ insert_index, focus_length ]); + } + option_pages = option_pages.concat(focus_option_pages); + + } + + // keep unique values again + option_pages = $.grep(option_pages, function(value, indx) { + return $.inArray(value, option_pages) === indx; + }) + .sort(function(a, b) { return a - b; }); + + return option_pages; + }, + + fixHeight = function(table, p) { + var d, h, + c = table.config, + $b = c.$tbodies.eq(0); + $b.find('tr.pagerSavedHeightSpacer').remove(); + if (p.fixedHeight && !p.isDisabled) { + h = $.data(table, 'pagerSavedHeight'); + if (h) { + d = h - $b.height(); + if ( d > 5 && $.data(table, 'pagerLastSize') === p.size && $b.children('tr:visible').length < p.size ) { + $b.append(''); + } + } + } + }, + + changeHeight = function(table, p) { + var h, + c = table.config, + $b = c.$tbodies.eq(0); + $b.find('tr.pagerSavedHeightSpacer').remove(); + if (!$b.children('tr:visible').length) { + $b.append(' '); + } + h = $b.children('tr').eq(0).height() * p.size; + $.data(table, 'pagerSavedHeight', h); + fixHeight(table, p); + $.data(table, 'pagerLastSize', p.size); + }, + + hideRows = function(table, p){ + if (!p.ajaxUrl) { + var i, + lastIndex = 0, + c = table.config, + rows = c.$tbodies.eq(0).children('tr'), + l = rows.length, + s = ( p.page * p.size ), + e = s + p.size, + f = c.widgetOptions && c.widgetOptions.filter_filteredRow || 'filtered', + last = 0, // for cache indexing + j = 0; // size counter + p.cacheIndex = []; + for ( i = 0; i < l; i++ ){ + if ( !rows[i].className.match(f) ) { + if (j === s && rows[i].className.match(c.cssChildRow)) { + // hide child rows @ start of pager (if already visible) + rows[i].style.display = 'none'; + } else { + rows[i].style.display = ( j >= s && j < e ) ? '' : 'none'; + if (last !== j && j >= s && j < e) { + p.cacheIndex.push(i); + last = j; + } + // don't count child rows + j += rows[i].className.match(c.cssChildRow + '|' + c.selectorRemove.slice(1)) && !p.countChildRows ? 0 : 1; + if ( j === e && rows[i].style.display !== 'none' && rows[i].className.match(ts.css.cssHasChild) ) { + lastIndex = i; + } + } + } + } + // add any attached child rows to last row of pager. Fixes part of issue #396 + if ( lastIndex > 0 && rows[lastIndex].className.match(ts.css.cssHasChild) ) { + while ( ++lastIndex < l && rows[lastIndex].className.match(c.cssChildRow) ) { + rows[lastIndex].style.display = ''; + } + } + } + }, + + hideRowsSetup = function(table, p){ + p.size = parsePageSize( p, p.$size.val(), 'get' ); + p.$size.val( parsePageSize( p, p.size, 'set' ) ); + $.data(table, 'pagerLastSize', p.size); + pagerArrows( table, p ); + if ( !p.removeRows ) { + hideRows(table, p); + $(table).bind('sortEnd filterEnd '.split(' ').join(table.config.namespace + 'pager '), function(){ + hideRows(table, p); + }); + } + }, + + renderAjax = function(data, table, p, xhr, settings, exception){ + // process data + if ( typeof p.ajaxProcessing === 'function' ) { + + // in case nothing is returned by ajax, empty out the table; see #1032 + // but do it before calling pager_ajaxProcessing because that function may add content + // directly to the table + table.config.$tbodies.eq(0).empty(); + + // ajaxProcessing result: [ total, rows, headers ] + var i, j, t, hsh, $f, $sh, $headers, $h, icon, th, d, l, rr_count, len, + c = table.config, + $table = c.$table, + tds = '', + result = p.ajaxProcessing(data, table, xhr) || [ 0, [] ], + hl = $table.find('thead th').length; + + // Clean up any previous error. + ts.showError( table ); + + if ( exception ) { + if (c.debug) { + console.error('Pager: >> Ajax Error', xhr, settings, exception); + } + ts.showError( table, xhr, settings, exception ); + c.$tbodies.eq(0).children('tr').detach(); + p.totalRows = 0; + } else { + // process ajax object + if (!$.isArray(result)) { + p.ajaxData = result; + c.totalRows = p.totalRows = result.total; + c.filteredRows = p.filteredRows = typeof result.filteredRows !== 'undefined' ? result.filteredRows : result.total; + th = result.headers; + d = result.rows || []; + } else { + // allow [ total, rows, headers ] or [ rows, total, headers ] + t = isNaN(result[0]) && !isNaN(result[1]); + // ensure a zero returned row count doesn't fail the logical || + rr_count = result[t ? 1 : 0]; + p.totalRows = isNaN(rr_count) ? p.totalRows || 0 : rr_count; + // can't set filtered rows when returning an array + c.totalRows = c.filteredRows = p.filteredRows = p.totalRows; + // set row data to empty array if nothing found - see http://stackoverflow.com/q/30875583/145346 + d = p.totalRows === 0 ? [] : result[t ? 0 : 1] || []; // row data + th = result[2]; // headers + } + l = d && d.length; + if (d instanceof jQuery) { + if (p.processAjaxOnInit) { + // append jQuery object + c.$tbodies.eq(0).empty(); + c.$tbodies.eq(0).append(d); + } + } else if (l) { + // build table from array + for ( i = 0; i < l; i++ ) { + tds += ''; + for ( j = 0; j < d[i].length; j++ ) { + // build tbody cells; watch for data containing HTML markup - see #434 + tds += /^\s*' + d[i][j] + ''; + } + tds += ''; + } + // add rows to first tbody + if (p.processAjaxOnInit) { + c.$tbodies.eq(0).html( tds ); + } + } + p.processAjaxOnInit = true; + // only add new header text if the length matches + if ( th && th.length === hl ) { + hsh = $table.hasClass('hasStickyHeaders'); + $sh = hsh ? c.widgetOptions.$sticky.children('thead:first').children('tr').children() : ''; + $f = $table.find('tfoot tr:first').children(); + // don't change td headers (may contain pager) + $headers = c.$headers.filter( 'th ' ); + len = $headers.length; + for ( j = 0; j < len; j++ ) { + $h = $headers.eq( j ); + // add new test within the first span it finds, or just in the header + if ( $h.find('.' + ts.css.icon).length ) { + icon = $h.find('.' + ts.css.icon).clone(true); + $h.find('.tablesorter-header-inner').html( th[j] ).append(icon); + if ( hsh && $sh.length ) { + icon = $sh.eq(j).find('.' + ts.css.icon).clone(true); + $sh.eq(j).find('.tablesorter-header-inner').html( th[j] ).append(icon); + } + } else { + $h.find('.tablesorter-header-inner').html( th[j] ); + if (hsh && $sh.length) { + $sh.eq(j).find('.tablesorter-header-inner').html( th[j] ); + } + } + $f.eq(j).html( th[j] ); + } + } + } + if (c.showProcessing) { + ts.isProcessing(table); // remove loading icon + } + // make sure last pager settings are saved, prevents multiple server side calls with + // the same parameters + p.totalPages = Math.ceil( p.totalRows / parsePageSize( p, p.size, 'get' ) ); + p.last.totalRows = p.totalRows; + p.last.currentFilters = p.currentFilters; + p.last.sortList = (c.sortList || []).join(','); + updatePageDisplay(table, p, false); + // tablesorter core updateCache (not pager) + ts.updateCache( c, function(){ + if (p.initialized) { + // apply widgets after table has rendered & after a delay to prevent + // multiple applyWidget blocking code from blocking this trigger + setTimeout(function(){ + if (c.debug) { + console.log('Pager: Triggering pagerChange'); + } + $table.trigger( 'pagerChange', p ); + ts.applyWidget( table ); + updatePageDisplay(table, p, true); + }, 0); + } + }); + + } + if (!p.initialized) { + p.initialized = true; + p.initializing = false; + if (table.config.debug) { + console.log('Pager: Triggering pagerInitialized'); + } + $(table).trigger( 'pagerInitialized', p ); + ts.applyWidget( table ); + updatePageDisplay(table, p); + } + }, + + getAjax = function(table, p) { + var url = getAjaxUrl(table, p), + $doc = $(document), + counter, + c = table.config, + namespace = c.namespace + 'pager'; + if ( url !== '' ) { + if (c.showProcessing) { + ts.isProcessing(table, true); // show loading icon + } + $doc.bind('ajaxError' + namespace, function(e, xhr, settings, exception) { + renderAjax(null, table, p, xhr, settings, exception); + $doc.unbind('ajaxError' + namespace); + }); + + counter = ++p.ajaxCounter; + + p.last.ajaxUrl = url; // remember processed url + p.ajaxObject.url = url; // from the ajaxUrl option and modified by customAjaxUrl + p.ajaxObject.success = function(data, status, jqxhr) { + // Refuse to process old ajax commands that were overwritten by new ones - see #443 + if (counter < p.ajaxCounter){ + return; + } + renderAjax(data, table, p, jqxhr); + $doc.unbind('ajaxError' + namespace); + if (typeof p.oldAjaxSuccess === 'function') { + p.oldAjaxSuccess(data); + } + }; + if (c.debug) { + console.log('Pager: Ajax initialized', p.ajaxObject); + } + $.ajax(p.ajaxObject); + } + }, + + getAjaxUrl = function(table, p) { + var indx, len, + c = table.config, + url = (p.ajaxUrl) ? p.ajaxUrl + // allow using "{page+1}" in the url string to switch to a non-zero based index + .replace(/\{page([\-+]\d+)?\}/, function(s, n){ return p.page + (n ? parseInt(n, 10) : 0); }) + .replace(/\{size\}/g, p.size) : '', + sortList = c.sortList, + filterList = p.currentFilters || $(table).data('lastSearch') || [], + sortCol = url.match(/\{\s*sort(?:List)?\s*:\s*(\w*)\s*\}/), + filterCol = url.match(/\{\s*filter(?:List)?\s*:\s*(\w*)\s*\}/), + arry = []; + if (sortCol) { + sortCol = sortCol[1]; + len = sortList.length; + for (indx = 0; indx < len; indx++) { + arry.push(sortCol + '[' + sortList[indx][0] + ']=' + sortList[indx][1]); + } + // if the arry is empty, just add the col parameter... "&{sortList:col}" becomes "&col" + url = url.replace(/\{\s*sort(?:List)?\s*:\s*(\w*)\s*\}/g, arry.length ? arry.join('&') : sortCol ); + arry = []; + } + if (filterCol) { + filterCol = filterCol[1]; + len = filterList.length; + for (indx = 0; indx < len; indx++) { + if (filterList[indx]) { + arry.push(filterCol + '[' + indx + ']=' + encodeURIComponent(filterList[indx])); + } + } + // if the arry is empty, just add the fcol parameter... "&{filterList:fcol}" becomes "&fcol" + url = url.replace(/\{\s*filter(?:List)?\s*:\s*(\w*)\s*\}/g, arry.length ? arry.join('&') : filterCol ); + p.currentFilters = filterList; + } + if ( typeof p.customAjaxUrl === 'function' ) { + url = p.customAjaxUrl(table, url); + } + if (c.debug) { + console.log('Pager: Ajax url = ' + url); + } + return url; + }, + + renderTable = function(table, rows, p) { + var $tb, index, count, added, + $t = $(table), + c = table.config, + f = c.$table.hasClass('hasFilters'), + l = rows && rows.length || 0, // rows may be undefined + s = ( p.page * p.size ), + e = p.size; + if ( l < 1 ) { + if (c.debug) { + console.warn('Pager: >> No rows for pager to render'); + } + // empty table, abort! + return; + } + if ( p.page >= p.totalPages ) { + // lets not render the table more than once + moveToLastPage(table, p); + } + p.cacheIndex = []; + p.isDisabled = false; // needed because sorting will change the page and re-enable the pager + if (p.initialized) { + if (c.debug) { + console.log('Pager: Triggering pagerChange'); + } + $t.trigger( 'pagerChange', p ); + } + if ( !p.removeRows ) { + hideRows(table, p); + } else { + ts.clearTableBody(table); + $tb = ts.processTbody(table, c.$tbodies.eq(0), true); + // not filtered, start from the calculated starting point (s) + // if filtered, start from zero + index = f ? 0 : s; + count = f ? 0 : s; + added = 0; + while (added < e && index < rows.length) { + if (!f || !/filtered/.test(rows[index][0].className)){ + count++; + if (count > s && added <= e) { + added++; + p.cacheIndex.push(index); + $tb.append(rows[index]); + } + } + index++; + } + ts.processTbody(table, $tb, false); + } + updatePageDisplay(table, p); + if (table.isUpdating) { + if (c.debug) { + console.log('Pager: Triggering updateComplete'); + } + $t.trigger('updateComplete', [ table, true ]); + } + }, + + showAllRows = function(table, p) { + var index, $controls, len; + if ( p.ajax ) { + pagerArrows( table, p, true ); + } else { + $.data(table, 'pagerLastPage', p.page); + $.data(table, 'pagerLastSize', p.size); + p.page = 0; + p.size = p.totalRows; + p.totalPages = 1; + $(table) + .addClass('pagerDisabled') + .removeAttr('aria-describedby') + .find('tr.pagerSavedHeightSpacer').remove(); + renderTable(table, table.config.rowsCopy, p); + p.isDisabled = true; + ts.applyWidget( table ); + if (table.config.debug) { + console.log('Pager: Disabled'); + } + } + // disable size selector + $controls = p.$size + .add( p.$goto ) + .add( p.$container.find( '.ts-startRow, .ts-page' ) ); + len = $controls.length; + for ( index = 0; index < len; index++ ) { + $controls.eq( index ) + .attr( 'aria-disabled', 'true' ) + .addClass( p.cssDisabled )[0].disabled = true; + } + }, + + // updateCache if delayInit: true + updateCache = function(table) { + var c = table.config, + p = c.pager; + // tablesorter core updateCache (not pager) + ts.updateCache( c, function(){ + var i, + rows = [], + n = table.config.cache[0].normalized; + p.totalRows = n.length; + for (i = 0; i < p.totalRows; i++) { + rows.push(n[i][c.columns].$row); + } + c.rowsCopy = rows; + moveToPage(table, p, true); + }); + }, + + moveToPage = function(table, p, pageMoved) { + if ( p.isDisabled ) { return; } + var c = table.config, + $t = $(table), + l = p.last; + if ( pageMoved !== false && p.initialized && ts.isEmptyObject(c.cache)) { + return updateCache(table); + } + // abort page move if the table has filters and has not been initialized + if (p.ajax && ts.hasWidget(table, 'filter') && !c.widgetOptions.filter_initialized) { return; } + parsePageNumber( table, p ); + calcFilters(table, p); + // fixes issue where one currentFilter is [] and the other is ['','',''], + // making the next if comparison think the filters are different (joined by commas). Fixes #202. + l.currentFilters = (l.currentFilters || []).join('') === '' ? [] : l.currentFilters; + p.currentFilters = (p.currentFilters || []).join('') === '' ? [] : p.currentFilters; + // don't allow rendering multiple times on the same page/size/totalRows/filters/sorts + if ( l.page === p.page && l.size === p.size && l.totalRows === p.totalRows && + (l.currentFilters || []).join(',') === (p.currentFilters || []).join(',') && + // check for ajax url changes see #730 + (l.ajaxUrl || '') === (p.ajaxObject.url || '') && + // & ajax url option changes (dynamically add/remove/rename sort & filter parameters) + (l.optAjaxUrl || '') === (p.ajaxUrl || '') && + l.sortList === (c.sortList || []).join(',') ) { return; } + if (c.debug) { + console.log('Pager: Changing to page ' + p.page); + } + p.last = { + page : p.page, + size : p.size, + // fixes #408; modify sortList otherwise it auto-updates + sortList : (c.sortList || []).join(','), + totalRows : p.totalRows, + currentFilters : p.currentFilters || [], + ajaxUrl : p.ajaxObject.url || '', + optAjaxUrl : p.ajaxUrl || '' + }; + if (p.ajax) { + getAjax(table, p); + } else if (!p.ajax) { + renderTable(table, c.rowsCopy, p); + } + $.data(table, 'pagerLastPage', p.page); + if (p.initialized && pageMoved !== false) { + if (c.debug) { + console.log('Pager: Triggering pageMoved'); + } + $t.trigger('pageMoved', p); + ts.applyWidget( table ); + if (table.isUpdating) { + if (c.debug) { + console.log('Pager: Triggering updateComplete'); + } + $t.trigger('updateComplete', [ table, true ]); + } + } + }, + + getTotalPages = function( table, p ) { + return ts.hasWidget( table, 'filter' ) ? Math.min( p.totalPages, p.filteredPages ) : p.totalPages; + }, + + // set to either set or get value + parsePageSize = function( p, size, mode ) { + var s = parseInt( size, 10 ) || p.size || p.settings.size || 10, + // if select does not contain an "all" option, use size + setAll = p.$size.find( 'option[value="all"]' ).length ? 'all' : p.totalRows; + return /all/i.test( size ) || s === p.totalRows ? + // "get" to get `p.size` or "set" to set `p.$size.val()` + ( mode === 'get' ? p.totalRows : setAll ) : + ( mode === 'get' ? s : p.size ); + }, + + parsePageNumber = function( table, p ) { + var min = getTotalPages( table, p ) - 1; + p.page = parseInt( p.page, 10 ); + if ( p.page < 0 || isNaN( p.page ) ) { p.page = 0; } + if ( p.page > min && min >= 0 ) { p.page = min; } + return p.page; + }, + + setPageSize = function(table, size, p) { + p.size = parsePageSize( p, size, 'get' ); + p.$size.val( parsePageSize( p, p.size, 'set' ) ); + $.data(table, 'pagerLastPage', parsePageNumber( table, p ) ); + $.data(table, 'pagerLastSize', p.size); + p.totalPages = Math.ceil( p.totalRows / p.size ); + p.filteredPages = Math.ceil( p.filteredRows / p.size ); + moveToPage(table, p); + }, + + moveToFirstPage = function(table, p) { + p.page = 0; + moveToPage(table, p); + }, + + moveToLastPage = function(table, p) { + p.page = getTotalPages( table, p ) - 1; + moveToPage(table, p); + }, + + moveToNextPage = function(table, p) { + p.page++; + var last = getTotalPages( table, p ) - 1; + if ( p.page >= last ) { + p.page = last; + } + moveToPage(table, p); + }, + + moveToPrevPage = function(table, p) { + p.page--; + if ( p.page <= 0 ) { + p.page = 0; + } + moveToPage(table, p); + }, + + destroyPager = function(table, p) { + var c = table.config, + namespace = c.namespace + 'pager', + ctrls = [ p.cssFirst, p.cssPrev, p.cssNext, p.cssLast, p.cssGoto, p.cssPageSize ].join( ',' ); + showAllRows(table, p); + p.$container + // hide pager controls + .hide() + // unbind + .find( ctrls ) + .unbind( namespace ); + c.appender = null; // remove pager appender function + c.$table.unbind( namespace ); + if (ts.storage) { + ts.storage(table, p.storageKey, ''); + } + delete c.pager; + delete c.rowsCopy; + }, + + enablePager = function(table, p, triggered) { + var info, size, + c = table.config; + p.$size.add(p.$goto).add(p.$container.find('.ts-startRow, .ts-page')) + .removeClass(p.cssDisabled) + .removeAttr('disabled') + .attr('aria-disabled', 'false'); + p.isDisabled = false; + p.page = $.data(table, 'pagerLastPage') || p.page || 0; + size = p.$size.find('option[selected]').val(); + p.size = $.data(table, 'pagerLastSize') || parsePageSize( p, p.size, 'get' ); + p.$size.val( parsePageSize( p, p.size, 'set' ) ); // set page size + p.totalPages = Math.ceil( getTotalPages( table, p ) / p.size ); + // if table id exists, include page display with aria info + if ( table.id ) { + info = table.id + '_pager_info'; + p.$container.find(p.cssPageDisplay).attr('id', info); + c.$table.attr('aria-describedby', info); + } + changeHeight(table, p); + if ( triggered ) { + // tablesorter core update table + ts.update( c ); + setPageSize(table, p.size, p); + hideRowsSetup(table, p); + if (c.debug) { + console.log('Pager: Enabled'); + } + } + }; + + $this.appender = function(table, rows) { + var c = table.config, + p = c.pager; + if ( !p.ajax ) { + c.rowsCopy = rows; + p.totalRows = p.countChildRows ? c.$tbodies.eq(0).children('tr').length : rows.length; + p.size = $.data(table, 'pagerLastSize') || p.size || p.settings.size || 10; + p.totalPages = Math.ceil( p.totalRows / p.size ); + renderTable(table, rows, p); + // update display here in case all rows are removed + updatePageDisplay(table, p, false); + } + }; + + $this.construct = function(settings) { + return this.each(function() { + // check if tablesorter has initialized + if (!(this.config && this.hasInitialized)) { return; } + var t, ctrls, fxn, + table = this, + c = table.config, + wo = c.widgetOptions, + p = c.pager = $.extend( true, {}, $.tablesorterPager.defaults, settings ), + $t = c.$table, + namespace = c.namespace + 'pager', + // added in case the pager is reinitialized after being destroyed. + pager = p.$container = $(p.container).addClass('tablesorter-pager').show(); + // save a copy of the original settings + p.settings = $.extend( true, {}, $.tablesorterPager.defaults, settings ); + if (c.debug) { + console.log('Pager: Initializing'); + } + p.oldAjaxSuccess = p.oldAjaxSuccess || p.ajaxObject.success; + c.appender = $this.appender; + p.initializing = true; + if (p.savePages && ts.storage) { + t = ts.storage(table, p.storageKey) || {}; // fixes #387 + p.page = isNaN(t.page) ? p.page : t.page; + p.size = ( isNaN(t.size) ? p.size : t.size ) || p.settings.size || 10; + $.data(table, 'pagerLastSize', p.size); + } + + // skipped rows + p.regexRows = new RegExp('(' + (wo.filter_filteredRow || 'filtered') + '|' + c.selectorRemove.slice(1) + '|' + c.cssChildRow + ')'); + + $t + // .unbind( namespace ) adding in jQuery 1.4.3 ( I think ) + .unbind( pagerEvents.split(' ').join(namespace + ' ').replace(/\s+/g, ' ') ) + .bind('filterInit filterStart '.split(' ').join(namespace + ' '), function(e, filters) { + p.currentFilters = $.isArray(filters) ? filters : c.$table.data('lastSearch'); + // don't change page if filters are the same (pager updating, etc) + if (e.type === 'filterStart' && p.pageReset !== false && (c.lastCombinedFilter || '') !== (p.currentFilters || []).join('')) { + p.page = p.pageReset; // fixes #456 & #565 + } + }) + // update pager after filter widget completes + .bind('filterEnd sortEnd '.split(' ').join(namespace + ' '), function() { + p.currentFilters = c.$table.data('lastSearch'); + if (p.initialized || p.initializing) { + if (c.delayInit && c.rowsCopy && c.rowsCopy.length === 0) { + // make sure we have a copy of all table rows once the cache has been built + updateCache(table); + } + updatePageDisplay(table, p, false); + moveToPage(table, p, false); + ts.applyWidget( table ); + } + }) + .bind('disablePager' + namespace, function(e){ + e.stopPropagation(); + showAllRows(table, p); + }) + .bind('enablePager' + namespace, function(e){ + e.stopPropagation(); + enablePager(table, p, true); + }) + .bind('destroyPager' + namespace, function(e){ + e.stopPropagation(); + destroyPager(table, p); + }) + .bind('updateComplete' + namespace, function(e, table, triggered){ + e.stopPropagation(); + // table can be unintentionally undefined in tablesorter v2.17.7 and earlier + // don't recalculate total rows/pages if using ajax + if ( !table || triggered || p.ajax ) { return; } + var $rows = c.$tbodies.eq(0).children('tr').not(c.selectorRemove); + p.totalRows = $rows.length - ( p.countChildRows ? 0 : $rows.filter('.' + c.cssChildRow).length ); + p.totalPages = Math.ceil( p.totalRows / p.size ); + if ($rows.length && c.rowsCopy && c.rowsCopy.length === 0) { + // make a copy of all table rows once the cache has been built + updateCache(table); + } + if ( p.page >= p.totalPages ) { + moveToLastPage(table, p); + } + hideRows(table, p); + changeHeight(table, p); + updatePageDisplay(table, p, true); + }) + .bind('pageSize refreshComplete '.split(' ').join(namespace + ' '), function(e, size){ + e.stopPropagation(); + setPageSize(table, parsePageSize( p, size, 'get' ), p); + hideRows(table, p); + updatePageDisplay(table, p, false); + }) + .bind('pageSet pagerUpdate '.split(' ').join(namespace + ' '), function(e, num){ + e.stopPropagation(); + // force pager refresh + if (e.type === 'pagerUpdate') { + num = typeof num === 'undefined' ? p.page + 1 : num; + p.last.page = true; + } + p.page = (parseInt(num, 10) || 1) - 1; + moveToPage(table, p, true); + updatePageDisplay(table, p, false); + }) + .bind('pageAndSize' + namespace, function(e, page, size){ + e.stopPropagation(); + p.page = (parseInt(page, 10) || 1) - 1; + setPageSize(table, parsePageSize( p, size, 'get' ), p); + moveToPage(table, p, true); + hideRows(table, p); + updatePageDisplay(table, p, false); + }); + + // clicked controls + ctrls = [ p.cssFirst, p.cssPrev, p.cssNext, p.cssLast ]; + fxn = [ moveToFirstPage, moveToPrevPage, moveToNextPage, moveToLastPage ]; + if (c.debug && !pager.length) { + console.warn('Pager: >> Container not found'); + } + pager.find(ctrls.join(',')) + .attr('tabindex', 0) + .unbind('click' + namespace) + .bind('click' + namespace, function(e){ + e.stopPropagation(); + var i, $t = $(this), l = ctrls.length; + if ( !$t.hasClass(p.cssDisabled) ) { + for (i = 0; i < l; i++) { + if ($t.is(ctrls[i])) { + fxn[i](table, p); + break; + } + } + } + }); + + // goto selector + p.$goto = pager.find(p.cssGoto); + if ( p.$goto.length ) { + p.$goto + .unbind('change' + namespace) + .bind('change' + namespace, function(){ + p.page = $(this).val() - 1; + moveToPage(table, p, true); + updatePageDisplay(table, p, false); + }); + } else if (c.debug) { + console.warn('Pager: >> Goto selector not found'); + } + // page size selector + p.$size = pager.find(p.cssPageSize); + if ( p.$size.length ) { + // setting an option as selected appears to cause issues with initial page size + p.$size.find('option').removeAttr('selected'); + p.$size.unbind('change' + namespace).bind('change' + namespace, function() { + if ( !$(this).hasClass(p.cssDisabled) ) { + var size = $(this).val(); + p.$size.val( size ); // in case there are more than one pagers + setPageSize(table, size, p); + changeHeight(table, p); + } + return false; + }); + } else if (c.debug) { + console.warn('Pager: >> Size selector not found'); + } + + // clear initialized flag + p.initialized = false; + // before initialization event + $t.trigger('pagerBeforeInitialized', p); + + enablePager(table, p, false); + if ( typeof p.ajaxUrl === 'string' ) { + // ajax pager; interact with database + p.ajax = true; + // When filtering with ajax, allow only custom filtering function, disable default + // filtering since it will be done server side. + c.widgetOptions.filter_serversideFiltering = true; + c.serverSideSorting = true; + moveToPage(table, p); + } else { + p.ajax = false; + // Regular pager; all rows stored in memory + ts.appendCache( c, true ); // true = don't apply widgets + hideRowsSetup(table, p); + } + + // pager initialized + if (!p.ajax && !p.initialized) { + p.initializing = false; + p.initialized = true; + moveToPage(table, p); + if (c.debug) { + console.log('Pager: Triggering pagerInitialized'); + } + c.$table.trigger( 'pagerInitialized', p ); + if ( !( c.widgetOptions.filter_initialized && ts.hasWidget(table, 'filter') ) ) { + updatePageDisplay(table, p, false); + } + } + + // make the hasWidget function think that the pager widget is being used + c.widgetInit.pager = true; + }); + }; + + }() }); + + // see #486 + ts.showError = function( table, xhr, settings, exception ) { + var $row, + $table = $( table ), + c = $table[0].config, + wo = c && c.widgetOptions, + errorRow = c.pager && c.pager.cssErrorRow || + wo && wo.pager_css && wo.pager_css.errorRow || + 'tablesorter-errorRow', + typ = typeof xhr, + valid = true, + message = '', + removeRow = function(){ + c.$table.find( 'thead' ).find( '.' + errorRow ).remove(); + }; + + if ( !$table.length ) { + console.error('tablesorter showError: no table parameter passed'); + return; + } + + // ajaxError callback for plugin or widget - see #992 + if ( typeof c.pager.ajaxError === 'function' ) { + valid = c.pager.ajaxError( c, xhr, settings, exception ); + if ( valid === false ) { + return removeRow(); + } else { + message = valid; + } + } else if ( typeof wo.pager_ajaxError === 'function' ) { + valid = wo.pager_ajaxError( c, xhr, settings, exception ); + if ( valid === false ) { + return removeRow(); + } else { + message = valid; + } + } + + if ( message === '' ) { + if ( typ === 'object' ) { + message = + xhr.status === 0 ? 'Not connected, verify Network' : + xhr.status === 404 ? 'Requested page not found [404]' : + xhr.status === 500 ? 'Internal Server Error [500]' : + exception === 'parsererror' ? 'Requested JSON parse failed' : + exception === 'timeout' ? 'Time out error' : + exception === 'abort' ? 'Ajax Request aborted' : + 'Uncaught error: ' + xhr.statusText + ' [' + xhr.status + ']'; + } else if ( typ === 'string' ) { + // keep backward compatibility (external usage just passes a message string) + message = xhr; + } else { + // remove all error rows + return removeRow(); + } + } + + // allow message to include entire row HTML! + $row = ( /tr\>/.test(message) ? $(message) : $('' + message + '') ) + .click( function() { + $( this ).remove(); + }) + // add error row to thead instead of tbody, or clicking on the header will result in a parser error + .appendTo( c.$table.find( 'thead:first' ) ) + .addClass( errorRow + ' ' + c.selectorRemove.slice(1) ) + .attr({ + role : 'alert', + 'aria-live' : 'assertive' + }); + + }; + + // extend plugin scope + $.fn.extend({ + tablesorterPager: $.tablesorterPager.construct + }); + +})(jQuery); diff --git a/vendor/FHC-vendor/jquery-tablesorter/beta-testing/example-pager-custom-controls.html b/vendor/FHC-vendor/jquery-tablesorter/beta-testing/example-pager-custom-controls.html new file mode 100644 index 000000000..83b5d22d3 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/beta-testing/example-pager-custom-controls.html @@ -0,0 +1,1200 @@ + + + + + jQuery plugin: Tablesorter 2.0 - Pager plugin, Custom Pagination + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

+ NOTE! +

    +
  • Modified in v2.17.1 to properly work with either the pager addon or pager widget.
  • +
  • In v2.16.4, code was updated to correctly count process pages.
  • +
+

+ +

Demo

+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameMajorSexEnglishJapaneseCalculusGeometry
NameMajorSexEnglishJapaneseCalculusGeometry
+
+ # per page: + 10 | + 25 | + 50 | + 100 + + + + Prev  + + +  Next + + + +
+
Student01Languagesmale80707580
Student02Mathematicsmale908810090
Student03Languagesfemale85958085
Student04Languagesmale6055100100
Student05Languagesfemale68809580
Student06Mathematicsmale1009910090
Student07Mathematicsmale85689090
Student08Languagesmale100909085
Student09Mathematicsmale80506575
Student10Languagesmale8510010090
Student11Languagesmale8685100100
Student12Mathematicsfemale100757085
Student13Languagesfemale1008010090
Student14Languagesfemale50455590
Student15Languagesmale953510090
Student16Languagesfemale100503070
Student17Languagesfemale801005565
Student18Mathematicsmale30495575
Student19Languagesmale68908870
Student20Mathematicsmale40454080
Student21Languagesmale5045100100
Student22Mathematicsmale1009910090
Student23Languagesfemale85808080
student24Languagesfemale100911382
student25Mathematicsmale22968253
student26Languagesfemale37295659
student27Mathematicsmale86826923
student28Languagesfemale4425431
student29Mathematicsmale77472238
student30Languagesfemale19352310
student31Mathematicsmale90271750
student32Languagesfemale60753338
student33Mathematicsmale4313715
student34Languagesfemale77978144
student35Mathematicsmale5815195
student36Languagesfemale70617094
student37Mathematicsmale6036184
student38Languagesfemale6339011
student39Mathematicsmale50463238
student40Languagesfemale5175253
student41Mathematicsmale43342878
student42Languagesfemale11896095
student43Mathematicsmale48921888
student44Languagesfemale8225973
student45Mathematicsmale91733739
student46Languagesfemale481210
student47Mathematicsmale8910611
student48Languagesfemale90322118
student49Mathematicsmale42494972
student50Languagesfemale56376754
student51Mathematicsmale48315563
student52Languagesfemale38917174
student53Mathematicsmale26385100
student54Languagesfemale75811623
student55Mathematicsmale65521553
student56Languagesfemale23527994
student57Mathematicsmale80226112
student58Languagesfemale5357979
student59Mathematicsmale96323517
student60Languagesfemale16766527
student61Mathematicsmale20572223
student62Languagesfemale19838778
student63Mathematicsmale258330
student64Languagesfemale021993
student65Mathematicsmale20861396
student66Languagesfemale28358757
student67Mathematicsmale36502910
student68Languagesfemale6090966
student69Mathematicsmale34614398
student70Languagesfemale13379183
student71Mathematicsmale47805782
student72Languagesfemale69433737
student73Mathematicsmale54609421
student74Languagesfemale71143446
student75Mathematicsmale89963117
student76Languagesfemale28482994
student77Mathematicsmale100652024
student78Languagesfemale11969033
student79Mathematicsmale53559339
student80Languagesfemale11008444
student81Mathematicsmale63789643
student82Languagesfemale41698235
student83Mathematicsmale9498139
student84Languagesfemale94729177
student85Mathematicsmale71324525
student86Languagesfemale9896437
student87Mathematicsmale8917367
student88Languagesfemale43416879
student89Mathematicsmale7382237
student90Languagesfemale94839337
student91Mathematicsmale8284261
student92Languagesfemale46413069
student93Mathematicsmale47198583
student94Languagesfemale39146462
student95Mathematicsmale71314628
student96Languagesfemale90944540
student97Mathematicsmale468925
student98Languagesfemale41434799
student99Mathematicsmale71908973
student100Languagesfemale31641856
student101Mathematicsmale52136999
student102Languagesfemale86398318
student103Mathematicsmale23659880
student104Languagesfemale781005766
student105Mathematicsmale69214397
student106Languagesfemale2727838
student107Mathematicsmale86964634
student108Languagesfemale13846664
student109Mathematicsmale35959881
student110Languagesfemale30286254
student111Mathematicsmale60313585
student112Languagesfemale19811969
student113Mathematicsmale6659854
student114Languagesfemale38804016
student115Mathematicsmale5849697
student116Languagesfemale59976954
student117Mathematicsmale0347949
student118Languagesfemale1871285
student119Mathematicsmale9387759
student120Languagesfemale42232690
student121Mathematicsmale17396689
student122Languagesfemale26759018
student123Mathematicsmale34237780
student124Languagesfemale5267742
student125Mathematicsmale5628581
student126Languagesfemale51356744
student127Mathematicsmale64644434
student128Languagesfemale67917982
student129Mathematicsmale4261579
student130Languagesfemale7210369
student131Mathematicsmale9477511
student132Languagesfemale27958548
student133Mathematicsmale92114061
student134Languagesfemale4185660
student135Mathematicsmale8422652
student136Languagesfemale7604721
student137Mathematicsmale51813090
student138Languagesfemale5861673
student139Mathematicsmale48383731
student140Languagesfemale33265660
student141Mathematicsmale84842975
student142Languagesfemale7235654
student143Mathematicsmale31427082
student144Languagesfemale94875035
student145Mathematicsmale91528026
student146Languagesfemale78657979
student147Mathematicsmale50905971
student148Languagesfemale15686633
student149Mathematicsmale17363413
student150Languagesfemale30956973
student151Mathematicsmale20534958
student152Languagesfemale19896060
student153Mathematicsmale5282203
student154Languagesfemale66985366
student155Mathematicsmale5852258
student156Languagesfemale3443688
student157Mathematicsmale4309114
student158Languagesfemale34186731
student159Mathematicsmale79733452
student160Languagesfemale15613727
student161Mathematicsmale74771545
student162Languagesfemale52621958
student163Mathematicsmale77602795
student164Languagesfemale9619357
student165Mathematicsmale51637519
student166Languagesfemale32447299
student167Mathematicsmale82845763
student168Languagesfemale53128567
student169Mathematicsmale4916846
student170Languagesfemale39341665
student171Mathematicsmale10068884
student172Languagesfemale14256352
student173Mathematicsmale74261560
student174Languagesfemale1158892
student175Mathematicsmale6247231
student176Languagesfemale65263242
student177Mathematicsmale83786924
student178Languagesfemale14100743
student179Mathematicsmale2835897
student180Languagesfemale1483962
student181Mathematicsmale1442469
student182Languagesfemale6452722
student183Mathematicsmale15262785
student184Languagesfemale9149407
student185Mathematicsmale87894287
student186Languagesfemale75766188
student187Mathematicsmale11486630
student188Languagesfemale7379272
student189Mathematicsmale98365815
student190Languagesfemale8028656
student191Mathematicsmale3633974
student192Languagesfemale5923390
student193Mathematicsmale9461933
student194Languagesfemale82497242
student195Mathematicsmale8059830
student196Languagesfemale89179027
student197Mathematicsmale4622667
student198Languagesfemale65757377
student199Mathematicsmale77975413
student200Languagesfemale78195796
student201Mathematicsmale92211180
student202Languagesfemale45499340
student203Mathematicsmale74258753
student204Languagesfemale1571234
student205Mathematicsmale82979573
student206Languagesfemale82605898
student207Mathematicsmale266411100
student208Languagesfemale6496045
student209Mathematicsmale96819663
student210Languagesfemale2439069
student211Mathematicsmale8664710
student212Languagesfemale764507
student213Mathematicsmale59122677
student214Languagesfemale21259382
student215Mathematicsmale22186451
student216Languagesfemale92419828
student217Mathematicsmale32481417
student218Languagesfemale62368556
student219Mathematicsmale33379087
student220Languagesfemale24436084
student221Mathematicsmale6593751
student222Languagesfemale9197576
student223Mathematicsmale86293227
student224Languagesfemale63596891
student225Mathematicsmale57739568
student226Languagesfemale38545987
student227Mathematicsmale53627264
student228Languagesfemale62847273
student229Mathematicsmale1308358
student230Languagesfemale35658087
student231Mathematicsmale76202850
student232Languagesfemale9176633
student233Mathematicsmale9229961
student234Languagesfemale47699839
student235Mathematicsmale21443882
student236Languagesfemale19865178
student237Mathematicsmale28454936
student238Languagesfemale78194981
student239Mathematicsmale72694720
student240Languagesfemale17436656
student241Mathematicsmale901944
student242Languagesfemale618251
student243Mathematicsmale1377213
student244Languagesfemale8005854
student245Mathematicsmale8331859
student246Languagesfemale90992912
student247Mathematicsmale89238159
student248Languagesfemale7226283
student249Mathematicsmale28105047
student250Languagesfemale8914894
student251Mathematicsmale15233769
student252Languagesfemale27821036
student253Mathematicsmale49456423
student254Languagesfemale79756374
student255Mathematicsmale2566475
student256Languagesfemale36262958
student257Mathematicsmale17226673
student258Languagesfemale70919745
student259Mathematicsmale34307830
student260Languagesfemale77578677
student261Mathematicsmale1259687
student262Languagesfemale11609771
student263Mathematicsmale12303558
student264Languagesfemale46152340
student265Mathematicsmale4481926
student266Languagesfemale15683215
student267Mathematicsmale5585098
student268Languagesfemale42303224
student269Mathematicsmale781009957
student270Languagesfemale55338725
student271Mathematicsmale25972993
student272Languagesfemale39351843
student273Mathematicsmale35179958
student274Languagesfemale86522724
student275Mathematicsmale97387376
student276Languagesfemale206198
student277Mathematicsmale9336947
student278Languagesfemale423152
student279Mathematicsmale6118962
student280Languagesfemale99898794
student281Mathematicsmale4895900
student282Languagesfemale60473130
student283Mathematicsmale64241076
student284Languagesfemale9937468
student285Mathematicsmale0986869
student286Languagesfemale66824959
student287Mathematicsmale86143717
student288Languagesfemale27489327
student289Mathematicsmale8489668
student290Languagesfemale9902057
student291Mathematicsmale50967242
student292Languagesfemale9822792
student293Mathematicsmale1994287
student294Languagesfemale9897922
student295Mathematicsmale75307764
student296Languagesfemale5198553
student297Mathematicsmale25958672
student298Languagesfemale20753735
student299Mathematicsmale4924111
student300Languagesfemale2832891
student301Mathematicsmale4163425
student302Languagesfemale29167790
student303Mathematicsmale89415182
student304Languagesfemale40912434
student305Mathematicsmale7474978
student306Languagesfemale6375562
student307Mathematicsmale30733490
student308Languagesfemale82919593
student309Mathematicsmale6247382
student310Languagesfemale39101257
student311Mathematicsmale89642067
student312Languagesfemale56369241
student313Mathematicsmale99809974
student314Languagesfemale31796493
student315Mathematicsmale5327055
student316Languagesfemale35152960
student317Mathematicsmale31476960
student318Languagesfemale88281366
student319Mathematicsmale65121640
student320Languagesfemale28171940
student321Mathematicsmale241004470
student322Languagesfemale20598352
student323Mathematicsmale17608291
student324Languagesfemale95994337
student325Mathematicsmale30189931
student326Languagesfemale3478386
student327Mathematicsmale9863435
student328Languagesfemale54239846
student329Mathematicsmale97934518
student330Languagesfemale2774077
student331Mathematicsmale9704137
student332Languagesfemale52377620
student333Mathematicsmale74186819
student334Languagesfemale77100339
student335Mathematicsmale38537718
student336Languagesfemale18132610
student337Mathematicsmale90478770
student338Languagesfemale38493674
student339Mathematicsmale100641372
student340Languagesfemale74254152
student341Mathematicsmale37131613
student342Languagesfemale24341583
student343Mathematicsmale2056728
student344Languagesfemale4522572
student345Mathematicsmale19117535
student346Languagesfemale6583115
student347Mathematicsmale16663611
student348Languagesfemale1239540
student349Mathematicsmale752742
student350Languagesfemale88926055
student351Mathematicsmale92709145
student352Languagesfemale74765944
student353Mathematicsmale63696094
student354Languagesfemale3685548
student355Mathematicsmale39962148
student356Languagesfemale4134275
student357Mathematicsmale6434733
student358Languagesfemale95146355
student359Mathematicsmale701001382
student360Languagesfemale522410021
student361Mathematicsmale040869
student362Languagesfemale024932
student363Mathematicsmale23108694
student364Languagesfemale1538649
student365Mathematicsmale7623310
student366Languagesfemale35357894
student367Mathematicsmale294243100
student368Languagesfemale668510
student369Mathematicsmale74155683
student370Languagesfemale7543908
student371Mathematicsmale4060470
student372Languagesfemale62421749
student373Mathematicsmale31464454
student374Languagesfemale30344787
student375Mathematicsmale9694152
student376Languagesfemale85432992
student377Mathematicsmale7904025
student378Languagesfemale36407285
student379Mathematicsmale5368882
student380Languagesfemale87783879
student381Mathematicsmale89978338
student382Languagesfemale21194910
student383Mathematicsmale47126850
student384Languagesfemale37124995
student385Mathematicsmale8408851
student386Languagesfemale89612748
student387Mathematicsmale10478761
student388Languagesfemale1692656
student389Mathematicsmale57331347
student390Languagesfemale90357775
student391Mathematicsmale31474753
student392Languagesfemale942412
student393Mathematicsmale6119817
student394Languagesfemale457577
student395Mathematicsmale6729212
student396Languagesfemale516456
student397Mathematicsmale93147714
student398Languagesfemale1893427
student399Mathematicsmale93775791
student400Languagesfemale67778032
student401Mathematicsmale5889417
student402Languagesfemale3056053
student403Mathematicsmale28253259
student404Languagesfemale62348164
student405Mathematicsmale29842623
student406Languagesfemale7086377
student407Mathematicsmale8654799
student408Languagesfemale9381089
student409Mathematicsmale84214658
student410Languagesfemale21841849
student411Mathematicsmale2796340
student412Languagesfemale9301991
student413Mathematicsmale31928743
student414Languagesfemale53259843
student415Mathematicsmale36758089
student416Languagesfemale37681254
student417Mathematicsmale25891253
student418Languagesfemale922846
student419Mathematicsmale11286058
student420Languagesfemale1373517
student421Mathematicsmale67303885
student422Languagesfemale68793441
student423Mathematicsmale72459341
student424Languagesfemale56464538
student425Mathematicsmale8621840
student426Languagesfemale99854119
student427Mathematicsmale7135389
student428Languagesfemale22911216
student429Mathematicsmale1532693
student430Languagesfemale35463474
student431Mathematicsmale33839720
student432Languagesfemale9920326
student433Mathematicsmale48428318
student434Languagesfemale4442530
student435Mathematicsmale78486045
student436Languagesfemale4757890
student437Mathematicsmale881210053
student438Languagesfemale4805160
student439Mathematicsmale70898516
student440Languagesfemale71943433
student441Mathematicsmale68137218
student442Languagesfemale7539721
student443Mathematicsmale65366087
student444Languagesfemale43212434
student445Mathematicsmale85776528
student446Languagesfemale61907891
student447Mathematicsmale9207812
student448Languagesfemale33306290
student449Mathematicsmale8616745
student450Languagesfemale100862423
student451Mathematicsmale1425645
student452Languagesfemale86399888
student453Mathematicsmale72687719
student454Languagesfemale94523100
student455Mathematicsmale34678979
student456Languagesfemale9204745
student457Mathematicsmale64582698
student458Languagesfemale439359100
student459Mathematicsmale82359781
student460Languagesfemale183524100
student461Mathematicsmale79804351
student462Languagesfemale56101767
student463Mathematicsmale36441485
student464Languagesfemale2640692
student465Mathematicsmale59934378
student466Languagesfemale7884883
student467Mathematicsmale41378060
student468Languagesfemale44279777
student469Mathematicsmale29196482
student470Languagesfemale50962746
student471Mathematicsmale49155145
student472Languagesfemale38353178
student473Mathematicsmale1802365
student474Languagesfemale91172376
student475Mathematicsmale57393563
student476Languagesfemale33736214
student477Mathematicsmale96168840
student478Languagesfemale30631613
student479Mathematicsmale74393787
student480Languagesfemale26369479
student481Mathematicsmale19586512
student482Languagesfemale73362248
student483Mathematicsmale7894757
student484Languagesfemale5951935
student485Mathematicsmale677110085
student486Languagesfemale33301546
student487Mathematicsmale12191637
student488Languagesfemale80982914
student489Mathematicsmale70511431
student490Languagesfemale95381592
student491Mathematicsmale60317412
student492Languagesfemale62569068
student493Mathematicsmale63112991
student494Languagesfemale4112520
student495Mathematicsmale6053144
student496Languagesfemale1135528
student497Mathematicsmale11964237
student498Languagesfemale16727974
student499Mathematicsmale9212266
student500Languagesfemale34226434
student501Mathematicsmale50938661
student502Languagesfemale50224044
student503Mathematicsmale383917
student504Languagesfemale98169355
student505Mathematicsmale86893628
student506Languagesfemale16531350
student507Mathematicsmale5757338
student508Languagesfemale34796977
student509Mathematicsmale241659
student510Languagesfemale606299100
student511Mathematicsmale65525295
student512Languagesfemale5873941
student513Mathematicsmale39752876
student514Languagesfemale4666478
student515Mathematicsmale5160998
student516Languagesfemale17201297
student517Mathematicsmale72179673
student518Languagesfemale92216227
student519Mathematicsmale5042433
student520Languagesfemale5237157
student521Mathematicsmale58403554
student522Languagesfemale9385753
student523Mathematicsmale79201818
student524Languagesfemale149427
student525Mathematicsmale95412998
student526Languagesfemale3459921
student527Mathematicsmale39664129
student528Languagesfemale328125
student529Mathematicsmale33443785
student530Languagesfemale69255979
student531Mathematicsmale13504952
student532Languagesfemale54834531
student533Mathematicsmale15249751
student534Languagesfemale7516963
student535Mathematicsmale9183856
student536Languagesfemale50137480
student537Mathematicsmale54757410
student538Languagesfemale76397046
student539Mathematicsmale84723940
student540Languagesfemale10047214
student541Mathematicsmale426111
student542Languagesfemale57716561
student543Mathematicsmale7854134
student544Languagesfemale14763647
student545Mathematicsmale15196396
student546Languagesfemale27823356
student547Mathematicsmale70239690
student548Languagesfemale612278
student549Mathematicsmale22376436
student550Languagesfemale75969440
student551Mathematicsmale4382921
student552Languagesfemale7968718
student553Mathematicsmale65765244
student554Languagesfemale41627354
student555Mathematicsmale25982140
student556Languagesfemale17709682
student557Mathematicsmale43912743
student558Languagesfemale33372433
student559Mathematicsmale87871031
student560Languagesfemale48409774
student561Mathematicsmale63759155
student562Languagesfemale66825995
student563Mathematicsmale21955838
student564Languagesfemale9299745
student565Mathematicsmale5979420
student566Languagesfemale64952412
student567Mathematicsmale70463674
student568Languagesfemale16259149
student569Mathematicsmale73332488
student570Languagesfemale9619527
student571Mathematicsmale18127646
student572Languagesfemale61714963
student573Mathematicsmale46328517
student574Languagesfemale42421137
student575Mathematicsmale49764120
student576Languagesfemale22278012
student577Mathematicsmale76341866
student578Languagesfemale96772917
student579Mathematicsmale62516772
student580Languagesfemale96672254
student581Mathematicsmale77112388
student582Languagesfemale6282433
student583Mathematicsmale392312100
student584Languagesfemale10212071
student585Mathematicsmale11277100
student586Languagesfemale40349778
student587Mathematicsmale2518319
student588Languagesfemale18763025
student589Mathematicsmale24574681
student590Languagesfemale2103194
student591Mathematicsmale91847513
student592Languagesfemale79449710
student593Mathematicsmale42606730
student594Languagesfemale61577535
student595Mathematicsmale42468171
student596Languagesfemale92637574
student597Mathematicsmale86374051
student598Languagesfemale5210473
student599Mathematicsmale100281476
student600Languagesfemale31762043
student601Mathematicsmale402766
student602Languagesfemale587921
student603Mathematicsmale754691
student604Languagesfemale2830153
student605Mathematicsmale38939892
student606Languagesfemale43968991
student607Mathematicsmale43491483
student608Languagesfemale50617298
student609Mathematicsmale4499983
student610Languagesfemale5367382
student611Mathematicsmale40849954
student612Languagesfemale29966569
student613Mathematicsmale1276599
student614Languagesfemale4783494
student615Mathematicsmale3727224
student616Languagesfemale94394924
student617Mathematicsmale0752141
student618Languagesfemale5936418
student619Mathematicsmale2266133
student620Languagesfemale4387448
student621Mathematicsmale100155152
student622Languagesfemale63719917
student623Mathematicsmale143444100
student624Languagesfemale2385727
student625Mathematicsmale23143240
student626Languagesfemale34497254
student627Mathematicsmale21168126
student628Languagesfemale54693434
student629Mathematicsmale72116331
student630Languagesfemale8798947
student631Mathematicsmale43525358
student632Languagesfemale5014420
student633Mathematicsmale89836787
student634Languagesfemale079916
student635Mathematicsmale59178458
student636Languagesfemale94953660
student637Mathematicsmale39426346
student638Languagesfemale019610
student639Mathematicsmale50164171
student640Languagesfemale8604613
student641Mathematicsmale45855936
student642Languagesfemale8335057
student643Mathematicsmale8306014
student644Languagesfemale76807338
student645Mathematicsmale2614582
student646Languagesfemale9316422
student647Mathematicsmale85947616
student648Languagesfemale57453216
student649Mathematicsmale16169013
student650Languagesfemale4331887
student651Mathematicsmale16243244
student652Languagesfemale5998334
student653Mathematicsmale73184783
student654Languagesfemale992510093
student655Mathematicsmale0739784
student656Languagesfemale0289475
student657Mathematicsmale65905863
student658Languagesfemale84358641
student659Mathematicsmale4539599
student660Languagesfemale32103162
student661Mathematicsmale61285461
student662Languagesfemale70961454
student663Mathematicsmale6392298
student664Languagesfemale41104623
student665Mathematicsmale81918021
student666Languagesfemale79716568
student667Mathematicsmale47691890
student668Languagesfemale2616700
student669Mathematicsmale66109335
student670Languagesfemale66682713
student671Mathematicsmale86792645
student672Languagesfemale50532574
student673Mathematicsmale9753914
student674Languagesfemale28796942
student675Mathematicsmale607259
student676Languagesfemale53213943
student677Mathematicsmale37654591
student678Languagesfemale76806027
student679Mathematicsmale85273455
student680Languagesfemale66114117
student681Mathematicsmale27618982
student682Languagesfemale402613
student683Mathematicsmale2516695
student684Languagesfemale63448563
student685Mathematicsmale97957883
student686Languagesfemale5121387
student687Mathematicsmale63928723
student688Languagesfemale22965959
student689Mathematicsmale33801523
student690Languagesfemale34751924
student691Mathematicsmale36684854
student692Languagesfemale32362012
student693Mathematicsmale68917450
student694Languagesfemale87919637
student695Mathematicsmale239144
student696Languagesfemale9462977
student697Mathematicsmale1474575
student698Languagesfemale73921990
student699Mathematicsmale8207978
student700Languagesfemale763510039
student701Mathematicsmale27518949
student702Languagesfemale0647237
student703Mathematicsmale93469487
student704Languagesfemale6922172
student705Mathematicsmale1752113
student706Languagesfemale1325219
student707Mathematicsmale75617273
student708Languagesfemale8437736
student709Mathematicsmale81194514
student710Languagesfemale62173927
student711Mathematicsmale8869681
student712Languagesfemale53825929
student713Mathematicsmale83347134
student714Languagesfemale9552614
student715Mathematicsmale6715313
student716Languagesfemale8297825
student717Mathematicsmale65503146
student718Languagesfemale27462537
student719Mathematicsmale98423544
student720Languagesfemale9014444
student721Mathematicsmale3168293
student722Languagesfemale3434370
student723Mathematicsmale59771421
student724Languagesfemale16535759
student725Mathematicsmale7914416
student726Languagesfemale108199
student727Mathematicsmale89487916
student728Languagesfemale8872387
student729Mathematicsmale17539584
student730Languagesfemale65523961
student731Mathematicsmale44309672
student732Languagesfemale70793233
student733Mathematicsmale30474611
student734Languagesfemale761001649
student735Mathematicsmale39369089
student736Languagesfemale1941929
student737Mathematicsmale23737887
student738Languagesfemale87714464
student739Mathematicsmale22198220
student740Languagesfemale94526739
student741Mathematicsmale14175187
student742Languagesfemale5663983
student743Mathematicsmale99924698
student744Languagesfemale19768388
student745Mathematicsmale15776881
student746Languagesfemale48814838
student747Mathematicsmale2913861
student748Languagesfemale7163030
student749Mathematicsmale19683053
student750Languagesfemale91182762
student751Mathematicsmale73333836
student752Languagesfemale99387550
student753Mathematicsmale55713490
student754Languagesfemale52409883
student755Mathematicsmale1463611
student756Languagesfemale1319496
student757Mathematicsmale49665592
student758Languagesfemale0198082
student759Mathematicsmale2635873
student760Languagesfemale8287639
student761Mathematicsmale52118357
student762Languagesfemale83688425
student763Mathematicsmale1725670
student764Languagesfemale1758084
student765Mathematicsmale7564785
student766Languagesfemale76329339
student767Mathematicsmale20758465
student768Languagesfemale25471289
student769Mathematicsmale86947945
student770Languagesfemale65815535
student771Mathematicsmale62414143
student772Languagesfemale1446243
student773Mathematicsmale17557278
student774Languagesfemale9546356
student775Mathematicsmale7205648
student776Languagesfemale30881956
student777Mathematicsmale42448856
student778Languagesfemale42695663
student779Mathematicsmale7857783
student780Languagesfemale15862498
student781Mathematicsmale4684369
student782Languagesfemale67981552
student783Mathematicsmale33326357
student784Languagesfemale35951653
student785Mathematicsmale78545482
student786Languagesfemale8185914
student787Mathematicsmale42412314
student788Languagesfemale591008636
student789Mathematicsmale1926012
student790Languagesfemale10034570
student791Mathematicsmale381217
student792Languagesfemale3155193
student793Mathematicsmale11339877
student794Languagesfemale461786
student795Mathematicsmale5786727
student796Languagesfemale5746236
student797Mathematicsmale57676661
student798Languagesfemale93888725
student799Mathematicsmale59966441
student800Languagesfemale6276923
student801Mathematicsmale35833255
student802Languagesfemale42581583
student803Mathematicsmale41904012
student804Languagesfemale8143837
student805Mathematicsmale87773320
student806Languagesfemale53873037
student807Mathematicsmale13358516
student808Languagesfemale20829034
student809Mathematicsmale5821614
student810Languagesfemale14282356
student811Mathematicsmale4997368
student812Languagesfemale31461163
student813Mathematicsmale7497643
student814Languagesfemale42839575
student815Mathematicsmale2654529
student816Languagesfemale79596988
student817Mathematicsmale68182684
student818Languagesfemale39139915
student819Mathematicsmale2248716
student820Languagesfemale12538811
student821Mathematicsmale33908029
student822Languagesfemale3795486
student823Mathematicsmale9178851
student824Languagesfemale31586731
student825Mathematicsmale22305098
student826Languagesfemale55585610
student827Mathematicsmale56765753
student828Languagesfemale1129881
student829Mathematicsmale67926671
student830Languagesfemale30614449
student831Mathematicsmale0414461
student832Languagesfemale72524585
student833Mathematicsmale60991294
student834Languagesfemale83587542
student835Mathematicsmale9505377
student836Languagesfemale33287062
student837Mathematicsmale3982755
student838Languagesfemale411004547
student839Mathematicsmale81692729
student840Languagesfemale9012649
student841Mathematicsmale45382034
student842Languagesfemale325311
student843Mathematicsmale55778649
student844Languagesfemale61609176
student845Mathematicsmale8085749
student846Languagesfemale63897371
student847Mathematicsmale79159742
student848Languagesfemale99187343
student849Mathematicsmale30523856
student850Languagesfemale65866734
student851Mathematicsmale7343655
student852Languagesfemale42435173
student853Mathematicsmale870980
student854Languagesfemale29411245
student855Mathematicsmale5739090
student856Languagesfemale80529654
student857Mathematicsmale43838246
student858Languagesfemale7917131
student859Mathematicsmale6813707
student860Languagesfemale51441552
student861Mathematicsmale9170178
student862Languagesfemale4116578
student863Mathematicsmale20635585
student864Languagesfemale5938726
student865Mathematicsmale4894432
student866Languagesfemale26679839
student867Mathematicsmale48793866
student868Languagesfemale1632153
student869Mathematicsmale13205085
student870Languagesfemale4922039
student871Mathematicsmale8262353
student872Languagesfemale6607464
student873Mathematicsmale66483914
student874Languagesfemale43833100
student875Mathematicsmale214990
student876Languagesfemale79807180
student877Mathematicsmale84252688
student878Languagesfemale38466660
student879Mathematicsmale35279851
student880Languagesfemale5759267
student881Mathematicsmale7687788
student882Languagesfemale2140817
student883Mathematicsmale5046866
student884Languagesfemale83863092
student885Mathematicsmale63466694
student886Languagesfemale7671262
student887Mathematicsmale7418686
student888Languagesfemale65774488
student889Mathematicsmale67326119
student890Languagesfemale85968541
student891Mathematicsmale1487705
student892Languagesfemale81284528
student893Mathematicsmale9191883
student894Languagesfemale407024
student895Mathematicsmale18195189
student896Languagesfemale70352512
student897Mathematicsmale7290741
student898Languagesfemale8417186
student899Mathematicsmale1423886
student900Languagesfemale7837601
student901Mathematicsmale66953168
student902Languagesfemale23608065
student903Mathematicsmale76896396
student904Languagesfemale3469070
student905Mathematicsmale65449679
student906Languagesfemale6877865
student907Mathematicsmale86619943
student908Languagesfemale88953213
student909Mathematicsmale531005982
student910Languagesfemale3579535
student911Mathematicsmale230177
student912Languagesfemale9687263
student913Mathematicsmale23923996
student914Languagesfemale9497658
student915Mathematicsmale49312971
student916Languagesfemale21577957
student917Mathematicsmale03510089
student918Languagesfemale64827552
student919Mathematicsmale16666968
student920Languagesfemale92951127
student921Mathematicsmale16888590
student922Languagesfemale56152698
student923Mathematicsmale78274017
student924Languagesfemale95104432
student925Mathematicsmale99855218
student926Languagesfemale73317149
student927Mathematicsmale21791063
student928Languagesfemale92718012
student929Mathematicsmale23293388
student930Languagesfemale4189884
student931Mathematicsmale97177921
student932Languagesfemale72409392
student933Mathematicsmale7558326
student934Languagesfemale15982728
student935Mathematicsmale7688806
student936Languagesfemale84234292
student937Mathematicsmale71568671
student938Languagesfemale7395822
student939Mathematicsmale1555460
student940Languagesfemale2031308
student941Mathematicsmale97544181
student942Languagesfemale83418664
student943Mathematicsmale7195327
student944Languagesfemale0273091
student945Mathematicsmale99751722
student946Languagesfemale92531090
student947Mathematicsmale4449432
student948Languagesfemale0974879
student949Mathematicsmale97557974
student950Languagesfemale6598932
student951Mathematicsmale56733881
student952Languagesfemale84946150
student953Mathematicsmale4820770
student954Languagesfemale39981420
student955Mathematicsmale4152465
student956Languagesfemale78229231
student957Mathematicsmale28382654
student958Languagesfemale49613554
student959Mathematicsmale81152817
student960Languagesfemale5480582
student961Mathematicsmale7523537
student962Languagesfemale5565120
student963Mathematicsmale86427036
student964Languagesfemale54455480
student965Mathematicsmale38186992
student966Languagesfemale33894683
student967Mathematicsmale4395576
student968Languagesfemale13261286
student969Mathematicsmale94228559
student970Languagesfemale9358610
student971Mathematicsmale35728536
student972Languagesfemale37519693
student973Mathematicsmale71107959
student974Languagesfemale71317393
student975Mathematicsmale80268697
student976Languagesfemale69216769
student977Mathematicsmale38861039
student978Languagesfemale48903981
student979Mathematicsmale9083342
student980Languagesfemale1919184
student981Mathematicsmale98255046
student982Languagesfemale38882116
student983Mathematicsmale71481843
student984Languagesfemale79851816
student985Mathematicsmale51669068
student986Languagesfemale100956591
student987Mathematicsmale6742424
student988Languagesfemale93809435
student989Mathematicsmale65785794
student990Languagesfemale27922191
student991Mathematicsmale77152676
student992Languagesfemale28845167
student993Mathematicsmale3786250
student994Languagesfemale59772074
student995Mathematicsmale6266875
student996Languagesfemale88703343
student997Mathematicsmale73334253
student998Languagesfemale6410231
student999Mathematicsmale91931635
student1000Mathematicsmale8277079
+ +

Javascript

+
+

+	
+

HTML

+
+
<table class="tablesorter">
+	<thead>
+		<tr><th>Name</th><th>Major</th><th>Sex</th><th>English</th><th>Japanese</th><th>Calculus</th><th>Geometry</th></tr>
+	</thead>
+	<tfoot>
+		<tr><th>Name</th><th>Major</th><th>Sex</th><th>English</th><th>Japanese</th><th>Calculus</th><th>Geometry</th></tr>
+		<tr>
+			<td colspan="7">
+				<div class="pager">
+					<nav class="left">
+						# per page:
+						<a href="#" class="current">10</a> |
+						<a href="#">25</a> |
+						<a href="#">50</a> |
+						<a href="#">100</a>
+					</nav>
+					<nav class="right">
+						<span class="prev">
+							<img src="icons/prev.png" /> Prev&nbsp;
+						</span>
+						<span class="pagecount"></span>
+						&nbsp;<span class="next">Next
+							<img src="icons/next.png" />
+						</span>
+					</nav>
+				</div>
+			</td>
+		</tr>
+	</tfoot>
+	<tbody>
+		<tr><td>Student01</td><td>Languages</td><td>male</td><td>80</td><td>70</td><td>75</td><td>80</td></tr>
+		<tr><td>Student02</td><td>Mathematics</td><td>male</td><td>90</td><td>88</td><td>100</td><td>90</td></tr>
+		<tr><td>Student03</td><td>Languages</td><td>female</td><td>85</td><td>95</td><td>80</td><td>85</td></tr>
+		<tr><td>Student04</td><td>Languages</td><td>male</td><td>60</td><td>55</td><td>100</td><td>100</td></tr>
+		<tr><td>Student05</td><td>Languages</td><td>female</td><td>68</td><td>80</td><td>95</td><td>80</td></tr>
+		<tr><td>Student06</td><td>Mathematics</td><td>male</td><td>100</td><td>99</td><td>100</td><td>90</td></tr>
+		<tr><td>Student07</td><td>Mathematics</td><td>male</td><td>85</td><td>68</td><td>90</td><td>90</td></tr>
+		<tr><td>Student08</td><td>Languages</td><td>male</td><td>100</td><td>90</td><td>90</td><td>85</td></tr>
+		<tr><td>Student09</td><td>Mathematics</td><td>male</td><td>80</td><td>50</td><td>65</td><td>75</td></tr>
+		<tr><td>Student10</td><td>Languages</td><td>male</td><td>85</td><td>100</td><td>100</td><td>90</td></tr>
+		<!-- ... -->
+		<tr><td>student999</td><td>Mathematics</td><td>male</td><td>91</td><td>93</td><td>16</td><td>35</td></tr>
+	</tbody>
+</table>
+
+ +
+ + + + diff --git a/vendor/FHC-vendor/jquery-tablesorter/beta-testing/example-widget-column-reorder.html b/vendor/FHC-vendor/jquery-tablesorter/beta-testing/example-widget-column-reorder.html new file mode 100644 index 000000000..981ea21ac --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/beta-testing/example-widget-column-reorder.html @@ -0,0 +1,192 @@ + + + + + jQuery plugin: Tablesorter 2.0 - Column reorder Widget + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

+ NOTE! +

    +
  • Column reorder - beta testing.
  • +
  • Does not yet work properly with sticky headers - reorder second table while top table sticky header is active, then scroll...
  • +
+

+ +

Javascript

+
+

+	
+ +

CSS

+
+

+	
+ +

Demo

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Student Grades
Name (0)Major (1)Sex (2)English (3)Japanese (4)Calculus (5)Geometry (6)
NameMajorSexEnglishJapaneseCalculusGeometry
Student01 (0)Languages (1)male (2)80 (3)70 (4)75 (5)80 (6)
Student02Mathematicsmale908810090
Student03Languagesfemale85958085
Student04Languagesmale6055100100
Student05Languagesfemale68809580
Student06Mathematicsmale1009910090
Student07Mathematicsmale85689090
Student08Languagesmale100909085
Student09Mathematicsmale80506575
Student10Languagesmale8510010090
Student11Languagesmale8685100100
Student12Mathematicsfemale100757085
Student13Languagesfemale1008010090
Student14Languagesfemale50455590
Student15Languagesmale953510090
Student16Languagesfemale100503070
Student17Languagesfemale801005565
Student18Mathematicsmale30495575
Student19Languagesmale68908870
Student20Mathematicsmale40454080
Student21Languagesmale5045100100
Student22Mathematicsmale1009910090
Student23Languagesfemale85808080
+ +
+ + + + + + + + + + + + + + + + + + + + + +
Account #First NameLast NameAgeTotalDiscountDiff
A43PeterParker289.9920.3%+3
A255JohnHood3319.9925.1%-7
A33ClarkKent1815.4944.2%-13
A11BruceAlmighty45153.1944%+19
A102BruceEvans56153.1923%+9
A23MikePeters225.6920.3%+2
A55LeslieKent3315.9925.1%-3
A3FrankMint4412.5944.2%-12
A21JoeThomas4515.2544%+12
A12TessEvans6613.5923%+4
A21PeterDunn122.9921.1%+2
A33HarryJones1319.4922.2%-6
A13JohnJames1613.8942.1%-13
A71NickParker4513.8944%+29
A21CharlesDunn1915.4922%+3
+
+ +
+ + +
+ + + + diff --git a/vendor/FHC-vendor/jquery-tablesorter/beta-testing/pager-custom-controls.js b/vendor/FHC-vendor/jquery-tablesorter/beta-testing/pager-custom-controls.js new file mode 100644 index 000000000..07d6beb43 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/beta-testing/pager-custom-controls.js @@ -0,0 +1,102 @@ +/*! + * custom pager controls (beta) for TableSorter 9/15/2014 (v2.17.8) - updated 3/26/2015 (v2.21.3) + initialize custom pager script BEFORE initializing tablesorter/tablesorter pager + custom pager looks like this: + 1 | 2 … 5 | 6 | 7 … 99 | 100 + _ _ _ _ adjacentSpacer + _ _ distanceSpacer + _____ ________ ends (2 default) + _________ aroundCurrent (1 default) + + */ +/*jshint browser:true, jquery:true, unused:false, loopfunc:true */ +/*global jQuery: false */ + +;(function($){ +"use strict"; + +$.tablesorter = $.tablesorter || {}; + +$.tablesorter.customPagerControls = function(settings) { + var defaults = { + table : 'table', + pager : '.pager', + pageSize : '.left a', + currentPage : '.right a', + ends : 2, // number of pages to show of either end + aroundCurrent : 1, // number of pages surrounding the current page + link : '{page}', // page element; use {page} to include the page number + currentClass : 'current', // current page class name + adjacentSpacer : ' | ', // spacer for page numbers next to each other + distanceSpacer : ' … ', // spacer for page numbers away from each other (ellipsis) + addKeyboard : true // add left/right keyboard arrows to change current page + }, + options = $.extend({}, defaults, settings), + $table = $(options.table), + $pager = $(options.pager); + + $table + .on('pagerInitialized pagerComplete', function (e, c) { + var indx, + p = c.pager ? c.pager : c, // using widget + pages = $('
'), + pageArray = [], + cur = p.page + 1, + start = cur > 1 ? (p.filteredPages - cur < options.aroundCurrent ? -(options.aroundCurrent + 1) + (p.filteredPages - cur) : -options.aroundCurrent) : 0, + end = cur < options.aroundCurrent + 1 ? options.aroundCurrent + 3 - cur : options.aroundCurrent + 1; + for (indx = start; indx < end; indx++) { + if (cur + indx >= 1 && cur + indx < p.filteredPages) { pageArray.push( cur + indx ); } + } + if (pageArray.length) { + // include first and last pages (ends) in the pagination + for (indx = 0; indx < options.ends; indx++){ + if ($.inArray(indx + 1, pageArray) === -1) { pageArray.push(indx + 1); } + if ($.inArray(p.filteredPages - indx, pageArray) === -1) { pageArray.push(p.filteredPages - indx); } + } + // sort the list + pageArray = pageArray.sort(function(a, b){ return a - b; }); + // make links and spacers + $.each(pageArray, function(indx, value){ + pages + .append( $(options.link.replace(/\{page\}/g, value)).toggleClass(options.currentClass, value === cur).attr('data-page', value) ) + .append( '' + (indx < pageArray.length - 1 && ( pageArray[ indx + 1 ] - 1 !== value ) ? options.distanceSpacer : + ( indx >= pageArray.length - 1 ? '' : options.adjacentSpacer )) + '' ); + }); + } + $pager.find('.pagecount').html(pages.html()); + }); + + // set up pager controls + $pager.find(options.pageSize).on('click', function () { + $(this) + .addClass(options.currentClass) + .siblings() + .removeClass(options.currentClass); + $table.trigger('pageSize', $(this).html()); + return false; + }).end() + .on('click', options.currentPage, function(){ + $(this) + .addClass(options.currentClass) + .siblings() + .removeClass(options.currentClass); + $table.trigger('pageSet', $(this).attr('data-page')); + return false; + }); + + // make right/left arrow keys work + if (options.addKeyboard) { + $(document).on('keydown', function(events){ + // ignore arrows inside form elements + if (/input|select|textarea/i.test(events.target.nodeName)) { return; } + if (events.which === 37) { + // left + $pager.find(options.currentPage).filter('.' + options.currentClass).prevAll(':not(span):first').click(); + } else if (events.which === 39) { + // right + $pager.find(options.currentPage).filter('.' + options.currentClass).nextAll(':not(span):first').click(); + } + }); + } +}; +})(jQuery); \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/beta-testing/widget-reorder.js b/vendor/FHC-vendor/jquery-tablesorter/beta-testing/widget-reorder.js new file mode 100644 index 000000000..1a7733fec --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/beta-testing/widget-reorder.js @@ -0,0 +1,182 @@ +/*! tablesorter column reorder - beta testing +* Requires tablesorter v2.8+ and jQuery 1.7+ +* by Rob Garrison +*/ +/*jshint browser:true, jquery:true, unused:false */ +/*global jQuery: false */ +;(function($){ + "use strict"; + +$.tablesorter.addWidget({ + id: 'reorder', + priority: 70, + options : { + reorder_axis : 'xy', // x or xy + reorder_delay : 300, + reorder_helperClass : 'tablesorter-reorder-helper', + reorder_helperBar : 'tablesorter-reorder-helper-bar', + reorder_noReorder : 'reorder-false', + reorder_blocked : 'reorder-block-left reorder-block-end', + reorder_complete : null // callback + }, + init: function(table, thisWidget, c, wo) { + var i, timer, $helper, $bar, clickOffset, + lastIndx = -1, + ts = $.tablesorter, + endIndex = -1, + startIndex = -1, + t = wo.reorder_blocked.split(' '), + noReorderLeft = t[0] || 'reorder-block-left', + noReorderLast = t[1] || 'reorder-block-end', + lastOffset = c.$headers.not('.' + noReorderLeft).first(), + offsets = c.$headers.map(function(i){ + var s, $t = $(this); + if ($t.hasClass(noReorderLeft)) { + s = lastOffset; + $t = s; + //lastOffset = $t; + } + lastOffset = $t; + return $t.offset().left; + }).get(), + len = offsets.length, + startReorder = function(e, $th){ + var p = $th.position(), + r = $th.parent().position(), + i = startIndex = $th.index(); + clickOffset = [ e.pageX - p.left, e.pageY - r.top ]; + $helper = c.$table.clone(); + $helper.find('> thead > tr:first').children('[data-column!=' + i + ']').remove(); + $helper.find('thead tr:gt(0), caption, colgroup, tbody, tfoot').remove(); + $helper + .css({ + position: 'absolute', + zIndex : 1, + left: p.left - clickOffset[0], + top: r.top - clickOffset[1], + width: $th.outerWidth() + }) + .appendTo('body') + .find('th, td').addClass(wo.reorder_helperClass); + $bar = $('
') + .css({ + position : 'absolute', + top : c.$table.find('thead').offset().top, + height : $th.closest('thead').outerHeight() + c.$table.find('tbody').height() + }) + .appendTo('body'); + positionBar(e); + lastIndx = endIndex; + }, + positionBar = function(e){ + for (i = 0; i <= len; i++) { + if ( i > 0 && e.pageX < offsets[i-1] + (offsets[i] - offsets[i-1])/2 && !c.$headers.eq(i).hasClass(noReorderLeft) ) { + endIndex = i - 1; + // endIndex = offsets.lastIndexOf( offsets[i-1] ); // lastIndexOf not supported by IE8 and older + if (endIndex >= 0 && lastIndx === endIndex) { return false; } + lastIndx = endIndex; + if (c.debug) { + console.log( endIndex === 0 ? 'target before column 0' : endIndex === len ? 'target after last column' : 'target between columns ' + startIndex + ' and ' + endIndex); + } + $bar.css('left', offsets[i-1]); + return false; + } + } + if (endIndex < 0) { + endIndex = len; + $bar.css('left', offsets[len]); + } + }, + finishReorder = function(){ + $helper.remove(); + $bar.remove(); + // finish reorder + var adj, s = startIndex, + rows = c.$table.find('tr'), + cols; + startIndex = -1; // stop mousemove updates + if ( s > -1 && endIndex > -1 && s != endIndex && s + 1 !== endIndex ) { + adj = endIndex !== 0; + if (c.debug) { + console.log( 'Inserting column ' + s + (adj ? ' after' : ' before') + ' column ' + (endIndex - adj ? 1 : 0) ); + } + rows.each(function() { + cols = $(this).children(); + cols.eq(s)[ adj ? 'insertAfter' : 'insertBefore' ]( cols.eq( endIndex - (adj ? 1 : 0) ) ); + }); + cols = []; + // stored header info needs to be modified too! + for (i = 0; i < len; i++) { + if (i === s) { continue; } + if (i === endIndex - (adj ? 1 : 0)) { + if (!adj) { cols.push(c.headerContent[s]); } + cols.push(c.headerContent[i]); + if (adj) { cols.push(c.headerContent[s]); } + } else { + cols.push(c.headerContent[i]); + } + } + c.headerContent = cols; + // cols = c.headerContent.splice(s, 1); + // c.headerContent.splice(endIndex - (adj ? 1 : 0), 0, cols); + c.$table.trigger('updateAll', [ true, wo.reorder_complete ]); + } + endIndex = -1; + }, + mdown = function(e, el){ + var $t = $(el), evt = e; + if ($t.hasClass(wo.reorder_noReorder)) { return; } + timer = setTimeout(function(){ + $t.addClass('tablesorter-reorder'); + startReorder(evt, $t); + }, wo.reorder_delay); + }; + + console.log( c.$headers.last().hasClass(noReorderLast) ); + + if ( c.$headers.last().hasClass(noReorderLast) ) { + offsets.push( offsets[ offsets.length - 1 ] ); + } else { + offsets.push( c.$table.offset().left + c.$table.outerWidth() ); + } + + c.$headers.not('.' + wo.reorder_noReorder).bind('mousedown.reorder', function(e){ + mdown(e, this); + }); + + $(document) + .bind('mousemove.reorder', function(e){ + if (startIndex !== -1){ + var c = { left : e.pageX - clickOffset[0] }; + endIndex = -1; + if (/y/.test(wo.reorder_axis)) { + c.top = e.pageY - clickOffset[1]; + } + $helper.css(c); + positionBar(e); + } + }) + .add( c.$headers ) + .bind('mouseup.reorder', function(){ + clearTimeout(timer); + if (startIndex !== -1 && endIndex !== -1){ + finishReorder(); + } else { + startIndex = -1; + } + }); + + // has sticky headers? + c.$table.bind('stickyHeadersInit', function(){ + wo.$sticky.find('thead').children().not('.' + wo.reorder_noReorder).bind('mousedown.reorder', function(e){ + mdown(e, this); + }); + }); + + } +}); + +// add mouse coordinates +$x = $('#main h1:last'); $(document).mousemove(function(e){ $x.html( e.pageX ); }); + +})(jQuery); \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/bower.json b/vendor/FHC-vendor/jquery-tablesorter/bower.json new file mode 100644 index 000000000..6862657f1 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/bower.json @@ -0,0 +1,28 @@ +{ + "name": "tablesorter", + "description": "tablesorter (FORK) is a jQuery plugin for turning a standard HTML table with THEAD and TBODY tags into a sortable table without page refreshes. tablesorter can successfully parse and sort many types of data including linked data in a cell.", + "dependencies": { + "jquery": ">=1.2.6" + }, + "main": [ + "dist/js/jquery.tablesorter.combined.js", + "dist/css/theme.blue.min.css" + ], + "ignore": [ + "/node_modules", + "/bower_components", + "/.git", + "/addons", + "/beta-testing", + "/css", + "/docs", + "/js", + "/testing", + "/Gruntfile.js", + "/package.json", + "/*.txt", + "/*.md", + "/*.html", + "/tablesorter.jquery.json" + ] +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/changelog.txt b/vendor/FHC-vendor/jquery-tablesorter/changelog.txt new file mode 100644 index 000000000..f8f1cf0e9 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/changelog.txt @@ -0,0 +1,2 @@ +Change log moved to the wiki documentation pages: +https://github.com/Mottie/tablesorter/wiki/Changes \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/bootstrap.less b/vendor/FHC-vendor/jquery-tablesorter/css/bootstrap.less new file mode 100644 index 000000000..1d712ca2f --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/bootstrap.less @@ -0,0 +1,322 @@ +/* Tablesorter Custom Bootstrap LESS Theme by Rob Garrison + +To create your own theme, modify the code below and run it through +a LESS compiler, like this one: http://leafo.net/lessphp/editor.html +or download less.js from http://lesscss.org/ + +Test out these custom less files live + Basic Theme : http://codepen.io/Mottie/pen/eqBbn + Bootstrap : http://codepen.io/Mottie/pen/Ltzpi + Metro Style : http://codepen.io/Mottie/pen/gCslk + +*/ + +/*** theme ***/ +@theme : tablesorter-bootstrap; + +/*** fonts ***/ +@tableHeaderFont : 14px bold Arial, Sans-serif; +@tableBodyFont : 14px "Helvetica Neue", Helvetica, Arial, sans-serif; + +/*** color definitions ***/ +/* for best results, only change the hue (240), + leave the saturation (60%) and luminosity (80%) alone + pick the color from here: http://hslpicker.com/#99E699 */ +@headerBackground : hsl(240, 60%, 80%); +@borderAndBackground : #cdcdcd; +@overallBorder : @borderAndBackground 1px solid; +@headerTextColor : #000; + +@bodyBackground : #fff; +@bodyTextColor : #000; + +@headerAsc : darken(spin(@headerBackground, 5), 10%); /* darken(@headerBackground, 10%); */ +@headerDesc : lighten(spin(@headerBackground, -5), 10%); /* desaturate(@headerAsc, 5%); */ + +@captionBackground : #fff; /* it might be best to match the document body background color here */ +@errorBackground : #e6bf99; /* ajax error message (added to thead) */ + +@filterCellBackground : #eee; +@filterElementTextColor: #333; +@filterElementBkgd : #fff; +@filterElementBorder : 1px solid #bbb; +@filterTransitionTime : 0.1s; +@filterRowHiddenHeight : 4px; /* becomes height using padding (so it's divided by 2) */ + +@overallPadding : 4px; +/* 20px should be slightly wider than the icon width to avoid overlap */ +@headerPadding : 4px 20px 4px 4px; +@headerMargin : 0 0 18px; + +/* url(icons/loading.gif); */ +@processingIcon : url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs='); + +/* zebra striping */ +.allRows { + background-color: @bodyBackground; + color: @bodyTextColor; +} +.evenRows { + background-color: lighten(@headerBackground, 35%); +} +.oddRows { + background-color: lighten(@headerBackground, 18%); +} + +/* hovered rows */ +.oddHovered { + background-color: desaturate(@headerBackground, 60%); +} +.evenHovered { + background-color: lighten( desaturate(@headerBackground, 60%), 10% ); +} + +/* Columns widget */ +@primaryOdd : spin(@headerBackground, 10); /* saturate( darken( desaturate(@headerBackground, 10%), 10% ), 30%); */ +@primaryEven : lighten( @primaryOdd, 10% ); +@secondaryOdd : @primaryEven; +@secondaryEven : lighten( @primaryEven, 5% ); +@tertiaryOdd : @secondaryEven; +@tertiaryEven : lighten( @secondaryEven, 5% ); + +/* Filter widget transition */ +.filterWidgetTransition { + -webkit-transition: line-height @filterTransitionTime ease; + -moz-transition: line-height @filterTransitionTime ease; + -o-transition: line-height @filterTransitionTime ease; + transition: line-height @filterTransitionTime ease; +} + +/*** icon block ***/ +.iconPosition { + font-size: 11px; + position: absolute; + right: 2px; + top: 50%; + margin-top: -7px; /* half the icon height; older IE doesn't like this */ + width: 14px; + height: 14px; + background-repeat: no-repeat; + line-height: 14px; +} + +/* black */ +@unsortedBlack : url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAMAAADOvxanAAAAVFBMVEUAAABCQkJZWVkZGRnJyckgICAZGRkZGRn8/PweHh4dHR0aGhoaGhpUVFQbGxvQ0NDc3NxMTExSUlIbGxvr6+s4ODhKSkogICAtLS00NDQzMzMnJydSEPrQAAAAGHRSTlMA1ssZRLgdAQbDyisqsZo8QdXUq0r9xPepSRwiAAAAX0lEQVQI13XHSQKAIAwEwQAKxn13Ev7/T2Pu9qmarJKPXIicI4PH4hxaKNrhm2S8bJK5h4YzKHrzJNtK6yYT/TdXzpS5zuYg4MSQYF6i4IHExdw1UVRi05HPrrvT53a+qyMFC9t04gcAAAAASUVORK5CYII=); + +/* white */ +@unsortedWhite : url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOBAMAAAALT/umAAAAKlBMVEUAAAD///////////////////////////////////////////////////+Gu8ovAAAADXRSTlMA4EXKBtQqvR0+sxmalc142gAAAFdJREFUCNdjYGDoamAAAjZbMxCVfvd6AgMDd+3du9UMDKx3hWSvMjBwXZww8RYDGuC53NB8h4GB8a617UUGBs7Yu3cjGRhYVO9eVQFKOskKOQApFmUgBwBZ+xXRTttNdAAAAABJRU5ErkJggg==); + +/* automatically choose the correct arrow/text color */ +.headerText (@a) when (lightness(@a) >= 50%) { + color: @headerTextColor; +} +.headerText (@a) when (lightness(@a) < 50%) { + color: lighten(@headerTextColor, 90%); +} +.unsorted (@a) when (lightness(@a) >= 50%) { + background-image: @unsortedBlack; + color: @headerTextColor; +} +.unsorted (@a) when (lightness(@a) < 50%) { + background-image: @unsortedWhite; + color: lighten(@headerTextColor, 90%); +} + +/* variable theme name - requires less.js 1.3+; + or just replace (!".@{theme}") with the contents of @theme +*/ +.@{theme} { + font: @tableBodyFont; + background-color: @borderAndBackground; + width: 100%; + + /* style th's outside of the thead */ + th, thead td { + font: @tableHeaderFont; + font-weight: bold; + background-color: @headerBackground; + .headerText(@headerBackground); + border-collapse: collapse; + margin: @headerMargin; + padding: @overallPadding; + } + + tbody td, tfoot th, tfoot td { + padding: @overallPadding; + vertical-align: top; + } + + /* style header */ + .tablesorter-header { + cursor: pointer; + } + + .tablesorter-header-inner { + position: relative; + padding: @headerPadding; + } + + /* bootstrap uses for icons */ + .tablesorter-header-inner i.tablesorter-icon { + .iconPosition + } + + .tablesorter-header.sorter-false { + background-image: none; + cursor: default; + + } + + .tablesorter-headerAsc { + background-color: @headerAsc; + } + + .tablesorter-headerDesc { + background-color: @headerDesc; + } + + .bootstrap-icon-unsorted { + .unsorted(@headerBackground); + } + + + /* tfoot */ + tfoot .tablesorter-headerAsc, + tfoot .tablesorter-headerDesc { + /* remove sort arrows from footer */ + background-image: none; + } + + /* optional disabled input styling */ + .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; + } + + /* body */ + tbody { + + td { + .allRows; + padding: @overallPadding; + vertical-align: top; + } + + /* Zebra Widget - row alternating colors */ + tr.odd > td { + .oddRows; + } + tr.even > td { + .evenRows; + } + + } + + /* hovered row colors + you'll need to add additional lines for + rows with more than 2 child rows + */ + tbody > tr.hover > td, + tbody > tr:hover > td, + tbody > tr:hover + tr.tablesorter-childRow > td, + tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td, + tbody > tr.even.hover > td, + tbody > tr.even:hover > td, + tbody > tr.even:hover + tr.tablesorter-childRow > td, + tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + .evenHovered; + } + tbody > tr.odd.hover > td, + tbody > tr.odd:hover > td, + tbody > tr.odd:hover + tr.tablesorter-childRow > td, + tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + .oddHovered; + } + + /* table processing indicator - indeterminate spinner */ + .tablesorter-processing { + background-image: @processingIcon; + background-position: center center; + background-repeat: no-repeat; + } + + /* Column Widget - column sort colors */ + tr.odd td.primary { + background-color: @primaryOdd; + } + td.primary, tr.even td.primary { + background-color: @primaryEven; + } + tr.odd td.secondary { + background-color: @secondaryOdd; + } + td.secondary, tr.even td.secondary { + background-color: @secondaryEven; + } + tr.odd td.tertiary { + background-color: @tertiaryOdd; + } + td.tertiary, tr.even td.tertiary { + background-color: @tertiaryEven; + } + + /* caption (non-theme matching) */ + caption { + background-color: @captionBackground ; + } + + /* filter widget */ + .tablesorter-filter-row input, + .tablesorter-filter-row select{ + width: 98%; + margin: 0; + padding: @overallPadding; + color: @filterElementTextColor; + background-color: @filterElementBkgd; + border: @filterElementBorder; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + .filterWidgetTransition; + } + .tablesorter-filter-row { + background-color: @filterCellBackground; + } + .tablesorter-filter-row td { + text-align: center; + background-color: @filterCellBackground; + line-height: normal; + text-align: center; /* center the input */ + .filterWidgetTransition; + } + /* hidden filter row */ + .tablesorter-filter-row.hideme td { + padding: @filterRowHiddenHeight / 2; + margin: 0; + line-height: 0; + cursor: pointer; + } + .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); + } + /* rows hidden by filtering (needed for child rows) */ + .filtered { + display: none; + } + + /* ajax error row */ + .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: @errorBackground; + } + +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/dragtable.mod.css b/vendor/FHC-vendor/jquery-tablesorter/css/dragtable.mod.css new file mode 100644 index 000000000..e8b59d39e --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/dragtable.mod.css @@ -0,0 +1,64 @@ +/* + * dragtable + * @Version 2.0.14 MOD + * default css + */ +.dragtable-sortable { + list-style-type: none; + margin: 0; + padding: 0; + -moz-user-select: none; + z-index: 10; +} +.dragtable-sortable li { + margin: 0; + padding: 0; + float: left; + font-size: 1em; +} +.dragtable-sortable table { + margin-top: 0; +} +.dragtable-sortable th, .dragtable-sortable td { + border-left: 0px; +} +.dragtable-sortable li:first-child th, .dragtable-sortable li:first-child td { + border-left: 1px solid #CCC; +} +.dragtable-handle-selected { + /* table-handle class while actively dragging a column */ +} +.ui-sortable-helper { + opacity: 0.7; + filter: alpha(opacity=70); +} +.ui-sortable-placeholder { + -moz-box-shadow: 4px 5px 4px rgba(0,0,0,0.2) inset; + -webkit-box-shadow: 4px 5px 4px rgba(0,0,0,0.2) inset; + box-shadow: 4px 5px 4px rgba(0,0,0,0.2) inset; + border-bottom: 1px solid rgba(0,0,0,0.2); + border-top: 1px solid rgba(0,0,0,0.2); + visibility: visible !important; + /* change the background color here to match the tablesorter theme */ + background: #EFEFEF; +} +.ui-sortable-placeholder * { + opacity: 0.0; + visibility: hidden; +} +.table-handle, .table-handle-disabled { + /* background-image: url(images/dragtable-handle.png); */ + /* background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAANAQMAAAC5Li2yAAAABlBMVEUAAAAzMzPI8eYgAAAAAnRSTlMAzORBQ6MAAAAOSURBVAjXYwABByyYAQAQWgFBLN2RnwAAAABJRU5ErkJggg=='); */ + background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyIiBoZWlnaHQ9IjEzIj48cmVjdCBzdHlsZT0iZmlsbDojMzMzO2ZpbGwtb3BhY2l0eTouODsiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHg9IjEiIHk9IjIiLz4JPHJlY3Qgc3R5bGU9ImZpbGw6IzMzMztmaWxsLW9wYWNpdHk6Ljg7IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4PSIxIiB5PSI0Ii8+CTxyZWN0IHN0eWxlPSJmaWxsOiMzMzM7ZmlsbC1vcGFjaXR5Oi44OyIgd2lkdGg9IjEiIGhlaWdodD0iMSIgeD0iMSIgeT0iNiIvPjxyZWN0IHN0eWxlPSJmaWxsOiMzMzM7ZmlsbC1vcGFjaXR5Oi44OyIgd2lkdGg9IjEiIGhlaWdodD0iMSIgeD0iMSIgeT0iOCIvPjxyZWN0IHN0eWxlPSJmaWxsOiMzMzM7ZmlsbC1vcGFjaXR5Oi44OyIgd2lkdGg9IjEiIGhlaWdodD0iMSIgeD0iMSIgeT0iMTAiLz48L3N2Zz4=); + background-repeat: repeat-x; + height: 13px; + margin: 0 1px; + cursor: move; +} +.table-handle-disabled { + opacity: 0; + cursor: not-allowed; +} +.dragtable-sortable table { + margin-bottom: 0; +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/filter.formatter.css b/vendor/FHC-vendor/jquery-tablesorter/css/filter.formatter.css new file mode 100644 index 000000000..cb5dde1f0 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/filter.formatter.css @@ -0,0 +1,183 @@ +/**** Filter Formatter Elements ****/ +.tablesorter .tablesorter-filter-row td { + text-align: center; + font-size: 0.9em; + font-weight: normal; +} + +/**** Sliders ****/ +/* shrink the sliders to look nicer inside of a table cell */ +.tablesorter .ui-slider, .tablesorter input.range { + width: 90%; + margin: 2px auto 2px auto; /* add enough top margin so the tooltips will fit */ + font-size: 0.8em; +} +.tablesorter .ui-slider { + top: 12px; +} +.tablesorter .ui-slider .ui-slider-handle { + width: 0.9em; + height: 0.9em; +} +.tablesorter .ui-datepicker { + font-size: 0.8em; +} +.tablesorter .ui-slider-horizontal { + height: 0.5em; +} +/* Add tooltips to slider handles */ +.tablesorter .value-popup:after { + content : attr(data-value); + position: absolute; + bottom: 14px; + left: -7px; + min-width: 18px; + height: 12px; + background-color: #444; + background-image: -webkit-gradient(linear, left top, left bottom, from(#444444), to(#999999)); + background-image: -webkit-linear-gradient(top, #444, #999); + background-image: -moz-linear-gradient(top, #444, #999); + background-image: -o-linear-gradient(top, #444, #999); + background-image: linear-gradient(to bottom, #444, #999); + -webkit-border-radius: 3px; + border-radius: 3px; + -webkit-background-clip: padding-box; background-clip: padding-box; + -webkit-box-shadow: 0px 0px 4px 0px #777; + box-shadow: 0px 0px 4px 0px #777; + border: #444 1px solid; + color: #fff; + font: 1em/1.1em Arial, Sans-Serif; + padding: 1px; + text-align: center; +} +.tablesorter .value-popup:before { + content: ""; + position: absolute; + width: 0; + height: 0; + border-top: 8px solid #777; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + top: -8px; + left: 50%; + margin-left: -8px; + margin-top: -1px; +} + +/**** Date Picker ****/ +.tablesorter .dateFrom, .tablesorter .dateTo { + width: 80px; + margin: 2px 5px; +} + +/**** Color Picker/HTML5Number Toggle button ****/ +.tablesorter .button { + width: 14px; + height: 14px; + background: #fcfff4; + background: -webkit-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); + background: -moz-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); + background: -o-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); + background: -ms-linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); + background: linear-gradient(top, #fcfff4 0%, #dfe5d7 40%, #b3bead 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfff4', endColorstr='#b3bead', GradientType=0 ); + margin: 1px 5px 1px 1px; + -webkit-border-radius: 25px; + -moz-border-radius: 25px; + border-radius: 25px; + -webkit-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + -moz-box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + box-shadow: inset 0px 1px 1px white, 0px 1px 3px rgba(0,0,0,0.5); + position: relative; + top: 3px; + display: inline-block; +} + +.tablesorter .button label { + cursor: pointer; + position: absolute; + width: 10px; + height: 10px; + -webkit-border-radius: 25px; + -moz-border-radius: 25px; + border-radius: 25px; + left: 2px; + top: 2px; + -webkit-box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,1); + -moz-box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,1); + box-shadow: inset 0px 1px 1px rgba(0,0,0,0.5), 0px 1px 0px rgba(255,255,255,1); + background: #45484d; + background: -webkit-linear-gradient(top, #222 0%, #45484d 100%); + background: -moz-linear-gradient(top, #222 0%, #45484d 100%); + background: -o-linear-gradient(top, #222 0%, #45484d 100%); + background: -ms-linear-gradient(top, #222 0%, #45484d 100%); + background: linear-gradient(top, #222 0%, #45484d 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#222', endColorstr='#45484d', GradientType=0 ); +} + +.tablesorter .button label:after { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + opacity: 0; + content: ''; + position: absolute; + width: 8px; + height: 8px; + background: #55f; + background: -webkit-linear-gradient(top, #aaf 0%, #55f 100%); + background: -moz-linear-gradient(top, #aaf 0%, #55f 100%); + background: -o-linear-gradient(top, #aaf 0%, #55f 100%); + background: -ms-linear-gradient(top, #aaf 0%, #55f 100%); + background: linear-gradient(top, #aaf 0%, #55f 100%); + -webkit-border-radius: 25px; + -moz-border-radius: 25px; + border-radius: 25px; + top: 1px; + left: 1px; + -webkit-box-shadow: inset 0px 1px 1px #fff, 0px 1px 3px rgba(0,0,0,0.5); + -moz-box-shadow: inset 0px 1px 1px #fff, 0px 1px 3px rgba(0,0,0,0.5); + box-shadow: inset 0px 1px 1px #fff, 0px 1px 3px rgba(0,0,0,0.5); +} + +.tablesorter .button label:hover::after { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; + filter: alpha(opacity=30); + opacity: 0.3; +} + +.tablesorter .button input[type=checkbox] { + visibility: hidden; +} + +.tablesorter .button input[type=checkbox]:checked + label:after { + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + filter: alpha(opacity=100); + opacity: 1; +} + +.tablesorter .colorpicker { + width: 30px; + height: 18px; +} +.tablesorter .ui-spinner-input { + width: 100px; + height: 18px; +} +.tablesorter .currentColor, .tablesorter .ui-spinner { + position: relative; +} +.tablesorter input.number { + position: relative; +} + +/* hide filter row */ +.tablesorter .tablesorter-filter-row.hideme td * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/black-asc.gif b/vendor/FHC-vendor/jquery-tablesorter/css/images/black-asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..730533fa3570dd4805cec70fe2630e85a2e1b863 GIT binary patch literal 48 zcmZ?wbhEHbWM^PuXkcJa);0M5|G(l-7DfgJMg|=QAOOiQFtPU}a;`qj$IW0300PSi A(EtDd literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/black-desc.gif b/vendor/FHC-vendor/jquery-tablesorter/css/images/black-desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c3b61020bb4d707e41e94fbf2b6ebe5d0c87f6b GIT binary patch literal 49 zcmZ?wbhEHbWM^PuXkcJa);0M5|G(l-7DfgJMg|=QAOOiQFmbf-H%eylMrtrv0{{qN B3331c literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/black-unsorted.gif b/vendor/FHC-vendor/jquery-tablesorter/css/images/black-unsorted.gif new file mode 100644 index 0000000000000000000000000000000000000000..5647f658329230706ec09c5e3c24fae39d225a04 GIT binary patch literal 54 zcmZ?wbhEHbWM|-HXkcJa);0M5|G(l-7DfgJMg|=QAOOiQF!A;za;`qjH@QXcLR*>^ GgEatAw+#UR literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/bootstrap-black-unsorted.png b/vendor/FHC-vendor/jquery-tablesorter/css/images/bootstrap-black-unsorted.png new file mode 100644 index 0000000000000000000000000000000000000000..4e161a65ec0d89596124ebd5eeb18014e900fc5f GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^+(697!3-qN?H5}Pq(TCGLR^8glao_qWTd2|7*RL%sEWEtDfVy;b zbxll6jE#-e)zyOpeq8{XD^U{U7tC<&w4}=pSw^+cIEHXsFFo$b)S$q_a*%=RSZ%q`zyJQp@4l^^wPsR(OvfDM=HriKqBL$joSm{K zXVT90He-#d&nmaQUaJZJH4i^GW#_qP3J;DgTe~DWM4fZ4GGK literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/bootstrap-white-unsorted.png b/vendor/FHC-vendor/jquery-tablesorter/css/images/bootstrap-white-unsorted.png new file mode 100644 index 0000000000000000000000000000000000000000..fb227a150ec672948d40c0989ab4654957d4074c GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^+(697!VF^h|6T^9v;urWT!Hj|;y~N(Q~E&Fyd^?&UREc$ gEEzP#QWe-4B7cis^t&#$e5Qt)Q)VVuxK2V0i)78&qol`;+0PtZJpa1{> literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/dragtable-handle.svg b/vendor/FHC-vendor/jquery-tablesorter/css/images/dragtable-handle.svg new file mode 100644 index 000000000..041ec1ded --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/images/dragtable-handle.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/dropbox-asc-hovered.png b/vendor/FHC-vendor/jquery-tablesorter/css/images/dropbox-asc-hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..bc45223f1dec5faab874457b501249849a5ad67a GIT binary patch literal 275 zcmV+u0qp*XP)N!0YroNDAvUkG#GGj^Q5tJa56A6voL^Y5FaECSH#ZAHJO8p z2Pn@9bO0j*hz9XN;vjkEyC0cUxcLQpK-MrZGeaB-RLI1{#PIL`Ke-j_w=ZQRCY%5Q Z3;^4XF8Gf^mEZsX002ovPDHLkV1l>1alZfn literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/dropbox-asc.png b/vendor/FHC-vendor/jquery-tablesorter/css/images/dropbox-asc.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6ee15054013562d87105ebf9a5915b093b745a GIT binary patch literal 278 zcmV+x0qOpUP)c1cZKk`S9+`+ZU=! zioM^Vn8eP-+rq^!EX2hx!~mi}d=%^AChRcaJ^%m!07*qoM6N<$f|sClJ^%m! literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/dropbox-desc-hovered.png b/vendor/FHC-vendor/jquery-tablesorter/css/images/dropbox-desc-hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..4930942048212f647f27b8c8f06ec2737a7ee016 GIT binary patch literal 273 zcmV+s0q*{ZP)o985veE zvmi|S`{ysi@Ba*GAT}e+O=VNoUSVeZrwuXEnMIi9w^M{(hzka;~ zs$c-oAU;eEu4qcM&O4wR>i_=v1#(M0h!6K2vTwe9d^_vk-@kG{zI>R)z@PvZXCx+^ b00ImE*WX@&i7{I-00000NkvXXu0mjf>Ct&J literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/green-asc.gif b/vendor/FHC-vendor/jquery-tablesorter/css/images/green-asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..4cfba09507af83ef6db36d4eb1adcc75e2fa3954 GIT binary patch literal 283 zcmZ?wbhEHb6krfwxXQr5=gT7y!8hS*-@He2=HH*IutrK|hPYrXpFlXT@*Y{GZ8Ea6 zB&7Srq|Ns9CGysY}Sr{1@lo@nDW`q31z-Dn^Vu6Q_RR4)3 zMJIjoW+}V79ogbzu%PkNAq^J`MW&$784_ZXj<_d$31JXmQ7TxVVRd0o-FbO7Mh0sD Dr2|2x literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/green-desc.gif b/vendor/FHC-vendor/jquery-tablesorter/css/images/green-desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f8817650dc07236f0f884cb826413ceeba2e1e6 GIT binary patch literal 283 zcmZ?wbhEHb6krfwxXQo~IxW~F#F*EGOR7th$B9dMkF3HfDVZtaqWOX%nF5NNWaO7g zNi>LXTXJgeQ#CxGt+QN1d!f4NAp^5R2DV2moQ~RRR;ziRaI=|X5pc>o=#+2pY5&mE z0deOdORpBT-fGI6k{(+YqvWFCp6vSn|9=K*1I3>#j0_Aa3_2i#L4IOjvv8PH;GrYc ze_~0|NtGs{wyw0pFDvXAk~<7EJT#{Buvumqi1d59ND9cv2rT2+m@!G`+n&1f?re+< F)&TJsK)V0{ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/green-header.gif b/vendor/FHC-vendor/jquery-tablesorter/css/images/green-header.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc746b70a390d3c1e60dd0839aafaefdb56ffa5c GIT binary patch literal 513 zcmd7P%Sr-a7zW^93c{#X1sxV;wFw=D$Ppmun&SRq#z*(T68O2gBur(hZ)a0 zI!B!uXPm=7(#q7@)D`rtU*6}1FB}PZymuyW4_E+*I)P(2ga(G;49n6CL(w!zQB9JB z2GpUh>6)skimG&#uH2O+SrR)UFYsK8({)YLRE}dwve{@51W~Wms?};GlS!x3D2jdv zJkPh=?N+PB4N`0&pU>ksmdoX`*=*(~)$8>P!+;R#-*u|0D2go0k|cFH9Z?ho;ZF_A zFbqx86h)B(xH+Ilc733a_)4W*E|*HBVzF2#6mT5>4Wg-3Dw$07`+e{a&hj~K0^kPN zhFgX|0TZ_mR;vv`?2c!1?A+A!jB9J#y|cVxSzYr7f(P>p$BRp$@afrD wG=BLW--tyo&etR1lcU4ne!%bB^X$5}T+U6$OXBqjaX4LWZ!i?Qx_$({FRQBh`v3p{ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/green-unsorted.gif b/vendor/FHC-vendor/jquery-tablesorter/css/images/green-unsorted.gif new file mode 100644 index 0000000000000000000000000000000000000000..0afe2c021cc7dccbb3af311f09496b51864737ca GIT binary patch literal 520 zcmZ?wbhEHb6krfwc*elM=gT7y!52C$*d)Yw!qvWckLJw3KbO~qOJR+a%nWgXc) zK7nvv9w#p4J+eyMWE56O$QVTsmjzy=%5g&1Q~8z$x#bQ@+8c{X>D9u@ zYh|ssn)>hdWKKzsEsIfdQE*Ro{r~?z!;k`sKUo+V7+e{2K&}SG2?Kj-gKJZBOKV$` zetWy9jzd?AvYeU?Yrm_iFo%?Z9b1>KmHq)$ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/ice-asc.gif b/vendor/FHC-vendor/jquery-tablesorter/css/images/ice-asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..0961d9aafb17fa754d4ce5048c638cfb4db3b40d GIT binary patch literal 285 zcmZ?wbhEHbjG ze=B$H7M`M=JO$f%3b*s*Z{sc5&0D;aw{XXQhW`vy1&Tje7#SE;8FWCVg8an5W_4iF z1{Eo(cIAK<7GG+tB)KLZ*_oj=x#Q#Jg8@4IZOsRDX3rEjc`?91@5CYJhLs*uIGBu; N3@oNIq&hNK0{}6xMqB^@ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/ice-desc.gif b/vendor/FHC-vendor/jquery-tablesorter/css/images/ice-desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..0330fccaabc2e17a7e67f4962aa4f89c8557ba4f GIT binary patch literal 285 zcmZ?wbhEHb)%wYAO#uhf0Eoc^7;0*Tg1?=JT*+b^AM=xTJT*wiGf)f^f3h$#FlaL9 zfJ_4UiGj`Pz!Za0DXI2l=U-U3bOy=t3%f|=8669F*)h{#e}bBO^1=|6PPRi8jV^NB W%#AMt3|Lq{BnogWXNY%Xum%8lS4B$z literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/ice-unsorted.gif b/vendor/FHC-vendor/jquery-tablesorter/css/images/ice-unsorted.gif new file mode 100644 index 0000000000000000000000000000000000000000..c1afde558ea67f6f47148bb4e25f39abafd87799 GIT binary patch literal 180 zcmV;l089TzNk%w1VGIBa0K@xc>nEA^8LW0018VEC2ui01N;O000Fs;3t0EXpUQkoug-cRK;f37(J%e iole94K-NTZIuJ|{#s~pmEfk+Z0GKccf}g=J1OPj7d^(%} literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/metro-black-asc.png b/vendor/FHC-vendor/jquery-tablesorter/css/images/metro-black-asc.png new file mode 100644 index 0000000000000000000000000000000000000000..f7a781be17147df66dfad715f1a977b148fd1153 GIT binary patch literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eK!VDxY_&1vXDa8Pv5LY0LALL&2I0#h1RTAVE z%wWu|6?cDuf+*XOEM^0sXr!l$V+hA}-7~sE4h$l$4~-?Rm@@@l>{N*qQH@MuUvp6C zPs?_%_h)|`vVF@G*#BDZenOR(_Zq8cwyV-krlwQVQ$FtbV`gaCncnKA!t6Kk+IbhR dGl35-$=XTsix@`i@H_)@oTsaw%Q~loCIIowIb;9; literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/metro-black-desc.png b/vendor/FHC-vendor/jquery-tablesorter/css/images/metro-black-desc.png new file mode 100644 index 0000000000000000000000000000000000000000..ef5f48e07e52c6608e913fda2aa724c3eda3cecd GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eK!VDxY_&1vXDct~{5LX~gJUF;O!w#sLuO!GX zn88R#j+05)@57y~)3P!xeeTBsWnw&C978y+CnqE%cqcG0x(f=NT%{qxuw(`+D{n){ zq6G^in3=m31S||#8Z|=MoCQ?RFtGl<$9OQiO+#Sol*ZJ1yUX=uB_wq2?agNMGTK|c loFORWyUdzt-x-*h87{7oXg6#sMkxrPKgI|jHK z=@~FHGB7YG{*!VpN=+O)ufdp~4Hg(Gr$-m$6$)@UVMj zKlcFIf@zKk$Q-{OMFr^=p4}Usb-5He1%@OTN-8AyxJFB@sFB%PdjD;r1bc(Rb%{r9 z&XSu{RkVb#8Dz$>%Sc)Kl;epBXQqVdv$ZD6@O_c=`{?PEIAe8z%m=PBoA=5bTcOPq z`BwZ7WAkBtqm?OA^Y^o0GYaUpBvtKGMr{+{%n6Hc?Ow*&s>s7)=+d4jBe=?~X~RW% z=A@w5&$jXg7CKV>Czcdh`e5~&5y!3~b#1TbDIy;vKKnHCsFfW~h)D{W(%Q09E+f)O z^ZY3X0cN?EHu8tnz~%%^!fFiAISPj+Sc*R`dA{e?JOjz&G7l8>oVLw96~1PXArBk3 zNO9us4W{3xGBz4);OyKzKUdQWt2sdD-1+x`Q}E`T(AZgw?`{gpL$+T8S zx1$Ck6B1@`W8`Hy^>n-v5k z3^p`qu(vq~sGeeA43P7%jc8xIK*3{w=Yj>s6O!06nI)M`Sh55ef+w))8BS!k1Dea= M>FVdQ&MBb@0IrQR`v3p{ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/metro-white-asc.png b/vendor/FHC-vendor/jquery-tablesorter/css/images/metro-white-asc.png new file mode 100644 index 0000000000000000000000000000000000000000..63327188b8fc240895c3e02d2e02e64e49e297c4 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eK!VDxY_&1vXDY*cj5LY1m4mYstac=>t;4BI9 z3uZ9p)Dn$*y+GkdYyN(qV5FyuV+hA}-7{#x{0(+XRRizpY<|VNa8}!`%^RxY>Xy%Fx>D?*J&AFu$MbY0 f)wDB(7a8Qwbqb|%)xLTMw1mOa)z4*}Q$iB}B+^)A literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/metro-white-desc.png b/vendor/FHC-vendor/jquery-tablesorter/css/images/metro-white-desc.png new file mode 100644 index 0000000000000000000000000000000000000000..ca7c363e34009bdf9f61bfea526e410a9ecddc49 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eK!VDxY_&1vXDfIxK5LY1mjtC&A#&`*+l&2)f zFPOndM~;(8IMeUNw4Hf3%JYHZF`h1tAsp9}6A}`<6BroX1qDv7(hy--GJ}iShLSD9Mo*f5ZF4kG4X`v&>jX)S3j3^P6zuy4FF$-3-15` literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/images/white-unsorted.gif b/vendor/FHC-vendor/jquery-tablesorter/css/images/white-unsorted.gif new file mode 100644 index 0000000000000000000000000000000000000000..9bfc3459c766d019f057f0557b0abf21319ff46e GIT binary patch literal 54 zcmZ?wbhEHbWM|-HXkcLY4+e@qSr{1@7#VaJfB+=Jz{J~=$hrD7-{cm(3vFpy4Aua( COb>nl literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/metro.less b/vendor/FHC-vendor/jquery-tablesorter/css/metro.less new file mode 100644 index 000000000..62b929264 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/metro.less @@ -0,0 +1,357 @@ +/* Tablesorter Custom Metro LESS Theme by Rob Garrison + +To create your own theme, modify the code below and run it through +a LESS compiler, like this one: http://leafo.net/lessphp/editor.html +or download less.js from http://lesscss.org/ + +Test out these custom less files live + Basic Theme : http://codepen.io/Mottie/pen/eqBbn + Bootstrap : http://codepen.io/Mottie/pen/Ltzpi + Metro Style : http://codepen.io/Mottie/pen/gCslk + +*/ + +/*** theme ***/ +@theme : tablesorter-metro; + +/*** fonts ***/ +@tableHeaderFont : 14px 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; +@tableBodyFont : 14px 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + +/*** color definitions ***/ +/* for best results, only change the hue (120), + leave the saturation (60%) and luminosity (75%) alone + pick the color from here: http://hslpicker.com/#825a2b + + Inspired by http://www.jtable.org/ metro themes: + Blue: hsl(212, 86%, 35%) + Brown hsl(32, 50%, 30%) + Crimson hsl(0, 100%, 38%) + Dark Grey hsl(0, 0%, 27%) + Dark Orange hsl(13, 70%, 51%) + Green hsl(120, 100%, 32%) + Light Gray hsl(0, 0%, 44%) + Pink hsl(297, 100%, 33%) + Purple hsl(257, 51%, 48%) + Red hsl(5, 100%, 40%) + + */ +@headerBackground : hsl(32, 50%, 30%); +@borderAndBackground : #cdcdcd; +@headerTextColor : #eee; + +@bodyBackground : #fff; +@bodyTextColor : #000; + +@captionBackground : #fff; /* it might be best to match the document body background color here */ +@errorBackground : #e6bf99; /* ajax error message (added to thead) */ + +@filterCellBackground : #eee; +@filterElementTextColor: #333; +@filterElementBkgd : #fff; +@filterElementBorder : 1px solid #bbb; +@filterTransitionTime : 0.1s; +@filterRowHiddenHeight : 4px; /* becomes height using padding (so it's divided by 2) */ + +@overallPadding : 4px; +/* 20px should be slightly wider than the icon width to avoid overlap */ +@headerPadding : 4px 20px 4px 4px; + +/* url(icons/loading.gif); */ +@processingIcon : url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///1VVVdbW1oCAgFVVVZaWlqurq7a2tiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA=='); + +/* zebra striping */ +.allRows { + background-color: @bodyBackground; + color: @bodyTextColor; +} +.evenRows { + background-color: lighten( desaturate(@headerBackground, 80%), 70%); + color: @bodyTextColor; +} +.oddRows { + background-color: lighten( desaturate(@headerBackground, 80%), 50%); +} + +/* hovered rows */ +.oddHovered { + background-color: lighten( desaturate(@headerBackground, 50%), 40%); + color: @bodyTextColor; +} +.evenHovered { + background-color: lighten( desaturate(@headerBackground, 50%), 30%); + color: @bodyTextColor; +} + +/* Columns widget */ +@primaryOdd : lighten( spin(@headerBackground, 10), 40%); +@primaryEven : lighten( @primaryOdd, 8% ); +@secondaryOdd : @primaryEven; +@secondaryEven : lighten( @primaryEven, 8% ); +@tertiaryOdd : @secondaryEven; +@tertiaryEven : lighten( @secondaryEven, 8% ); + +/* Filter widget transition */ +.filterWidgetTransition { + -webkit-transition: line-height @filterTransitionTime ease; + -moz-transition: line-height @filterTransitionTime ease; + -o-transition: line-height @filterTransitionTime ease; + transition: line-height @filterTransitionTime ease; +} + +/*** Arrows ***/ +@arrowPosition : right 5px center; + +/* black */ +@unsortedBlack : url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABt0UjBAAAACnRSTlMAMwsqXt+gIBUGxGoDMAAAAFlJREFUCNctzC0SQAAUReEzGNQ3AlHRiSRZFCVZYgeswRL8hLdK7834wj3tAlGP6y7fYHpKS6w6WwbVG0I1NZVnZPG8/DYxOYlnhUYkA06R1s9ESsxR4NIdPhkPFDFYuEnMAAAAAElFTkSuQmCC); +@sortAscBlack : url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABt0UjBAAAACnRSTlMAMwsqXt+gIBUGxGoDMAAAAFlJREFUCNctzC0SQAAUReEzGNQ3AlHRiSRZFCVZYgeswRL8hLdK7834wj3tAlGP6y7fYHpKS6w6WwbVG0I1NZVnZPG8/DYxOYlnhUYkA06R1s9ESsxR4NIdPhkPFDFYuEnMAAAAAElFTkSuQmCC); +@sortDescBlack : url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAALVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBoCg+AAAADnRSTlMAMiweCQITTvDctZZqaTlM310AAABcSURBVAjXY2BgYEtgAAFHERDJqigUAKSYBQUNgFSioKAYAwOLIBA4MASBKFUGQxAlzAAF+94BwWuGKBC1lIFl3rt3Lx0YGCzevWsGSjK9e6cAUlT3HKyW9wADAwDRrBiDy6bKzwAAAABJRU5ErkJggg==); + +/* white */ +@unsortedWhite : url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAElBMVEUAAADu7u7u7u7u7u7u7u7u7u7yb344AAAABnRSTlMAMhIHKyAHBrhHAAAATElEQVQI12NgYGBSYAABQ2Ew5SgCIlkFBQOAlKKgoBADA7MgEBgwsIAoB4ZAECXKAAFQHkg9WIejoCBIv4mgoDOQYgZpAxkDNARqEQBTkAYuMZEHPgAAAABJRU5ErkJggg==); +@sortAscWhite : url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAHlBMVEUAAADu7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u4+jEeEAAAACXRSTlMAMwkqFV7roCD4hW+/AAAAWUlEQVQI1y3MrQ5AABSG4Xd+Rj0jiDabjKZxB6qqaarGNRh27tY5myd8b/uAeML1l2+wPqUlUd0ss+oNoZqG2rOwe15+p5iC1HNAK5IBlUjnZyIlZsxx0QAfzokSZgp96u4AAAAASUVORK5CYII=); +@sortDescWhite : url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAJ1BMVEUAAADu7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u4RJgHSAAAADHRSTlMAMiweCQITaU7olrlu2HdvAAAAXElEQVQI12NgYGBLYAABRxEQyaooFACkmAUFDYBUoqCgGAMDiyAQODAEgShVBkMQJcwABWvOAMEphmgQtZWBZc6ZMycdGBhszpw5DJRkOnNGAaSo5wRYLXsBAwMAi4YWQHRX4F0AAAAASUVORK5CYII=); + +/* automatically choose the correct arrow/text color */ +.headerText (@a) when (lightness(@a) >= 50%) { + color: @headerTextColor; +} +.headerText (@a) when (lightness(@a) < 50%) { + color: lighten(@headerTextColor, 90%); +} +.unsorted (@a) when (lightness(@a) >= 50%) { + background-image: @unsortedBlack; +} +.unsorted (@a) when (lightness(@a) < 50%) { + background-image: @unsortedWhite; +} +.sortAsc (@a) when (lightness(@a) >= 50%) { + background-image: @sortAscBlack; +} +.sortAsc (@a) when (lightness(@a) < 50%) { + background-image: @sortAscWhite; +} +.sortDesc (@a) when (lightness(@a) >= 50%) { + background-image: @sortDescBlack; +} +.sortDesc (@a) when (lightness(@a) < 50%) { + background-image: @sortDescWhite; +} + +/* variable theme name - requires less.js 1.3+; + or just replace (!".@{theme}") with the contents of @theme +*/ +.@{theme} { + font: @tableBodyFont; + background-color: @borderAndBackground; + margin: 10px 0 15px; + width: 100%; + text-align: left; + border-spacing: 0; + border: 0; + + th, td { + border: 0; + } + + /* style th's outside of the thead */ + th, thead td { + font: @tableHeaderFont; + font-weight: bold; + background-color: @headerBackground; + color: @headerTextColor; + .headerText(@headerBackground); + border-collapse: collapse; + padding: @overallPadding; + } + + .dark-row th, .dark-row td, caption.dark-row { + background-color: darken( @headerBackground, 10% ); + } + + tbody td, tfoot th, tfoot td { + padding: @overallPadding; + vertical-align: top; + } + + /* style header */ + .tablesorter-header { + .unsorted(@headerBackground); + background-repeat: no-repeat; + background-position: @arrowPosition; + cursor: pointer; + white-space: normal; + } + + .tablesorter-header-inner { + padding: @headerPadding; + } + + .tablesorter-header.sorter-false { + background-image: none; + cursor: default; + padding: @overallPadding; + } + + .tablesorter-headerAsc { + .sortAsc(@headerBackground); + } + + .tablesorter-headerDesc { + .sortDesc(@headerBackground); + } + + /* tfoot */ + tfoot .tablesorter-headerAsc, + tfoot .tablesorter-headerDesc { + /* remove sort arrows from footer */ + background-image: none; + } + + /* optional disabled input styling */ + .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; + } + + /* body */ + tbody { + + td { + .allRows; + padding: @overallPadding; + vertical-align: top; + } + + /* Zebra Widget - row alternating colors */ + tr.odd > td { + .oddRows; + } + tr.even > td { + .evenRows; + } + + } + + /* hovered row colors + you'll need to add additional lines for + rows with more than 2 child rows + */ + tbody > tr.hover > td, + tbody > tr:hover > td, + tbody > tr:hover + tr.tablesorter-childRow > td, + tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td, + tbody > tr.even.hover > td, + tbody > tr.even:hover > td, + tbody > tr.even:hover + tr.tablesorter-childRow > td, + tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + .evenHovered; + } + tbody > tr.odd.hover > td, + tbody > tr.odd:hover > td, + tbody > tr.odd:hover + tr.tablesorter-childRow > td, + tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + .oddHovered; + } + + /* table processing indicator - indeterminate spinner */ + .tablesorter-processing { + background-image: @processingIcon; + background-position: center center; + background-repeat: no-repeat; + } + + /* pager */ + div.tablesorter-pager { + button { + background-color: lighten( @headerBackground, 7% ); + color: @headerTextColor; + border: lighten( @headerBackground, 15% ) 1px solid; + cursor: pointer; + } + button:hover { + background-color: lighten( @headerBackground, 15% ); + } + } + + /* Column Widget - column sort colors */ + tr.odd td.primary { + background-color: @primaryOdd; + } + td.primary, tr.even td.primary { + background-color: @primaryEven; + } + tr.odd td.secondary { + background-color: @secondaryOdd; + } + td.secondary, tr.even td.secondary { + background-color: @secondaryEven; + } + tr.odd td.tertiary { + background-color: @tertiaryOdd; + } + td.tertiary, tr.even td.tertiary { + background-color: @tertiaryEven; + } + + /* caption (non-theme matching) */ + caption { + background-color: @captionBackground ; + } + + /* filter widget */ + .tablesorter-filter-row input, + .tablesorter-filter-row select{ + width: 98%; + height: auto; + margin: 0; + padding: @overallPadding; + color: @filterElementTextColor; + background-color: @filterElementBkgd; + border: @filterElementBorder; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + .filterWidgetTransition; + } + .tablesorter-filter-row { + background-color: @filterCellBackground; + } + .tablesorter-filter-row td { + text-align: center; + background-color: @filterCellBackground; + line-height: normal; + text-align: center; /* center the input */ + .filterWidgetTransition; + } + /* hidden filter row */ + .tablesorter-filter-row.hideme td { + padding: @filterRowHiddenHeight / 2; + margin: 0; + line-height: 0; + cursor: pointer; + } + .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); + } + /* rows hidden by filtering (needed for child rows) */ + .filtered { + display: none; + } + + /* ajax error row */ + .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: @errorBackground; + } + +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/psd/green-asc.psd b/vendor/FHC-vendor/jquery-tablesorter/css/psd/green-asc.psd new file mode 100644 index 0000000000000000000000000000000000000000..f492677501b08d4b691cd412b108c3eabd492513 GIT binary patch literal 32673 zcmeHQ34Bw<)}NcC>6Y%LYz0DTS?!W^FSN8xS7>QzOIbuAO>WcBBRjO(As&sYK@GQS!O&LvkqnMrW6EgCj8du%HFO5h zm>nM_B_ihf%%~h3Asts*E>##=NaYE#g!lw`yi6V| zOU+1>XCx#@ZAVm=A5gNPl zEJ(zfni;dQDV8zy3|c%4F$SEu%Ixnuf)< z7k1?C&_m}b&2$!^Bacl;1Zb+{08MH}Qc`R}GGOGSgp+Kiqtu|*);2qI$Yil{d6g_Z zBMCrGi%m%3bvQ}3*8#PuR+^P=X>pdd=@}M}A$EeC)F(!(9sl>LLapL!!f0W2q{7vz zcv?s6X~t}V+K{={hFXMti*si+70r*;ezJ@W#8i z5g*;rnfRy-g+XUvp@!(J#9{HBv7M^S5nZfMl(U9ft&YwzRTSn*i}MvJvhedVPFn?apM*Z-6FgYvL}D*;AUTnvHaP1#L1|SQVY$08Zd& z=eE{ZTAESJn9NE>MHlB~fjMzntvVwqKTV#Jnj%X`PfX62%VfFv3F&$Hi3y2G3CZ%j zObV5eXHZ$N-`Uivv08aSYC)gqY5xoGo0JWA34ZeLx%M9eKPgt8 zSS6EXB&TM`lkLy6{|oRP9;>QTG8$T)6>oP|JL4}^Un!pY`b*VU`hU5;(lTWHn9(atc!N^Ab~1ZZ|Z$o97odCrk7^zwE=kyKY}O2?=sVT7fK2k)KG0 z(#eS_>B*_71&Il=q~sKszx=WKN{f}rs$}wvr1XsB1W$eaY4!E{GpavSU!8wn@t1yn zaie_KS(bfb*lt$V`8OvV7rqLEZ{gzkui-jO8u%I2pGmau^8ZZTye>~BJQVH_9=O~= ziI?%f#Y5o^;epE?lz15rTs#!+5FWVPL5Y{~z{Nx14&i~z9h7((4_rJH?hqch+(C(# z@xaAH;SS+}%N>+>84p}M6z&inxZFXBm+`>GL*WkLfy*6~co`2|JQVH_9=O~=iI?%f z#Y5o^;epE?lz15rTs#!+5FWVPL5Y{~z{Nx14&i~z9h7((4_rJH?hqch+(C(#@xaAH z;SS+}%N>+>84p}M6z&inxZFXBm+`>GL*WkLfy*6~co`2|JQVH_9=O~=iI?%f#Y5o^ z;epE?lz15rTs#!+5FWVPL5Y{~z{Nx14sl1g{2Uuw&WLIci5O&nQ;JGaIg+DflmN5|(TGJ_xSAkTPG|<12^VpD zc?`u$sZDTk*d6L*cNy8w!UXZ5SW;m$Gj>zJ)Ebr#RA@}4d_ci63P*r3I|3y&Iujo= zN@H%|1NnMg9v=WS9IA6w^_sGpDJsaHz=jZPJfMIO*}9}cEtRSbmYQrs3$VDOkYzgX za&;Z$a#?lN7{*-CuR@1wh(B_5YH4Tu3X{%E_~lKy>jtyV%Iq^39>$s`;CSE#HGvAswvX$r*306yHCguA#oozhflz|asUB>s?ukwgV>cJv3*R@(VPxT%h&iS;@y zL))Hf_B@D2-0wNJupT%lEQAZ!N8lir8_v-eX-Kb#`^8x3Ax+Rb+FA=1b2{w36lUR+ z_;fj(1?&->7fK9!N-=7atAkXi%rZzux(56Rv0+Ly;YW>gIM-~@+rq?*3Qe6o9*4yy z*wKhK*=Fi z#ziVnMMFBe$y{tIswyq94-0(kY!_kQIs-c`N2k>=w!#N-g)g$Rq2%6bx>ji+!xY~J znl*PKUTtT)iu>1S$W~8I;D&Jea|`(hNPu>A*~k{W{< z9I6A~AF92sy*O!O1FTiUOsn+_IJf}YY*g#jnBEKY z;|&(<_`(vP=QL>PMxc)Z9j&wIwLs(1N4TC=LO&?Nm_?guRUOa?Kug%F3K&g_hQT9S zqH&^YoMvrP!-gu=|>Y zmBRR2MN4DbJMkY*=wz0Y9rskwwKN{*)6#12GA*Nl>Sokh{6v*%8JA7moHYEwWKJ3| z$@w)9VXJPT@JVqf_)s_!{&)b1!u*kN;>!?2@%2{XTMZLcgvRzc%lSRf5Kpcy7r}f8 z3QSt^SU`%3DyhoCHgF;$eDi|&K@bW@-BEAU4-JH8v>c_Pp(q>WqYo>7j93dVcP8Ao4$BUcYTid zob|ck8|)k7o8epLtM+a7o$tHKcZcsG-!r~9{6hQ&_+|Q4`AzYA*l&^F2EToNC;fi$ z_xF$TPxl|~ul1klzsUb}{}236`CpTSN(M_5l8F+F0{RDJ2TTYs z2Rs$9HegS{Hvv}z!vf<1iv!hxGXj?cZV5aRcrnN~C?+T;=>DK-K?{T43_28aA=o## zf3PB08T?T2lHl#ZCxS1BgoVgL%0l!ZPll`u`7q>MsCQ`p(ELz!=_ zg(<>RVUL8Z3fmWUCR`joAiOwyO8C6+e}o?lZ|xG=C8XDy1dh+B|;d{KcYB7 z7coC#Q^fIz>s@DIGbb~n1)+-@7Y9qV?zyR>_L_xkS7bl=+j z>mH&WgL{nb(b(hV9{YM+=o#K~Xirtoxji@a{4!DyIXJQ+a(d*-$ODm=d-d*B*vr`K z#a?@QUFaRrJG=Lk-p}=ZxA*xzVSTdtX!|_ZXJ?;(OS?#Oq&n#$>0W7T-^jj2eJy>L z_dVG6M$~|)F;TOkHb#Bj&#zxvzuJD!_1oRAHM&o9Y4iip>!ZJn@r_A~sf&3bW`E3; z{sa1t?f+Q+t^Lmp=r*8uz_bDD2b>%jFmU+5sRLIGJUU1`C~Z*vpqB=HI#@6`d2rp} zC4&zQ5e!Kgq8;+mki++Q-IIO~bI*!`A)6)JA^TZASgw*UksnPANGwR4k+?1KQqqtlI_c%4&y&NF zOOqc<-kp3Cc3@;vHl&HKt4m$B zyoyE^JyUd|xL2{Ncx`d(h}01ej@Ua=GO}{y;*sB$3@%|yc9aTAN0dHWdU90EC}z~w zGE`Pv_H5bLKNr z_ch)3;r%`C*WLflq@YR4NpDW}nml&$y2)+IGUW>8<(lG}r8TW8h3W;>59)07bL#VS zCcS_@Tbo(Cp!S?5Q}e9meBJQ6g>@IS3hiR;r71;IUYT;GzN~&ty;V0>w^8q-pRC`` zgfjKaUPEs~li{#&h;fdwWopLM=cl%^BiYp^%5ic?QwJ;qEst7GHDom`X}H>0 z-S}oxNE6d^pm}if6U}F*6-@j4bkTIx^xY5iec<5-PCc0O;PQv4hiV?$J)_@@*)z_} zES&l3!+sCfKm5t8gjow_{rbq*M|RBaHGAgl(~lNDx_(aJ9Cpr$$A&)k%HyKPwT~Zs zBJqhApSU$wJ@=z|3G)`tYkN}lK5MgJ8GSBh6Qto(je^{V}UPy74Y z)jd|vTYYm4v!>jmpA>(9S7@wHF?k@t^n8)7#s-x#rR-s|Xf z%j^GsWAYovH;vr1`^~gBH~cf^pG!A~ZJxV@+S0tGb!*+$mTlv=9o{}-`|ce>cWizu z?yWU%_kDZGJ6+zH|E}M=v){GuoVN4wF5|8X?`hsUy?fH`ul9`Fb9C?My$AP=-1ouz z1@G_KpR<4G2bmwd{b9z3+doSCXzRx*A8$F3d|>k@$)9XKm~wE-q0~d$K2860$Khdz z-#s$?$a|mVefIv*;-eoQ8+GjP@iE6gKQZw{%jfFP&wZi$;?kE5U*7m?=1H%UbH5J$ zdf_*b->mr8pnq*_NojfKRNkor-&TJ6)oIn~AHFkv*LG(1_W|E8Jlp5&+H>-AZ=WwX z|LMQ){r8z4j6dACFz3gRAD3Pnc=4YtnB)tf06gA5kEC*K-ok@0pX>=PI5# ziDym%4dM?@F8*LL$k6%l%t<_R63?8(Gbi!PNj!5B&z!_FC;8u)lURR567ttAlN6;e z)3}HNNeHQD!pMZOeuZWuiI0zuuaCsnR}$jy=O5A~NFoX9(k(2kOITR95D7VKH!jfr zN(K1)2LuKL2L=X*2L=X)<4a&Tmn6g;1=d|C#0REE!9pqu2|_4g2xa{m-Yinqz0`29 z(hI)wgu^zJ5+X_<@)CRd`1<+7@)Orc3JHYv$Y4Z?D4{?k@bVV>cnKwm5E&vA^$nGI z<&0K_MNNHJE)IWY`5U?YqPtYQSCg2;&N{5{j#*IIdg_wOlpL{Q(3U?$xAf0%&ffEx<@7HF1D;#;=s%y|d-S_s|Gs(Ou``#eYa8Y)T)pM} zYkf&&jln*K>n#Z7AT_KNtAPbQcuiOx&}KMIgffCe*zZV4VZB);tT4mVXfn@^0uoVi zrKM;v5I)G83MEr&ydnuvJ>Z*oEQ(MK)sv^EPy=l;0*I8s+dYIL;bbW}q4C`PsmHYB zr8Z8x3eHcFU)z@m!RjB|{SJSGgz&!`Wx#(x$mQ_5i~DCHP=SQYD2Hv!1ib#>WkLsy z1>q1=@FhFkDg6H5Q4XrNqa0L!=W+-ryACQ&;LuH!!3ExK5*)}KBNwy`M^TY_C8I5_ zD5wCMd{dFb0P31rdeqs)}ym97(?8?yip0PTWKcCL8S=RSCM$e z#6p}%r)*|PxLK>lVK{?uSf#7c;V_08hqX*?lP#Wv>zR6kb696G*1CjMI;@|s2du+X zr^k8l?LuWSk+;^sOM=r;*FN}9;PBsu0T&zK3s%xBUXg^|Hs`4C>Nhrhzm?cg+r%1e zY2oHL@LD}v2(LK^Mqal=oz&2M*gg(>Y_k70xM1u^D}+1#PBF+<8n^31!qtZiUIH88 zg*%6PZIc{eA*~5mjxyWZ8SX_;a(Wt?6fTCkgH;dnf>_s8@&wTt69Ed#<8i2Vs(k2qN5Va0B7%>xhP3CyKt%H27h;4H2*(zCzH8|Ni z3Wuv$<~BG(3@$Bc!nbp6_mTL|wBdH`VkAQkQ&k-do$Ep-}QslAEV`<6--iyIh%IEAZGo%SJy7NQAXct>~Q@y_GK z1I=Z2!?P=P@##(K#tzn$>dg3QfgsKeYj{;a*sXEq*{yNrf#y!FscC>^g0K!5%VHYe zD{FI0Y~f0KTrMox!@P1`eht1`G&&96&+C*9|H-}|M{`GsQm3~2mD7@CWMVZHJT&9& z(qMqj!g750eS?n^zd@JhWQYmJ6f;sOzGMG)t-#7UqXHs`S2^{a(TMxRLm!HNtAhJb z3-rAv6p!*?5K;?+5ew1*A9G5eKW2c7e|nJV62h4x1=}FC4Jh09qHMX@o;&tw-2aj! zwhQ)WXP&F=icV5H|FXoM+KCsaWXxKnPOCH(>I^1Fo2;xg+Zt38sX1HzJ{A*QS*JA8 zWGOQ+{eXd2idtAZ3y(Q;@HB^x{7DcX>)%y+(rI~PEzrubh#GtfLWyt+xF;1*crZqu zT5u-^megBxQbg^vvuq=`yGw4+=y2|M%IC-(wXMM)E(7>GTn0g=&O9xbYRK=Uf+9L6 ztDze(hPY!FkRnnu0fw0b2AmCFNZW5QK#o5|J9m=7BKIo|o(%*}1^=Fi$HP%@l3$VF zu^vMGqTk-$3)X|| zKVrJcpC)LQZit2rB z)>~GepQ|$qN0wFId+a83sD4*QM9Z>@O3Evh-`=tYS+A9Z^oWsX1EXrnMQbN+0Ga$o zGWli836jaLudUf|l4Npu)shvjZahOWx%~Je&o5oEcGCrt$yH{8Va~#rR<7IpGtT6? zc4+ZL_K6o>TD5-rmD^-uD~WnFSCYwP6&tydOvc9VS89KQb) zSCZgv{Sq?sp$2Pzbjbu=A|LE3*KDqGop+TR4p(V&a+RBQSD{*CZ`oW$2(Dt&g*E;U Dg0Bj~ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/psd/green-desc.psd b/vendor/FHC-vendor/jquery-tablesorter/css/psd/green-desc.psd new file mode 100644 index 0000000000000000000000000000000000000000..bc9ffacd16a2d4f55ad381f96a997c23c85528ae GIT binary patch literal 27807 zcmeHQ349aP*1waaN%x(yLnwu^bxHRYTH2;fTWD!%%c=rtGEGC1Nth&EaA6TaK}AuK zO<6@2A1FRnL3Yt6qM(3^`ieXRT#!XTX(8Xacallc7R*z>-}m|Z<@T4EbI(2Z+;ji; z+-2s@Ow)49DiDRZAc9jc`FSHD#~ME&Ew`vdgi{de*^L^HgkAd-v^fh95}cWYh-@Ds z8@zX=?Q)^Y}>d2v4zC#)^8uUgzZB|Mf^g70r(U2LbR2!=344^SP zE>cQF%(a=3IXFQ&wxmodH?XucIW|5<6`v9>O_9aQ5|dI>QwK>C;$`u1@dg(%c>l0%QtR_yDo}P}?BqYRu zM2xACF)JHl7*lUfiCs?~ZBnsXqgiWUq*$-A%3v{PMn>X-_+YD--pCikm|{sCV^s!y zT!YdWCyR}b<26IZA%IDSoTZg!16ye@=(4z)m(>`|22+i}D3wUr+$Xr`Pt;(o2uzICAOKCLfv??WT@VGigZEHrOyd{Tzopfj-0LUdN*khu2PPEF=WE|Sa3SVOf|M`xMJ3v#7J`SKK5dP+)6LafYL zjg#D8U3qZvl9Ki-Ztp*OeO!C}&ScK7gDz?7;x3TcbDAm}jdWZ&Z8BI`6`fxPPT=V0 zw%%A$l2OE%%t}T@7v*JvIk8%;IwMJumXMN~B8yK?OwLb`$#V1K)ARBZ;}etOlN0ii zb4j;y&FX|OsZ>UuL1n>yXH%=jY7-Qxid0#CN^)9WzDy=dPfE#8ON&oQOwUhG%+E=- zt98oSMr|ppg;7|kbCSVU|2OK}QPHNDLahnLs78BNjz(&`~`E?kFMt+Q#{X|&%(m(%T(_1^mHYiQ5Ec3LNeR%uR{p_{*3!gDyWK{gp)PA>^;r&Fk_M!b9N>;epE?lz15r zTs#!+5FWVPL5Y{~z{Nx14&i~z9h7((4_rJH?hqch+(C(#@xaAH;SS+}%N>+>84p}M z6z&inxZFXBm+`>GL*WkLfy*6~co`2|JQVH_9=O~=iI?%f#Y5o^;epE?lz15rTs#!+ z5FWVPL5Y{~z{Nx14&i~z9h7((4_rJH?hqch+(C(#@xaAH;SS+}%N>+>84p}M6z&in zxZFXBm+`>GL*WkLfy*6~co`2|JQVH_9=O~=iI?%f#Y5o^;epE?lz15rTs#!+5FWVP zL5Y{~z{Nx14&i~z9h7((4_rJH?hyBd%h&N@FwMZ*!1eIjFL`e`gS=C`5svu%WbS=s zKO?JU%%v8y(P9QBc}2O*WUi=!mtcuR5o4xl#-hi0F^$i19gE{ZByWYb0ZZg+%{UKE z=5*5R2&JB`%pY3`tgc9ol!!qF_(@R-Dnkh<8N~x_LNsEL7LF!}l@XdjX2M0>yU>HN zQfdnv9Cn8~*u43cI0)|o!#mTqwk^|? zne1(gX)Fn6Y&I&Ut2s5Timil~q1!9ALZ##QWvnWD9M-_Kp719^2BSj32!MvNpNU8I zC24`=NDf1%+j3nd(E$HSR>_#)%|)6~HFDn2fu!_+V*siIcfoFDLPj{V;4}kecFjB$Idu9HFt=q;@B%q$^-6h1W>j7fa$`^U45Tst2h{XV_Q(}{nkoqKIt^n7+ ztQo_40@O}oO zVmV`Wa+e^D&QPV)!C0lLEr$2AN9&5oSPE72sZp9r3>X^Xgv1|`Fp@|CzqbBB`bsN* z2shQxG_hW%WoX-MXD@?j#G|2e59@-X!Xh|uV+4+JrQs5Nk%o+wc(jZ`YBKdYOIIF9q;pG$BSuqU)%EirtngHfAYU8G!PmO(Z$IN+(phAPp7ry%EeuGyfs#fcf^ zni_jLj*Ct3r3l(&1BP-b$BU$a5MCijNTevwNw-A98Z1T^me@dE=(o*}{`nPHJNJe@ z=m=0+%!UG*!JUv+0|VhV>utimoG|9#lp?)G3a9_=`U~OH8n)$@tx@oR;mRp7Y3xff zPDZTMnJbkV7pXuM4f*H>bCIdAvZUC)T=2HDU4(sV4D8e#omRuxDj&pEzR=EwnoHDl zwbDYCFFtiNYi>t;w4LoL?pLKDpU`juH-yulTfiqk7Bs@ZV61)21|#%z6K!`4oaU98_mQ*P4k{H2PJ*4>a9-Jm}gf_W(ikr7SjVUaXN}bZ&AwyI~ z78Z$A83-q;;afRC&jMOkZ#H5+wmQ737Sm)t3TMGUpgUo{hNA}&8II1zv|7)AgA1_D zMzvmz=|ez2S!cnHFDwRncAb{42l_LhqjVO%7HGWw2-nj}7zsrfvnVsIssTD4Xn(e{ z99Eg4AuwtCYnhz_97qtQ|u4W;$?PI6fjK`S7~}yyU$Jr}AQPdHiQ*q=;x|SJQa?PfJIGmuVRdG&iHx;yG2SWn4av zYjNzSi<2wQU(g-?t{!5@bs;ZH}AD9jHDAAA*3D8Ai_eMZ9tEJ9;?Uf}#5 zXh2%o%Qjt)ZMs59z;dZT_YODCXIG#F*0d^8M| z!gbF$Gy$%3YLFgg@_O_Lnt^7cdFVOx5?X?mqcvzf+Jv^C?PxdJkKRKcqEFCCbOtq{ z^XLb31>Ho=6h%p>04j{?O!cJtPy?w1Dvipb@~L8~oEk?>qBImkS*S;-$EkVL0%{4h zl3Gu_MeU^aQy);rsV}Ir)FtW~bz2}5_zS`X-35IGae_2Kj$pW;Qt*&KBbXwXDwrjB zRniA7-|sVGJ?SX3w)B~po|h#nI?Em|U4C)y@DB>GfzR&+&l*DJuQ zo7X_E46h=uv0fUldav1D3%%BQZS^|rb<*p+*G;il93hStr-}>3m_omEIh7VIi`R(hz;f(;*u|J_xxODhcfynjfkTofWz| z^kC?@Fkx8lFnO3N?D4QQVTZ%chl|6b!;8WvhtCWDNBFVuD;+{RBy||wp`pXl4tqK@ zMF=DMMifQpBIZYIi8vK;yJPo`IUVVaPj%eX@kGa4ow|0)?nHN*+i7#BlbvpNmUhnX zT-*8i&f7bG-9^-8K$nqS>btz!<#3lDyM}ii+*Q?eZr3eczw9RHHlSO1w}-o}?sl}> zjqW|V7j!pvU)=p*_aA#i^vLcpxyOq=-tBRzXIRgyp4y%-_T1a^dua!0j#MXIBt0a( z(yLpq!d{kMD|;R5)f^ceIVy5ys{UZ#oh;cUy14&RTA|`)W)bU`}p)p z>r>O`r zKN%nxkUXGfz|sL94-^bc8K@oj%E04;yauHYVg{`mbUMaACMTvYW@F6R*ofHT*qO20 zV=u==#f^`9KJG}|-T35qUHqE(GqOGR~U3MeB>M3`-sM=&(b>{fAc!Uo!mL;sM2M@vag<$*__a zO1>J=X9P21dnqa{Dt)2!>$2#wDP`}B6pt($xpd@r<+Ace%8yipRZOhdP;s*|w{m{v znNj^lSw!I-A8abq7H`{B4QnV_4nXJXJq<;1rqc}*HKX~U!zWvOzN@;e3Pn$LE{Pcq9>t^`QsGafA%=noLX8!W{n8$a`>OO1wtaDEkJh5?h;B0pG={bYv zEPqn;r1r^UPbEIJ_^G>d)pP$fFMi&_c`Z+?p8nS}vS$`OV|}*z*<8m%r@$vgPHbMa7GDERI_I+~Src zHA_w|&0V^AS+`|RExYxK`jr!}X1}^=dH3b>mfv2XUGe$Kf|c7=^hIQ! zUUTHNwAa?J?Xq^>+B>f^uQ#nLUw3GI>iYE?x^0-hQLxdn@zNU)zVXRF^8T@7Q_QB7 zn>6%(_zp2cYWWT^{#dA)V(+M8Tb9TU$g(*fr$ss92|S_vqK{f z9XmYy@cZv6-aB|C=g8joGvD9+LBj%CT)9r+&QS zlk`t^9UpT1-4jDk?Ef_H)Av3r`s~A#BTgPaHR{yoryo4s^tt-;i(lxzxcX(?m(6FU zf93Vn+^>VbUieM7Z&v-g|Gzgkr8Mn1n|Jo;w-w)>Ij1`J!+%WwX*oaZyMXT&Ug&vY z{l$cfyDup&ee(SS-=F`%_(SuLvwsTtY1!p|m;d>5_RmMJjJ?dj{CufP6F z(k};Yl->B|rv7I0t+~H;{&n4NX}=x0J?8d>=K2;%%c48|@9ere{O(s)z12#tHNwei z051lDNF1-Akzghq@OmQH_Jg&w5c8{1Cq!94xBi6u$%iW^%1a=A83mFUQcnjV%6bOP zLjK;~-ag*`K0f{-e!hMo9fJJ*gF18y3+oUT)+xlF1lx&=v_4V+etrRg0l|TR!Qp{{ zf#LWN7|vx0aYuo59}4k?3Iq$ONF)fMgdvpmYq4I0z9X5P69u z-afv5aP!zTkwOBYJuw(jB1$L_3A`j?Z!e*LA|!?gMZH30UO6L`VUbg2B#6VGU-?#U z@2C#t`>PU@*qO)Wl0FM6uAIH9G9^c>+VXhcyca6f`3F{;Q#zg)^(}qv?O6vuwVb=I zh<8S7EFl@^GcZUd^omXfBEq%iBVN&*_jLE6&+Njq^o_z*Z@i20|QP4Bxc&&-*lh!`xp$efCQ zru9!eefZNkSI6BxmU%?da>4oq@y1@HaYn(Bv{Vqvf!jz1R0X$^@E%SL&}R6V2xSDZ zu-}o8!v0VN>!)03%wHW>jV z%HXOSp>FVFsRTmfKK1MzExFl*^R9v4C&;(uON8LQyzP9S55FS(HP;N8EF&QSEfGISZ@&Wx)yIqb2?e(T_Xu_Im&XS}l*WUEcT z-)jeZx~)BA1mEh01c1Y?&rw%<|H7juYPDl~^s6aH@MsyRSDIiqOfj~iUTap>*zf+L z3WGxHa!;LbAOk7Jd7BNDz;?HNUm5R);nGGx=f&qzqsq2D?bs*Ae0Zin>Z-oo4fLGp z)1IA#;tL5wTh5}ODApPCbScW|AJOAs)KDicrpOX zVj7<-s&k8N@d|rdE^MJ;UYRbx3ZE?+orWLhbxMc-WKY1!TqsuR)ONpedWZm-SWP(( z%{aR>7@)JT93P%T@^<3a>GGTmG2xUVMk>W;?EkI}SW#n?Ljv(Cr?E2%aer|zhT><+ z@EB@=vDbv+P#!Eks$mggK|0`LPBDzf3~=!yLYXcxTqu&WbyC|xvh^s+mYMCPW1q(3 zFUev%V1IVzx!NvoC%5wxVD{Wjyg(&m)+%*crKvz?Fgf~UMYY-1p&Cfb*~<5}nCOZc zrI98N7XZ^278Ry({Kpjl|Mr7HP^dFc%jFvQd%2*B z&e^KyI*cJ6*af7D)O3JhI)MQf!&j1j-U}pcL9}--StN2#OWC>jjB~+P;_*5-5`N^l zF1*G=sCU%vo!#LH4ZJ+G)0}*r-c$?BHSi-7$X|YqF>cmj)b0JhkyM69}1O?AK>Ui+(6 z@C-t5T|Vcw6)nDt?jZD9i>mHvL)QkjOH~BQ9YcMF_ zfcsUM(u}7eLMuwhnBmV|_hByV4Lkc~2wZ~(!ZoDLo;LpaXVYRTD@N>DjA96EALqESS52vY~dXo5#O#G zRxzpUo% z+jiJ0c7UtbTMDis6OPz&!u%{CXh&8zz#bHqor literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/psd/green-unsorted.psd b/vendor/FHC-vendor/jquery-tablesorter/css/psd/green-unsorted.psd new file mode 100644 index 0000000000000000000000000000000000000000..5f6a8701eec903919de6fc05b4357f8f1d65f28d GIT binary patch literal 32412 zcmeHQ349aP*1waaY14gU-$E&r#V+aILJMu$w1t+IwyesMCet)DnS@Ew1yK+YpTH9Z zL^hF45Kt6-tPf>XM0o2-Reo;E9`b$T6RO0Ua^P^t|TbUM(O z9UCDfBIfFhh%6i-9aB^yl^a-EniLZkt%^&IlP1ezWC@8WDJc(0#?&Un7+6iLEG;b!tBH?~ z28n1>J!4kZMKh*eoD#d99NMH}wMMhnz(}!PWre|F&WMP>8S#g$TzVs)5o3xWWsFf7 z^s#kHW2`JDE|%8}2?qft>2j7dR)1cVa z!j9Y>dgvUbna%`s;-ljd0Gjf6fF>n9F)=zW2{3X}!b!H$QDjhSE9)IPWU}b^_;OiV zdSXg?TvBvgGOxo)vb7GVO|{ajbW4k~tWD3LSPZcfjgfT2C`(6V!&xwKmkM^hyJ(SDG`GMx#!vQsN4atzp!*YBbvGWl*d`^v|}M&xAML zr5W+j_ckUzDqU{S8Ca+xIx}HVY+G!nDsw~^$mJ!hp;D`(Gfky=+0uesd9o}mIXOB$ zM&_)>N$$@sJT&p5qP7ce?>~BdY+L=#WX`RDE@|uHE|A$%n#${qbZjYYGFVs@om&Hq zz|qfby|Jh$y?`;9m5hom$jJnAVzgRydSXs$d~!;%EG{h}DK}mw%g&8U%gIfMOGu1M ziqA>PCf&+4sT0DaQ0X}al?Asun_4wi8?Q)Fq{woUlTveXWinY>VsdV3YFu(cT5eiG zZdQ_Aty9u_)E2W^7=@KOCmC$@f1%9=k2e$sC>?cWD} zVsv~$xlERxl#(6~_ap9}_P+tXqs6MKl#GT}XU5tatDW(es;^{Eef^c{OO}|WNY2ek zNKU@rt>cgMFXA&Mqw8`G2NvUY92m9tw8|4_xk`#LIZ#;-PSd@WAB`O1z8*E*=VZ z2oGHDpv22~;Nqchhw#AV4obX?2QD58cL)z$?x4iWc;MopaEI`~$( zT<)O6%Xr}8p>T)rz~v4~yo?7f9tw8|4_xk`#LIZ#;-PSd@WAB`O1z8*E*=VZ2oGHD zpv22~;Nqchhw#AV4obX?2QD58cL)z$?x4iWc;MopaEI`~$(T<)O6 z%Xr}8p>T)rz~v4~yo?7f9tw8|4_xk`#LIZ#;-PSd@WAB`O1z8*E*=VZ2oGHDpv22~ z;Nqchhj<`dzK##?X$HQwuZ7R*$#?nbX7ClajX?&IISR4)_Y0I>ASRz|%#%XXgr;}!fEA@1F?wE35bwP5Z zL<};(Pl}3A35rKaC=O^7q7jR%y-IbshWH~} zreS!gs2QlWaAj$eo*Xt!Dkg^-%!bR>~* z2%Mp^?uqS2Vo6uPRtm3@urHRxhpklx@KW7LSvt9fh1W<}Le6mFa*o0+7$IMrFF6Dx zhwFsSN3oTa5Tk>$m~bc?XZ6x$JSQGvC^Qbvb{Sk63Pn3OMCUCCBf!OGHD|lyEc_lv zJHpP?ABiJaVAZf$2qL8u!M-7IaMp78#}ST@qHOhnZO0NAm0+U5hj48DT`&Zc!Ow<# zGN#b0@Uz9^AY;+t!H1+9#hMtMfzd#i;7l{h3VXMez*v?|!|n~VlY|d2vntIr>%>E4 zMwPP`U%i$oh7C=$=6ahHu5n+zvd)!@>j!1)m?E2$Hz`j7<_d6|y4PlCSqQbVSyIWu z=vii_jjp4Lt(X{6ToRhaJA&A93J0d2nq~}Ose>&TgJp@jQv9Vn9)>c3#T_EER!_U1 z1x|FIEPT`!Fa|!!cUxNrsAdJ!#lJOLZD5+AKiVPSU(g;a=NW@4Y1^n)952U}eY7gP2Dw-zN>$D7Q zyW`pOAR6(AXuE-vaAzD8j)0S`=ixBP4d)n$G-SNQBW5(RkTKK%9DL(dL%e-_!fEV> zGY{*)KbON9A)Hgt(5d^>UuXPXUrTbP(ps;RQa zu0388J zi`kGzGq^L-7(9e`v9JmIa>AH{V+!;dDO~>BHa6GGRw;PkaOD)4G}*$YzX}c6uEq)65Kez~9v=Zo&~O8Tv6h$(M(FV-+TJj5oUaZV(mh=N z3WFIM)IEGZsP?MX;-q)=#mbOB`~-s=3C-Qvf(SbwqVfy1j6nd6Q4fA1-X&+u*l|+t zkKwK;fgTABU8yn|i^>$(Jw~vDjudaD!)YRCsFNF~xqkR*bbg6c>J;Y=8KN?>;4o4p zAe^9veW`$+1+=c#Y{YzQb$CTJrpbLNoCO1c?uhvsj(&*9aP$yNtMv>tZ~?a2sMf17 zeF*5k)mU)D7Zw6NyGBdb0(}zbNS#Hm1seMz;d)vLBccdn7HOtcRY1o9?a!8%g2yQu z1UGMgjT2qrM4O=nf-I67jP;~Wq&X!f$5D(27ExS z%s3Say=R*u!sbp7jC7KF5Q*!Si@!F4)EU+OsDtN7>EIdGfHwnvpYS;cuVN`eJDx(Q z;};HIBwSokhd~cO%8JCTyoHYE- zWKJ3|$+c@B!q(kI;S*y}@Ud_t{OKqXh4~@jBP$_>;_IzYG727M5gOg&JFeXW4e{jc zauUpkpunUhw*@3GEtje+Yz-$O!WS=iS_nens1xdrdZE5>w~j|CXdoJba?wy!49`Gg z(FAzvsX}_Vf7haE=m|6%%|*|l7tk{FGFpc=qAlnxv;*xy`_cR8BXk^{LT6C}x`=*2 zjpzny0zcfF3ZTNMPE-%7H#LBYr&6g*DwisxN~y8bBuYaul!cl`JxR@_7EsHm)zn66 zE47Q-PaUC7P@hxhsY}#V>W)At@E3#&x(WISVg;#!EWt2AxnR6NBbXwXDwrjBR21h#nWs6DGfzUeqYM>lNVD)oXxP zx>teM7%z=it=DX?#a`>Zwt2nhb;|3a*A1~)++G|dP7&ve$BHM59~I9Nza)M`yia^W zd_jEO+uOU7_W#-I8OHi;^ba5Z@@@4Bv9!$-YncF7e&s`=0MP z-)nw;ei43Yek1&}elz@*_`T`(f!}$*+y0^c{r%h6o=?T=7nquITG@HsCQ_e(A-dU=&aDSp$9`R zgbBlXg~`KIVNZsw3wtl@Vz@XwD!d?ka`@cv*TX*!Z)_LZF0tLHc6IHRw|l2uLwjNS zKJ5$I>)Ow6|5p3c?eBEx)*-6{-Qk%ITRMEw;bzA!9fx$JJI?9&M#obf?{t!O%I#F$ z>G@7OI(^w$)VY7>5uIy0uk8F@=O4R-cNy44)n!hXx4L}MRnWD6*V3+!c3s=`XxHoA zx_8U#X6&}K+re%>c5mN(NcYLz7j=KP`=uUXJu-V}do1d)x5s5^J870wCtV^vByH^3 zwP$`$OV8CkKknHS5fw2qVrIk}5nuN5?UmZAve%+s2YNL|_J}NsoEEt`@{8V*-l@H- zdcWBFaPOOaqWX;P^K_pbeZG(C7*!B8HEMIzxxN8?2lt)QcTL}u{lxuJ`&IXQso(Mb zg8oVUtNJhRe{6tYK=J_XfR_fGc*yIaw1=37);x43+CMrgx+Z#a^!b?fF@-TRV|K*+ z92*%sF82A@!?AbclHzo6>*CJJLS;i`GiAGFSL6G~tKyf(pG*iyP$W!G*qLx8aX=!S zxH9pxq_Cu-q^FY(B(=aUa%}RJHHaRxZqS8{hzw=M>Wqd=Y38KNRhbQgdk$6(UNiWcA-#sE zhpZp+T~@!W$yu*u{hS?_&1P@Qz9~sJNhbVeywGQ6*DK{y9QCqGZJK5#N@|N~e_`E(5qxOzjiRX1Aq zhTca%NxzE;WvZD&hVF(s!wKU6<7{KYl=LYtOlf3?vFlBgX}oEtIUJm+qn5swr!41d zGHaIC+^QW_`*vMO9aDF-zJL8Q_1{fZOnv21(W9zI4@~Ph?TKmUAIo}d_2bmz6^|d7 z-fQ}-=@)0@&3N?*-zTb{_}9$1nG0tA`sC;*chBlJYsRb#Pvt$ed3NAzcJ`U42R{As z-$Z}Y{_W#u5}sN5%-uQaIUmlAo4a^!^E}nO5C1Ov`;xy~pRIiMa_MtRo0nBB zJGDG}`5P;`u6Sm}&6m_KeX?@M$}KN*=?Ky>;O2)VH_%qxU~nYzx~qXFIjMetYANsvQkG$L>6_Yv`^6 zy9e&x_RpAqZrIav&+>QLy)*w^-*;!dYu!6_@AZAgeLwEk?7whe;(@aV#~eI)XvCq9 z-y8Pc2k$H1KX^Fn@ZJwHKG<_4{m8BlQ$O7CQSwLIk0u@6_OGOWZTmR+%j_o|2 zc6|4VK_}k*Wbh~ZKh62{{gVYJKRPx1)QQt0Pk(mikuwdSsXzPvbKU1xzNq=4>FkVi zUgzd~8T{qqueyG<=Ief6ztND~@Xq<1^GCla`{wKg)rBAaZTfff#aZ75e7pF&9^Y;J zKK}bXmlT(dUw-)V#UG46H2paHr;wjk{M`5FfBZ7!m!pki8ZTa9uUN0nyVmL2hF=qZ zJ#f9``d2sfH=1tFxz*{`tG82cAHFmC&Ua0<&ECyRTKcu@zB}yhIji1kCC?h+#2diQ z05>;=J!m9Y4JYhR1lxY#OXIm_!BeOsqO6};e?tCblh}#!A_)JC0!av|XMhl8J&R@` ze;*$oiI2ZT;veGY>le~4$lpJxUB|Gnc41*1L;T5MyKsTlXDYzYFCZ`=I503cJTNdY z9G?Qixg;U(D6sBBAwE!mU?CNO1R<0#gtC4K&;OM55H%RA^a95O4lo!WLPQBfUSe+_ ziLW0_B)djZNFcOF1|v#D2?Zj7m$%r*OX!~fks(4+&rq3H)(B--#FQuE#o^Dd-kRMj zvR&!^iiAXV<_WoX?*(Oz=dY+tN$uCX^<0M?3# zP2OU!Bw|8OS*Qpsm=Y1@75~KZ;n;%xr6(E_A}h|bGZ)Cq+Nn&5S9*)F0p5L*4txSe ztnHxA9hq#Vzu`@|zXeea6Rck#e<8^;1Pw+%-?=&Rqg9VB6ff89I{0;U$8Syxo3;pV zAG`CEYOUtq^oY0nZ#eU)c#CP6{OMmNXD&E==fcxxHVQZWI&Jw!W6+Uj&rZ?~WEScjd@?VFzTb>p1a(YsFX{r1h1EnjV$*idHu zoO>efNh)t7oJmavp)8nSGN1~WXu|6~RY05JXCjml#KL|ZpBR9~Bn03v1ZRE|(r__0(xp>dyk_GvAd zjKXQx!S6WoZTDkEG7rfT{glGk1n|UaM-4vu|+6LQRY0Wf)s24)8=HGODd2e6Kz%BsJ_Np6l{); zn|R|^929IGKv@a=RSPQ=IZ)h0SYmjHldhJ8}GSt zF{dFGOE_OCbP!gmro*rG6?JA>37N?AGX@ZdmuWg}h!p|n9$|hya#${t*ziTTz zib8XMnHqBR<<`z{st5nP3zhXWD^0+9bQT6g|1aI?)iDOtaAQO{|_j>@X@bD6}qf?t}vgNH)&Pai|EE#_em+ zc-0K&HXJ%Hz7`u*wxw*xnlk3Y`v+22^=&S;XU&-Y>?ACY5Wm>2ncmQM5@Ep_oo%r_ z16c(P950Vm=v*~p4#bf)I=kVdoBtle^H`bV7f*L_d@*c1AgOy9C@so0fK-& zTrZW{=GVR9o@ar3B)(JXc}ayGI7p?yTsgeCfv@=01Tv7mi9_50pxFmffol;V2Io%d z#!YA^4*M0Y;`H*+g56XD$K#=$(7W^beH_ne+8$RROwb}U(!>&b3sq+OQY#TIQXB2z z_&;pxfM$`ffv9yfgP}8!*CdX|+uG0Prr0Luo~`~Xum&evhvRTL%iITNh{2^LH_-bv zZTFG*&$Quw?P4o*dbo`<8Xb9=1BiXf8JI;5=ki0_D#y%1hLz%LX$|XmJ0?q~A&Z)% zN35X8w{jcRiYF*FcO_{2AKCm!E;oOqzQ*lzfc(tUh-le+dE zYl?JcBNl)-H>}}R0b#esnP<1gnFpHNw5Fm4mi6Eb0xXMZd@ZZYF0_Tq>~Yz!#D;k# zy4(tUwPLswhD!)%isWpK)aFRG9!1#_vpsj*rt$bolGskTJv;MUZI`!^+WBoU zduk_Mppr3bl{&4`l&3S89DTB^(roKcb)@EO`TJN*bXk?sNRyWkfawbiys~Ry?JVLC zz}*}M@_8UY-ds`X$)M$pwLmY&B5G(;5K4fbfV)!xg`F^R*MciKu%zCilOk%bon`ab z{#bH@Mu&69k9v;WQS%1;$7KNjf`>tnsWVT@r5f;Csi26?$tvg?j3FM_1*C}741i$< zfdOa37m|NB3?yxbXzyO)Byw+7*}3?NQ^9|1zmjPpZ<)oXvb~T^@BaA^_3!=(-kA{xl-tk&zGoX?U>eAT)zAI`LOa$ z;_vV0i*Wq^X+M9!wlc#t2`Pu&&)?gWfRDJnjZj0b2fp_PqX+x>6}Ze!e*R8K6OLPs zO_c<$|FNI%&pmg^V3F2{{VjsK$KUt(`yPKECYe0`zHMxAd0!12OOL-#fU$enPA->Y z&cNgEd;EQmzt0aKHs`|Q?*kBj5r5xwekD3R87385T`9updi?A?R|*9_w;N5Hf2Q@7 z_?6teKAsi!cbV6hAt}6_W`HkI>WSR_{eH6c^ncv%uUOykX`6okzKEmbfJZ*~?&U#$ zSF8{Ib3;Szl?VR)MKt_z9R4aAe4$VH!y1AwtkifT!BuD;lC8In3J!LMCw(fq@s3q^ zJ0GFDh|0d*Y^9n<+(ocFH?G-=#TshFwg+=RScPA_wXhFQ6%1Ky^-7uz*53j?pmqKku4bHrGWR@ zc6R}LGzY5T2s~)RGk4uBt6(?&9!+>7feOM%;{%UhB}y}%<|DMCh|J0ObL(oD3-9J) zKsiGK;E6p1{siy~hA(b#3n2CXC&lA}`oY%(0ysOhuPfFjtKjytC+=9At)iy+%E@0h zSzD~)mIdP`DA~)+KzlDP8~yNvibt=tSnpaTFBO)Q0c(R4qyl?)JmFqTd-SN(WGY}54 zwlrM4bos}he*Wdk)oab1&9@$_nf>C%*WcRt&i*4eiOuIqMro%nT)JxgmP^FuqeDke zp0Q}z>I=l?U3p`4Pb~U^*t{lxto}n{^Spws#O9VgHk)tHJFDmrF0S07ponC3mSLA^nn&NJ2sqswiCUHp!7|?A;{+8z7>BN)eHw zQbZ8(1sg?dfG8G3L7Mdi5dlREVgRMw_ss0I9Px;s_`bZq-|c00=PC2d%zvIKJDb_` zg34+{A@<H9ECiQEpPw4cd~a3|&2Sc#V2$qdG$qm762UYRPQToAk6rC2P^^4Cc(1 z>?oDSSW9O@7_;S3GNNK>%#O;(0@;}IN}1Bg(6ZEoN2Yei|xq)l^xY!v6wRD^5*8|gy!S~BU3L= z%*e>VW|ETPK_lKg#b8mj#2d_gStAZRg|u1CXiXNa(ICTiRkcQ|B|9n#C*(Zr<Kq_qh8*kGRYGY6mq9!h?oVKWGWe2Wic`}Mx!o=EqP^w(PA_=7)>%|b(*Z- zXstnGY&Q4Ll6$JV(sx;+3sn|62k=RWSER%z4X(lXBxR;5;uWcx3Wb{yR@1{qIn;$l zWl?ox1>z^WTWP23X~(G1)=lY@6_=*nMwT3d>;^iiQH+-d|3;OeQ9J9xWMy=u$~9^^ zt)um{!D5E`NNisp8g*u!k#hcV4HQ%tnHiZ&aqjG8WL0vueC(a+ z$WDS*tH~@*Nl#8IDo9C5RTdQ`Cnn~n<>wct5@G0%V0owG~5e zH>&}&`H70+Q76=S9`^4U=i=-vAP))J0GYA{o!#(tNh#ytbA$&$C@y0YaNO?!Q% z-56cgwp-Lcx8K}A8@%-_tSO@P=SIxNI!m*Pq4Vp(4{p@qu@>7$@ifi$7CP-ePyuFD z)8B*t#%<~b#21gW!%hwtAIDts)sFKA|8NvCw*{v$HznJgUbUD z@1zed@A!B~eQK)jPaxV+=zA@#xK0f=|f2bXtzJfuFjJOJ@d z`rz`8kB8I;mj@u;NgrI^@$r!Q;PL>(JL!YVJ3by#A6y=Qcqe^udB?{?>VwMz5bvZ9 zF7NnwNPTd50OFnW!Q~wv52+6>4?w(=KDfN&<019Iv;_^ugsF9}lSyE)PJwlV0JHxVA6S2H3OM44V_l?#4{KyODYnE_nANyHnE7 z#Apqc3aiCrwE$BHCsOK|YT97cJHq%5|G%%q_u+b(tfpv84Fsc+5~+{@8R3+nQgjWFTA#S1rgah<4IOR0ljAaAYV6Dd3lits+!vu+WY)aTxQ4GA0?mmzxT7wXk&% zhXYA|tFC62NMdqo14Ut0fzD#E7fD)c)#@x-12G9AG0|3* zj~#|c%?!c%oOrmnY9_?3W-7?OOf$&4U`?gTVsI23YO9uU5>@r)awnl=3`!Sau(*h_ zTAkS`8D4K`auP*)U7?eJig1}OP&d}wfgr_m`UKftTcwf7G)8M}p7AKoAvuOJhU<6* zy6g1{7){McgQd7{l@9x$^C-}1WF7IV%sLC|HhLNG2=m zE6onK!eOiocjC%rbRBEPBiS0*l-g0U)oLBfuVmDDW1YzcsTrebG;ABI#4Sl{sCU2@ zfCW{MrvjtJV$|!5hI)G>sY8OZ;KuiN@T;`-4ekOzhXC^C)W@E~{h62yLM3pg;Ag)R zuZktI0DGcv%bf*Z)%mhrpg8Od6~@+|S}-3t$JhL1Xr4^J+^X$VfJELveZ| zFg?5(6}Y?}r+}(lPK~oBFvIR++B`~EhMOhTE*(CR0XqavAt6c&-O>`)Ge)ba9ZO&& zJ7gU_Zc#P1&Te@H8~!S*#W<8U&N1)PKYE<>@v;x#L#G_j*rRI{F@-j!~CvvdcDT^D7%+!3Hw%#!| z1+s-Naj>D}LJeJ~vXahN+(a{$4%A0E*zMK*YU{~fK{s%NS^EV;odSr0h8qnSYq7;> zg2{)OcJJ*ZI_MU!<4S8uH+mi4530SvQ=PQRemEf*wZWZpTS=I0S%HKNJ*BjyOlvT5 zz&Z6W(%~(NW5$k?3HO5gi=owlqpQ?rQ+ahUp6(#nz9_@{7+Fi?3UzYf5ZfPq9$!)^ zlex({6AV_H7#Q-XN>EPLz!w-GJQKpYW{U~)ajwH^8*!L}n_L(J8H8|G9Ij`>gNP0r z&ck7i-T)5H!Fe`m^co!A1>uL9tl06nWe}d#q@|l7d;r4HI;&m_Vch42>1h=-Mjpm2 z+Cr-vAgq9}l&PtLF_V{tkVsnZ7Or&*TfhTB7b%UVDWpzh{nY(s@cD^!Sqa^&qb-*B zO8BaViqXI~FZ3prVG2TQnQ<%>a@`(L!e%dCg>HJ@g1By3`S}r~&ZvkzE}ko8~hSV1-lybLBp zP~8TNmV8-6YiPF%*v-QKGn$(P9Ay0(0->v~p|A-FDCpBL#Qk{>;)VJl?)YawLOJWL zOgsu^^azdaeUkNi2!otl+g&(wf#jIAWLQATsv4Qv$~3VmJbdFL2?|7Es2l2q`l5a? zpGiW4(GZk}ir}%R0@a|g=uV_Y4M-1^-}3{wjs-L zP*&=0>V9etwSZbmt)$jbFH^5mJE#w-ebg7!G3qq+EA^@9^ozJJDU9eAZT+k*I3cCph3bTb3LY2@WoF!Z$d{Ow0aKG?`@RG<+)LWD! zDi)0s8ALNgi$pJo-WKf_ofKUb2Z>|Enc@nuMm$A4SG-!hP5i0&g!r-~SQ016mefcl zNv2B{OEyT}lYA{X@8{aOMV~t9rOEL8X_GaRZ7Q8t@>0Bs?X2RCr7H zvhcUUk4A7KVk1f;bP;nSUWqsq@kf`QUGlroT^{bTq09a*7rXZ8n%9-?I=kz}t_QpR z(M{H^s9R&V`Q5g3`=&du`+)8vx;J-!ru%!{&-4iEF{FpO$Lt=j^!PH86FDHVD)O$# zXCwDSw)O1Qb7)Uf&m}$I?RlnGM6bMFlX@-e^>(k*y+eEF^w#!X*!!K{Kgz;o`7)hs zv22&DwNGT9l0McxEBoy2b2%z5YGl-msEtwI^p*5Y?_1Y*Vc(s7TcdkNmq*_ny*~QO z7;#K`Ohe3*F}q_f#>T~tj(sq8OYEt*u5qPtQ{&dhecjK$Uv9t2{Z{om&|lC$y? zr~7|4fHNR{w6y5k;;7>K z;`PO?LsN&|HFSFkzhqd+{F1|^JxkT4>q=X18+_Y6x9u7x9acST>9Ft029z;n+sZlR zx0OF${`K&f;fCQ`Do{mf#p4y0G}Uzm7BRiRp?YO5`+eX6!q ztyDj${z;RkS*STpXVVMllXcm33+hhQXV*Vof4U*JVNt^wtx~&Gdu~$6q~((?HdZvQ zZM5k|>o)2|`ic724Izd`!!BblV~cU0X`pGA>FDIl$xlpfWri_p%#`^K^Hxh3Os4i& z`&l2b9&5^JTGn)_c~tYOEx|2@mOWDjOnG?9$*ILtpSz29m-?=qclWt_`rXIw$-igi zz0|$6_wKx}?|n1xJ27qOwCATwrZ-OiWQJnKf*HTvKl=V{GkeaQHuLxcLmyZ_D_|Bg z>+pj^9$fwq?;-6&dmm1Ic*(=pW@~1DG)FOK(VQ!fs2}<0(Zoj=KWcld?yoT@t-y z-jXXz8-y6#j(_p9e--{~ z>xTFZD>p`LobwWT$@duQr9ZQD)T&+Mq*aeU{5onO5> z=G_CkM(o=A-mv#Rc)$4lcX#LSe&>Vi58nJR^TXFaO8;of$7vsL-jlj#(f=9sZ~p$uiJ3q6 z|FGy}@006JC7pWnbn)rWe!Tt16F-@Lx_oBV&%r-Gb++Hx*M7D}!Kp-D5oJ4K`x!~e=g=l7%YiaoR!JRQ++m3=oka;PWib9-ViW^MXzJcd|%C?KjgT3URm&VGyEt6qm!}@Pz^qpDRrUVKA51CnS-dKSC86HFWO-^BE>{AM37F4$$JEu0MMyz_}{@B9DYcxeWpS7fQ*+23-`qx)yzWcfL z`1#_vg{vQU?TK9nzW?pHP468%(Kf2CY1X1Oo8Le5!-c^^N7pw$_~hCxyAPkd7>qa^ z$SsfLNhsi_k}UK|4BMRFIM;n(!fT~14`t5~9+_}qZpHbG zZ@!;1$B=xa=*5X<-h#XXva4%0PH0~J?_rO=F|_xa3zplyV4r9E5a>t3mBP*zi1LvJ z7O88=DtjeNI*qVUZG^RM95R7M=nXXRI({`u!v@(Dq9BNG%cB#c|kya%;pDGA424d-V_a%CDqu+nJ1 zd;M4-!e0Q)RHWb!BjPUr;txfE3$CDCd0WA8+Lx~2I>Wdv;zK~e)E4d(USo5WgX-lf z2NmmH4i4q8K_zfpwuv#gz?uTVf!uLF5V(SfF6mVUZE008UaUTY`T2%Iyy&$DPMjB9 zemLxlZ#YLNzqs0cO#~G)rG^fd${ewX4bURXWJA{W$9)e1BONcWIbxB=mtu3fl{843 zabK=R#pYthkv3k0b677^8r<@T%T;A0%ZDPIHa-XjD@ia?U&p{Y1F3trGCRsHJA;sH zJ7QO+Nd$t76!B~}APWeqfM^#G8wJ?50ls8t1BV0%VQqpO{qV|gXHH?6Y6{KB60sef z)qwMceNu?Z;I-Bi@`^}?*MNxJU}iwZ)2XH~gr1_+U>Z&irq#My9j0+5U|MUaYq84- z-Dqeuy3;zdsjeNZ)?xeYa5FdPaT+CXl9hI~)lAk`fKGwag`o(4ToixM5^KUKhFsE2 zjaEsTn2qE;8+nTfA68{+0@e&YYC=G0vl^p>Ylh3x z|6!y*8PHjzaScil|Ihr}b`9ir;4)ymlUXmn1U&4eBK-CP?!j>S+x@1~bs#B(rAC>G zVT{cruT6S$BiLCDC+T}|Z}=yN(?dIuvpwnc0x~M0X{>X)-@&iu*}0x~A|a+g;(jM} z%K8g-KnW@&uW{8#2CbGMzS2x|TrHIN!7blHKPkJJepBC(-#Ffw0dDx+-e2|`alX@S z{v&=v>U|oyBJ4Nhz<0{si*T3cq=^JG+UW!7;WuKK0-0e&&dqD=IxfHA;W)Rx-_&;2 zZwM^*@$|+$dnBvg`JP=g(qJ|+?AtXrv`KG;M#4XWn4uqM$iIVVh}?xVpU`a2jeA8h z%9vDUJV#<{?msJjmC7X}p}@S){RNbb7qB&kB9xCG=tT z*==XXOY)x&w|>93?q>RpZ@ipl@0sj(w;mk(O=reSe;nu5_nS95>o+VQop=($|EfdD z;DV1%&%(uI7LJF^4rV8=S*>H#B)QhP#!Rx#sJo@c%)K`qS?qeZ)H9~=))+It?<~@P zY0UIJW0DrkwzR+Yj4Arx==(0+OuuoCneKBf-!mpzN$l*HDgK}Eo4wM``VHHFIy+|m z^=C}H0>KWM?yZ!4#&kT<+eb{&Q@h4XiCfQoYdmA_?d2U+csJzz*JktngLRS{SqN|Q z`nx48us(%XeQs2mzmLb+Hm|=<g&V$)S7j4ucfQb9@ z?>5fMTx3I(-~P)s?tXatd<{{N$FJI`1q%a0P=YIcT#Tlw5@%T7K1rR$K+N z(VdrVXu>sI2mRZi4%*Io_2_O!?Eo0r$u9t;nUi*p8j`Ty_X|9>?VPtpJY literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.black-ice.css b/vendor/FHC-vendor/jquery-tablesorter/css/theme.black-ice.css new file mode 100644 index 000000000..1bf253d05 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.black-ice.css @@ -0,0 +1,192 @@ +/************* + Black Ice Theme (by thezoggy) + *************/ +/* overall */ +.tablesorter-blackice { + width: 100%; + margin-right: auto; + margin-left: auto; + font: 11px/18px Arial, Sans-serif; + text-align: left; + background-color: #000; + border-collapse: collapse; + border-spacing: 0; +} + +/* header */ +.tablesorter-blackice th, +.tablesorter-blackice thead td { + padding: 4px; + font: 13px/20px Arial, Sans-serif; + font-weight: bold; + color: #e5e5e5; + text-align: left; + text-shadow: 0 1px 0 rgba(0, 0, 0, 0.7); + background-color: #111; + border: 1px solid #232323; +} +.tablesorter-blackice .header, +.tablesorter-blackice .tablesorter-header { + padding: 4px 20px 4px 4px; + cursor: pointer; + background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); + background-position: center right; + background-repeat: no-repeat; +} +.tablesorter-blackice .headerSortUp, +.tablesorter-blackice .tablesorter-headerSortUp, +.tablesorter-blackice .tablesorter-headerAsc { + background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); + color: #fff; +} +.tablesorter-blackice .headerSortDown, +.tablesorter-blackice .tablesorter-headerSortDown, +.tablesorter-blackice .tablesorter-headerDesc { + color: #fff; + background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); +} +.tablesorter-blackice thead .sorter-false { + background-image: none; + cursor: default; + padding: 4px; +} + +/* tfoot */ +.tablesorter-blackice tfoot .tablesorter-headerSortUp, +.tablesorter-blackice tfoot .tablesorter-headerSortDown, +.tablesorter-blackice tfoot .tablesorter-headerAsc, +.tablesorter-blackice tfoot .tablesorter-headerDesc { + /* remove sort arrows from footer */ + background-image: none; +} + +/* tbody */ +.tablesorter-blackice td { + padding: 4px; + color: #ccc; + vertical-align: top; + background-color: #333; + border: 1px solid #232323; +} + +/* hovered row colors */ +.tablesorter-blackice tbody > tr.hover > td, +.tablesorter-blackice tbody > tr:hover > td, +.tablesorter-blackice tbody > tr.even:hover > td, +.tablesorter-blackice tbody > tr.odd:hover > td { + background-color: #000; +} + +/* table processing indicator */ +.tablesorter-blackice .tablesorter-processing { + background-position: center center !important; + background-repeat: no-repeat !important; + /* background-image: url(images/loading.gif) !important; */ + background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; +} + +/* Zebra Widget - row alternating colors */ +.tablesorter-blackice tr.odd > td { + background-color: #333; +} +.tablesorter-blackice tr.even > td { + background-color: #393939; +} + +/* Column Widget - column sort colors */ +.tablesorter-blackice td.primary, +.tablesorter-blackice tr.odd td.primary { + background-color: #2f3a40; +} +.tablesorter-blackice tr.even td.primary { + background-color: #3f4a50; +} +.tablesorter-blackice td.secondary, +.tablesorter-blackice tr.odd td.secondary { + background-color: #3f4a50; +} +.tablesorter-blackice tr.even td.secondary { + background-color: #4f5a60; +} +.tablesorter-blackice td.tertiary, +.tablesorter-blackice tr.odd td.tertiary { + background-color: #4f5a60; +} +.tablesorter-blackice tr.even td.tertiary { + background-color: #5a646b; +} + +/* caption */ +caption { + background-color: #fff; +} + +/* filter widget */ +.tablesorter-blackice .tablesorter-filter-row { + background-color: #222; +} +.tablesorter-blackice .tablesorter-filter-row td { + background-color: #222; + line-height: normal; + text-align: center; /* center the input */ + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* optional disabled input styling */ +.tablesorter-blackice .tablesorter-filter-row .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; +} +/* hidden filter row */ +.tablesorter-blackice .tablesorter-filter-row.hideme td { + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; +} +.tablesorter-blackice .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} +/* filters */ +.tablesorter-blackice input.tablesorter-filter, +.tablesorter-blackice select.tablesorter-filter { + width: 98%; + height: auto; + margin: 0; + padding: 4px; + background-color: #fff; + border: 1px solid #bbb; + color: #333; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +/* rows hidden by filtering (needed for child rows) */ +.tablesorter .filtered { + display: none; +} + +/* ajax error row */ +.tablesorter .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: #e6bf99; +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.blue.css b/vendor/FHC-vendor/jquery-tablesorter/css/theme.blue.css new file mode 100644 index 000000000..66d6e58cf --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.blue.css @@ -0,0 +1,229 @@ +/************* + Blue Theme + *************/ +/* overall */ +.tablesorter-blue { + width: 100%; + background-color: #fff; + margin: 10px 0 15px; + text-align: left; + border-spacing: 0; + border: #cdcdcd 1px solid; + border-width: 1px 0 0 1px; +} +.tablesorter-blue th, +.tablesorter-blue td { + border: #cdcdcd 1px solid; + border-width: 0 1px 1px 0; +} + +/* header */ +.tablesorter-blue th, +.tablesorter-blue thead td { + font: 12px/18px Arial, Sans-serif; + font-weight: bold; + color: #000; + background-color: #99bfe6; + border-collapse: collapse; + padding: 4px; + text-shadow: 0 1px 0 rgba(204, 204, 204, 0.7); +} +.tablesorter-blue tbody td, +.tablesorter-blue tfoot th, +.tablesorter-blue tfoot td { + padding: 4px; + vertical-align: top; +} +.tablesorter-blue .header, +.tablesorter-blue .tablesorter-header { + /* black (unsorted) double arrow */ + background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); + /* white (unsorted) double arrow */ + /* background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); */ + /* image */ + /* background-image: url(images/black-unsorted.gif); */ + background-repeat: no-repeat; + background-position: center right; + padding: 4px 18px 4px 4px; + white-space: normal; + cursor: pointer; +} +.tablesorter-blue .headerSortUp, +.tablesorter-blue .tablesorter-headerSortUp, +.tablesorter-blue .tablesorter-headerAsc { + background-color: #9fbfdf; + /* black asc arrow */ + background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); + /* white asc arrow */ + /* background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); */ + /* image */ + /* background-image: url(images/black-asc.gif); */ +} +.tablesorter-blue .headerSortDown, +.tablesorter-blue .tablesorter-headerSortDown, +.tablesorter-blue .tablesorter-headerDesc { + background-color: #8cb3d9; + /* black desc arrow */ + background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); + /* white desc arrow */ + /* background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); */ + /* image */ + /* background-image: url(images/black-desc.gif); */ +} +.tablesorter-blue thead .sorter-false { + background-image: none; + cursor: default; + padding: 4px; +} + +/* tfoot */ +.tablesorter-blue tfoot .tablesorter-headerSortUp, +.tablesorter-blue tfoot .tablesorter-headerSortDown, +.tablesorter-blue tfoot .tablesorter-headerAsc, +.tablesorter-blue tfoot .tablesorter-headerDesc { + /* remove sort arrows from footer */ + background-image: none; +} + +/* tbody */ +.tablesorter-blue td { + color: #3d3d3d; + background-color: #fff; + padding: 4px; + vertical-align: top; +} + +/* hovered row colors + you'll need to add additional lines for + rows with more than 2 child rows + */ +.tablesorter-blue tbody > tr.hover > td, +.tablesorter-blue tbody > tr:hover > td, +.tablesorter-blue tbody > tr:hover + tr.tablesorter-childRow > td, +.tablesorter-blue tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td, +.tablesorter-blue tbody > tr.even.hover > td, +.tablesorter-blue tbody > tr.even:hover > td, +.tablesorter-blue tbody > tr.even:hover + tr.tablesorter-childRow > td, +.tablesorter-blue tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + background-color: #d9d9d9; +} +.tablesorter-blue tbody > tr.odd.hover > td, +.tablesorter-blue tbody > tr.odd:hover > td, +.tablesorter-blue tbody > tr.odd:hover + tr.tablesorter-childRow > td, +.tablesorter-blue tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + background-color: #bfbfbf; +} + +/* table processing indicator */ +.tablesorter-blue .tablesorter-processing { + background-position: center center !important; + background-repeat: no-repeat !important; + /* background-image: url(images/loading.gif) !important; */ + background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; +} + +/* Zebra Widget - row alternating colors */ +.tablesorter-blue tbody tr.odd > td { + background-color: #ebf2fa; +} +.tablesorter-blue tbody tr.even > td { + background-color: #fff; +} + +/* Column Widget - column sort colors */ +.tablesorter-blue td.primary, +.tablesorter-blue tr.odd td.primary { + background-color: #99b3e6; +} +.tablesorter-blue tr.even td.primary { + background-color: #c2d1f0; +} +.tablesorter-blue td.secondary, +.tablesorter-blue tr.odd td.secondary { + background-color: #c2d1f0; +} +.tablesorter-blue tr.even td.secondary { + background-color: #d6e0f5; +} +.tablesorter-blue td.tertiary, +.tablesorter-blue tr.odd td.tertiary { + background-color: #d6e0f5; +} +.tablesorter-blue tr.even td.tertiary { + background-color: #ebf0fa; +} + +/* caption */ +caption { + background-color: #fff; +} + +/* filter widget */ +.tablesorter-blue .tablesorter-filter-row { + background-color: #eee; +} +.tablesorter-blue .tablesorter-filter-row td { + background-color: #eee; + line-height: normal; + text-align: center; /* center the input */ + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* optional disabled input styling */ +.tablesorter-blue .tablesorter-filter-row .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; +} +/* hidden filter row */ +.tablesorter-blue .tablesorter-filter-row.hideme td { + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; +} +.tablesorter-blue .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} +/* filters */ +.tablesorter-blue input.tablesorter-filter, +.tablesorter-blue select.tablesorter-filter { + width: 98%; + height: auto; + margin: 0; + padding: 4px; + background-color: #fff; + border: 1px solid #bbb; + color: #333; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +/* rows hidden by filtering (needed for child rows) */ +.tablesorter .filtered { + display: none; +} + +/* ajax error row */ +.tablesorter .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: #e6bf99; +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.bootstrap.css b/vendor/FHC-vendor/jquery-tablesorter/css/theme.bootstrap.css new file mode 100644 index 000000000..11a3ea7a6 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.bootstrap.css @@ -0,0 +1,158 @@ +/************* + Bootstrap theme + *************/ +/* jQuery Bootstrap Theme */ +.tablesorter-bootstrap { + width: 100%; +} +.tablesorter-bootstrap thead th, +.tablesorter-bootstrap thead td, +.tablesorter-bootstrap tfoot th, +.tablesorter-bootstrap tfoot td { + font: 14px/20px Arial, Sans-serif; + font-weight: bold; + padding: 4px; + margin: 0 0 18px; + background-color: #eee; +} + +.tablesorter-bootstrap .tablesorter-header { + cursor: pointer; +} + +.tablesorter-bootstrap .tablesorter-header-inner { + position: relative; + padding: 4px 18px 4px 4px; +} + +/* bootstrap uses for icons */ +.tablesorter-bootstrap .tablesorter-header i.tablesorter-icon { + font-size: 11px; + position: absolute; + right: 2px; + top: 50%; + margin-top: -7px; /* half the icon height; older IE doesn't like this */ + width: 14px; + height: 14px; + background-repeat: no-repeat; + line-height: 14px; + display: inline-block; +} + +/* black unsorted icon */ +.tablesorter-bootstrap .bootstrap-icon-unsorted { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAMAAADOvxanAAAAVFBMVEUAAABCQkJZWVkZGRnJyckgICAZGRkZGRn8/PweHh4dHR0aGhoaGhpUVFQbGxvQ0NDc3NxMTExSUlIbGxvr6+s4ODhKSkogICAtLS00NDQzMzMnJydSEPrQAAAAGHRSTlMA1ssZRLgdAQbDyisqsZo8QdXUq0r9xPepSRwiAAAAX0lEQVQI13XHSQKAIAwEwQAKxn13Ev7/T2Pu9qmarJKPXIicI4PH4hxaKNrhm2S8bJK5h4YzKHrzJNtK6yYT/TdXzpS5zuYg4MSQYF6i4IHExdw1UVRi05HPrrvT53a+qyMFC9t04gcAAAAASUVORK5CYII=); +} + +/* white unsorted icon */ +.tablesorter-bootstrap .icon-white.bootstrap-icon-unsorted { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOBAMAAAALT/umAAAAKlBMVEUAAAD///////////////////////////////////////////////////+Gu8ovAAAADXRSTlMA4EXKBtQqvR0+sxmalc142gAAAFdJREFUCNdjYGDoamAAAjZbMxCVfvd6AgMDd+3du9UMDKx3hWSvMjBwXZww8RYDGuC53NB8h4GB8a617UUGBs7Yu3cjGRhYVO9eVQFKOskKOQApFmUgBwBZ+xXRTttNdAAAAABJRU5ErkJggg==); +} + +/* since bootstrap (table-striped) uses nth-child(), we just use this to add a zebra stripe color */ +.tablesorter-bootstrap > tbody > tr.odd > td, +.tablesorter-bootstrap > tbody > tr.tablesorter-hasChildRow.odd:hover ~ tr.tablesorter-hasChildRow.odd ~ .tablesorter-childRow.odd > td { + background-color: #f9f9f9; +} +.tablesorter-bootstrap > tbody > tr.hover > td, +.tablesorter-bootstrap > tbody > tr.odd:hover > td, +.tablesorter-bootstrap > tbody > tr.even:hover > td, +.tablesorter-bootstrap > tbody > tr.tablesorter-hasChildRow.odd:hover ~ .tablesorter-childRow.odd > td, +.tablesorter-bootstrap > tbody > tr.tablesorter-hasChildRow.even:hover ~ .tablesorter-childRow.even > td { + background-color: #f5f5f5; +} +.tablesorter-bootstrap > tbody > tr.even > td, +.tablesorter-bootstrap > tbody > tr.tablesorter-hasChildRow.even:hover ~ tr.tablesorter-hasChildRow.even ~ .tablesorter-childRow.even > td { + background-color: #fff; +} + +/* processing icon */ +.tablesorter-bootstrap .tablesorter-processing { + background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs='); + background-position: center center !important; + background-repeat: no-repeat !important; +} + +/* caption */ +.caption { + background-color: #fff; +} + +/* filter widget */ +.tablesorter-bootstrap .tablesorter-filter-row input.tablesorter-filter, +.tablesorter-bootstrap .tablesorter-filter-row select.tablesorter-filter { + width: 98%; + margin: 0; + padding: 4px 6px; + color: #333; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter.disabled { + background-color: #eee; + color: #555; + cursor: not-allowed; + border: 1px solid #ccc; + border-radius: 4px; + box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.075) inset; + box-sizing: border-box; + transition: height 0.1s ease; +} +.tablesorter-bootstrap .tablesorter-filter-row { + background-color: #efefef; +} +.tablesorter-bootstrap .tablesorter-filter-row td { + background-color: #efefef; + line-height: normal; + text-align: center; + padding: 4px 6px; + vertical-align: middle; + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* hidden filter row */ +.tablesorter-bootstrap .tablesorter-filter-row.hideme td { + padding: 2px; /* change this to modify the thickness of the closed border row */ + margin: 0; + line-height: 0; +} +.tablesorter-bootstrap .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} +/* rows hidden by filtering (needed for child rows) */ +.tablesorter .filtered { + display: none; +} + +/* pager plugin */ +.tablesorter-bootstrap .tablesorter-pager select { + padding: 4px 6px; +} +.tablesorter-bootstrap .tablesorter-pager .pagedisplay { + border: 0; +} +/* tfoot i for pager controls */ +.tablesorter-bootstrap tfoot i { + font-size: 11px; +} + +/* ajax error row */ +.tablesorter .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: #e6bf99; +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.bootstrap_2.css b/vendor/FHC-vendor/jquery-tablesorter/css/theme.bootstrap_2.css new file mode 100644 index 000000000..fe0665bf2 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.bootstrap_2.css @@ -0,0 +1,157 @@ +/************* + Bootstrap 2 Theme + *************/ +/* jQuery Bootstrap 2 Theme */ +.tablesorter-bootstrap { + width: 100%; +} +.tablesorter-bootstrap .tablesorter-header, +.tablesorter-bootstrap tfoot th, +.tablesorter-bootstrap tfoot td { + font: 14px/20px Arial, Sans-serif; + font-weight: bold; + position: relative; + padding: 8px; + margin: 0 0 18px; + list-style: none; + background-color: #FBFBFB; + background-image: -moz-linear-gradient(top, white, #efefef); + background-image: -ms-linear-gradient(top, white, #efefef); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(white), to(#efefef)); + background-image: -webkit-linear-gradient(top, white, #efefef); + background-image: -o-linear-gradient(top, white, #efefef); + background-image: linear-gradient(to bottom, white, #efefef); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#efefef', GradientType=0); + background-repeat: repeat-x; + -webkit-box-shadow: inset 0 1px 0 white; + -moz-box-shadow: inset 0 1px 0 #ffffff; + box-shadow: inset 0 1px 0 white; +} + +.tablesorter-bootstrap .tablesorter-header { + cursor: pointer; +} + +.tablesorter-bootstrap .tablesorter-header-inner { + position: relative; + padding: 4px 18px 4px 4px; +} + +/* bootstrap uses for icons */ +.tablesorter-bootstrap .tablesorter-header i.tablesorter-icon { + position: absolute; + right: 2px; + top: 50%; + margin-top: -7px; /* half the icon height; older IE doesn't like this */ + width: 14px; + height: 14px; + background-repeat: no-repeat; + line-height: 14px; + display: inline-block; +} + +/* black unsorted icon */ +.tablesorter-bootstrap .bootstrap-icon-unsorted { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWVJREFUeNqUUL9Lw2AUTGP8mqGlpBQkNeCSRcckEBcHq1jImMElToKuDvpHFMGhU0BQcHBwLji6CE1B4uB/INQsDi4d2jQ/fPeZxo764OV6915f7lLJ81xot9tCURXqdVEUr7IsO6ffH9Q5BlEUCaLwWxWqTcbYnaIoh0Dw4gAvcWlxq1qt9hqNxg6hUGAP+uIPUrGs0qXLer2+v/pTX6QpxLtkc2U2m53ACb8sSdIDXerSEms2m6+DweAICA4d89KGbduf9MpEVdXQ9/2LVqv1CASHjjn3iq/x1xKFfxQPqGnada1W86bT6SiO42OS3qk3KPStLMvbk8nkfjwen/LLuq6blFymMB0KdUPSGhAcOualjX6/f0bCiC7NaWGPQr0BwaFjzn0gYJqmLAiCA8/zni3LmhuGkQPBoWPOPwQeaPIqD4fDruu6L6Zp5kBw6IudchmdJAkLw3DXcZwnIPjy/FuAAQCiqqWWCAFKcwAAAABJRU5ErkJggg==); +} + +/* white unsorted icon */ +.tablesorter-bootstrap .icon-white.bootstrap-icon-unsorted { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOBAMAAAALT/umAAAAKlBMVEUAAAD///////////////////////////////////////////////////+Gu8ovAAAADXRSTlMA4EXKBtQqvR0+sxmalc142gAAAFdJREFUCNdjYGDoamAAAjZbMxCVfvd6AgMDd+3du9UMDKx3hWSvMjBwXZww8RYDGuC53NB8h4GB8a617UUGBs7Yu3cjGRhYVO9eVQFKOskKOQApFmUgBwBZ+xXRTttNdAAAAABJRU5ErkJggg==); +} + +/* since bootstrap (table-striped) uses nth-child(), we just use this to add a zebra stripe color */ +.tablesorter-bootstrap tr.odd > td { + background-color: #f9f9f9; +} +.tablesorter-bootstrap tbody > tr.hover > td, +.tablesorter-bootstrap tbody > .odd:hover > td, +.tablesorter-bootstrap tbody > .even:hover > td { + background-color: #f5f5f5; +} +.tablesorter-bootstrap tbody > tr.even > td { + background-color: #fff; +} + +/* processing icon */ +.tablesorter-bootstrap .tablesorter-processing { + background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs='); + position: absolute; + z-index: 1000; +} + +/* caption */ +caption { + background-color: #fff; +} + +/* filter widget */ +.tablesorter-bootstrap .tablesorter-filter-row input.tablesorter-filter, +.tablesorter-bootstrap .tablesorter-filter-row select.tablesorter-filter { + height: 28px; + width: 98%; + margin: 0; + padding: 4px 6px; + background-color: #fff; + color: #333; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter.disabled { + background-color: #eee; + cursor: not-allowed; +} +.tablesorter-bootstrap .tablesorter-filter-row { + background-color: #ddd; +} +.tablesorter-bootstrap .tablesorter-filter-row td { + background-color: #eee; + line-height: normal; + text-align: center; + padding: 4px 6px; + vertical-align: middle; + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* hidden filter row */ +.tablesorter-bootstrap tr.tablesorter-filter-row.hideme td { + padding: 2px; /* change this to modify the thickness of the closed border row */ + margin: 0; + line-height: 0; +} +.tablesorter-bootstrap tr.tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} +/* rows hidden by filtering (needed for child rows) */ +.tablesorter .filtered { + display: none; +} + +/* pager plugin */ +.tablesorter-bootstrap .tablesorter-pager select { + padding: 4px 6px; +} +.tablesorter-bootstrap .tablesorter-pager .pagedisplay { + border: 0; +} + +/* ajax error row */ +.tablesorter .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: #e6bf99; +} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.dark.css b/vendor/FHC-vendor/jquery-tablesorter/css/theme.dark.css new file mode 100644 index 000000000..3ddbf61fe --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.dark.css @@ -0,0 +1,193 @@ +/************* + Dark Theme (by thezoggy) + *************/ +/* overall */ +.tablesorter-dark { + width: 100%; + font: 11px/18px Arial, Sans-serif; + color: #ccc; + text-align: left; + background-color: #000; + border-spacing: 0; +} + +/* header */ +.tablesorter-dark th, +.tablesorter-dark thead td { + padding: 4px; + font: 12px/20px Arial, Sans-serif; + font-weight: bold; + color: #fff; + background-color: #000; + border-collapse: collapse; +} +.tablesorter-dark thead th { + border-bottom: #333 2px solid; +} +.tablesorter-dark .header, +.tablesorter-dark .tablesorter-header { + padding: 4px 20px 4px 4px; + cursor: pointer; + background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); + background-position: center right; + background-repeat: no-repeat; +} +.tablesorter-dark thead .headerSortUp, +.tablesorter-dark thead .tablesorter-headerSortUp, +.tablesorter-dark thead .tablesorter-headerAsc { + background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); + border-bottom: #888 1px solid; +} +.tablesorter-dark thead .headerSortDown, +.tablesorter-dark thead .tablesorter-headerSortDown, +.tablesorter-dark thead .tablesorter-headerDesc { + background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); + border-bottom: #888 1px solid; +} +.tablesorter-dark thead .sorter-false { + background-image: none; + cursor: default; + padding: 4px; +} + +/* tfoot */ +.tablesorter-dark tfoot .tablesorter-headerSortUp, +.tablesorter-dark tfoot .tablesorter-headerSortDown, +.tablesorter-dark tfoot .tablesorter-headerAsc, +.tablesorter-dark tfoot .tablesorter-headerDesc { + border-top: #888 1px solid; + /* remove sort arrows from footer */ + background-image: none; +} + +/* tbody */ +.tablesorter-dark td { + padding: 4px; + background-color: #000; + border-bottom: #333 1px solid; + color: #ccc; +} + +/* hovered row colors */ +.tablesorter-dark tbody > tr.hover > td, +.tablesorter-dark tbody > tr:hover > td, +.tablesorter-dark tbody > tr.even:hover > td, +.tablesorter-dark tbody > tr.odd:hover > td { + background-color: #000; +} + +/* table processing indicator */ +.tablesorter-dark .tablesorter-processing { + background-position: center center !important; + background-repeat: no-repeat !important; + /* background-image: url(images/loading.gif) !important; */ + background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; +} + +/* Zebra Widget - row alternating colors */ +.tablesorter-dark tr.odd > td { + background-color: #202020; +} +.tablesorter-dark tr.even > td { + background-color: #101010; +} + +/* Column Widget - column sort colors */ +.tablesorter-dark td.primary, +.tablesorter-dark tr.odd td.primary { + background-color: #0a0a0a; +} +.tablesorter-dark tr.even td.primary { + background-color: #050505; +} +.tablesorter-dark td.secondary, +.tablesorter-dark tr.odd td.secondary { + background-color: #0f0f0f; +} +.tablesorter-dark tr.even td.secondary { + background-color: #0a0a0a; +} +.tablesorter-dark td.tertiary, +.tablesorter-dark tr.odd td.tertiary { + background-color: #191919; +} +.tablesorter-dark tr.even td.tertiary { + background-color: #0f0f0f; +} + +/* caption */ +caption { + background-color: #202020; +} + +/* filter widget */ +.tablesorter-dark .tablesorter-filter-row { + background-color: #202020; +} +.tablesorter-dark .tablesorter-filter-row td { + background-color: #202020; + line-height: normal; + text-align: center; /* center the input */ + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* optional disabled input styling */ +.tablesorter-dark .tablesorter-filter-row .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; +} + +/* hidden filter row */ +.tablesorter-dark .tablesorter-filter-row.hideme td { + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; +} +.tablesorter-dark .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} + +/* filters */ +.tablesorter-dark input.tablesorter-filter, +.tablesorter-dark select.tablesorter-filter { + width: 98%; + height: auto; + margin: 0; + padding: 4px; + background-color: #111; + border: 1px solid #222; + color: #ddd; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +/* rows hidden by filtering (needed for child rows) */ +.tablesorter .filtered { + display: none; +} + +/* ajax error row */ +.tablesorter .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: #e6bf99; +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.default.css b/vendor/FHC-vendor/jquery-tablesorter/css/theme.default.css new file mode 100644 index 000000000..6c2a34621 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.default.css @@ -0,0 +1,194 @@ +/************* +Default Theme +*************/ +/* overall */ +.tablesorter-default { + width: 100%; + font: 12px/18px Arial, Sans-serif; + color: #333; + background-color: #fff; + border-spacing: 0; + margin: 10px 0 15px; + text-align: left; +} + +/* header */ +.tablesorter-default th, +.tablesorter-default thead td { + font-weight: bold; + color: #000; + background-color: #fff; + border-collapse: collapse; + border-bottom: #ccc 2px solid; + padding: 0; +} +.tablesorter-default tfoot th, +.tablesorter-default tfoot td { + border: 0; +} +.tablesorter-default .header, +.tablesorter-default .tablesorter-header { + background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); + background-position: center right; + background-repeat: no-repeat; + cursor: pointer; + white-space: normal; + padding: 4px 20px 4px 4px; +} +.tablesorter-default thead .headerSortUp, +.tablesorter-default thead .tablesorter-headerSortUp, +.tablesorter-default thead .tablesorter-headerAsc { + background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); + border-bottom: #000 2px solid; +} +.tablesorter-default thead .headerSortDown, +.tablesorter-default thead .tablesorter-headerSortDown, +.tablesorter-default thead .tablesorter-headerDesc { + background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); + border-bottom: #000 2px solid; +} +.tablesorter-default thead .sorter-false { + background-image: none; + cursor: default; + padding: 4px; +} + +/* tfoot */ +.tablesorter-default tfoot .tablesorter-headerSortUp, +.tablesorter-default tfoot .tablesorter-headerSortDown, +.tablesorter-default tfoot .tablesorter-headerAsc, +.tablesorter-default tfoot .tablesorter-headerDesc { + border-top: #000 2px solid; +} + +/* tbody */ +.tablesorter-default td { + background-color: #fff; + border-bottom: #ccc 1px solid; + padding: 4px; + vertical-align: top; +} + +/* hovered row colors */ +.tablesorter-default tbody > tr.hover > td, +.tablesorter-default tbody > tr:hover > td, +.tablesorter-default tbody > tr.even:hover > td, +.tablesorter-default tbody > tr.odd:hover > td { + background-color: #fff; + color: #000; +} + +/* table processing indicator */ +.tablesorter-default .tablesorter-processing { + background-position: center center !important; + background-repeat: no-repeat !important; + /* background-image: url(images/loading.gif) !important; */ + background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; +} + +/* Zebra Widget - row alternating colors */ +.tablesorter-default tr.odd > td { + background-color: #dfdfdf; +} +.tablesorter-default tr.even > td { + background-color: #efefef; +} + +/* Column Widget - column sort colors */ +.tablesorter-default tr.odd td.primary { + background-color: #bfbfbf; +} +.tablesorter-default td.primary, +.tablesorter-default tr.even td.primary { + background-color: #d9d9d9; +} +.tablesorter-default tr.odd td.secondary { + background-color: #d9d9d9; +} +.tablesorter-default td.secondary, +.tablesorter-default tr.even td.secondary { + background-color: #e6e6e6; +} +.tablesorter-default tr.odd td.tertiary { + background-color: #e6e6e6; +} +.tablesorter-default td.tertiary, +.tablesorter-default tr.even td.tertiary { + background-color: #f2f2f2; +} + +/* caption */ +caption { + background-color: #fff; +} + +/* filter widget */ +.tablesorter-default .tablesorter-filter-row { + background-color: #eee; +} +.tablesorter-default .tablesorter-filter-row td { + background-color: #eee; + border-bottom: #ccc 1px solid; + line-height: normal; + text-align: center; /* center the input */ + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* optional disabled input styling */ +.tablesorter-default .tablesorter-filter-row .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; +} +/* hidden filter row */ +.tablesorter-default .tablesorter-filter-row.hideme td { + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; +} +.tablesorter-default .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} +/* filters */ +.tablesorter-default input.tablesorter-filter, +.tablesorter-default select.tablesorter-filter { + width: 95%; + height: auto; + margin: 4px auto; + padding: 4px; + background-color: #fff; + border: 1px solid #bbb; + color: #333; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +/* rows hidden by filtering (needed for child rows) */ +.tablesorter .filtered { + display: none; +} + +/* ajax error row */ +.tablesorter .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: #e6bf99; +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.dropbox.css b/vendor/FHC-vendor/jquery-tablesorter/css/theme.dropbox.css new file mode 100644 index 000000000..c173032a3 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.dropbox.css @@ -0,0 +1,216 @@ +/************* + Dropbox Theme (by thezoggy) + *************/ +/* overall */ +.tablesorter-dropbox { + width: 100%; + font: 13px/32px "Open Sans","lucida grande","Segoe UI",arial,verdana,"lucida sans unicode",tahoma,sans-serif; + color: #555; + text-align: left; + background-color: #fff; + border-collapse: collapse; + border-top: 1px solid #82cffa; + border-spacing: 0; +} + +/* header */ +.tablesorter-dropbox th, +.tablesorter-dropbox thead td, +.tablesorter-dropbox tfoot th, +.tablesorter-dropbox tfoot td { + background-color: #f0f9ff; + border-color: #82cffa #e7f2fb #96c4ea; + border-style: solid; + border-width: 1px; + padding: 3px 6px; + font-size: 13px; + font-weight: normal; + line-height: 29px; + color: #2281CF; + text-align: left; +} +.tablesorter-dropbox .header, +.tablesorter-dropbox thead tr, +.tablesorter-dropbox .tablesorter-headerRow { + background-color: #f0f9ff; + border-bottom: 1px solid #96c4ea; + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.12), 0 0 0 #000000 inset; + white-space: normal; +} +.tablesorter-dropbox .tablesorter-headerSortUp, +.tablesorter-dropbox .tablesorter-headerSortDown, +.tablesorter-dropbox .tablesorter-headerAsc, +.tablesorter-dropbox .tablesorter-headerDesc { + font-weight: 600; +} +.tablesorter-dropbox .tablesorter-header { + cursor: pointer; +} +.tablesorter-dropbox .tablesorter-header i.tablesorter-icon { + width: 9px; + height: 9px; + padding: 0 10px 0 4px; + display: inline-block; + background-position: center right; + background-repeat: no-repeat; + content: ""; +} +.tablesorter-dropbox .tablesorter-headerSortUp i.tablesorter-icon, +.tablesorter-dropbox .tablesorter-headerAsc i.tablesorter-icon { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALhJREFUeNpi/P//PwMhwILMiexYx8bIxNTy/9+/muUVQb9g4kzIitg4edI4+YRLQTSyOCPMupjerUI8whK3OXgEhH58+fDuy9sXqkuKvd+hmMTOxdvCxS8sxMUvxACiQXwU6+Im7DDg5BNKY+fiY2BmYWMA0SA+SByuiJ2bbzIHrwAzMxsb0AGMDCAaxAeJg+SZ7wtaqfAISfQAdTIwMUM8ywhUyMTEzPD/71+5FXvPLWUkJpwAAgwAZqYvvHStbD4AAAAASUVORK5CYII='); + /* background-image: url(images/dropbox-asc.png); */ +} +.tablesorter-dropbox .tablesorter-headerSortUp:hover i.tablesorter-icon, +.tablesorter-dropbox .tablesorter-headerAsc:hover i.tablesorter-icon { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALVJREFUeNpi/P//PwMhwILMCc+qZGNkYmr5/+9fzcpp7b9g4kzIitjYOdM4uXlLQTSyOCPMuqi8OiEefsHbHFzcQj++fX335eN71WWTmt6hmMTOwdXCycMnBDSJAUSD+CjWxRQ0GHBw86Sxc3AyMDOzMIBoEB8kDlfEzsk1mYOLByjPCnQAIwOIBvFB4iB55rsfmVS4+QV7QNYwMTNDHApUyMTExPDv/z+5Feu3L2UkJpwAAgwA244u+I9CleAAAAAASUVORK5CYII='); + /* background-image: url(images/dropbox-asc-hovered.png); */ +} +.tablesorter-dropbox .tablesorter-headerSortDown i.tablesorter-icon, +.tablesorter-dropbox .tablesorter-headerDesc i.tablesorter-icon { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNpi/P//PwMhwBLdtVGFhZ3zNhMzC4bkv79/GP78/K7KCDIpZ9mVw+xcfDaMTExwBf///WP4+e3TkSlROrZg7UxMLLns3HxnmFnZmGGK/v7+9ff3j2+5YHkQMSlC48Kv719m/f//D2IKkAbxQeJwRSDw4/OHmr+/fr0DqmAA0SA+TA6uaEq0zjugG+r//vkFcks9iA/3HbJvvn18O+vf379yP758mMXAoAAXZyQmnAACDADX316BiTFbMQAAAABJRU5ErkJggg=='); + /* background-image: url(images/dropbox-desc.png); */ +} +.tablesorter-dropbox .tablesorter-headerSortDown:hover i.tablesorter-icon, +.tablesorter-dropbox .tablesorter-headerDesc:hover i.tablesorter-icon { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALNJREFUeNpi/P//PwMhwBJf3uP879e3PUzMzBiS//7+ZWBi43JhBJmU2z7nIzMzEx8jIyNcAUj8799/nyZXpvCzgARYuXjTWBkZVjCzIEz7++cvw+//DGkgNiPMTWVT1l5hZvynDTINbMp/pqtdOcE6IDkmmM5fv3/5//v37z9QBQOIBvFhcnBFEwoj7/5jZFnz9+8fBhAN4sN9h+ybH9++JrGxscr/+vE1CVmckZhwAggwANvlUyq5Dd1wAAAAAElFTkSuQmCC'); + /* background-image: url(images/dropbox-desc-hovered.png); */ +} +.tablesorter-dropbox thead .sorter-false { + cursor: default; +} + +.tablesorter-dropbox thead .sorter-false i.tablesorter-icon, +.tablesorter-dropbox thead .sorter-false:hover i.tablesorter-icon { + background-image: none; + padding: 4px; +} + +/* tbody */ +.tablesorter-dropbox td { + padding: 5px 6px; + line-height: 32px; + color: #555; + text-align: left; + border-top: 1px solid #edf1f5; + border-bottom: 1px solid #edf1f5; +} + +/* hovered row colors */ +.tablesorter-dropbox tbody > tr.hover > td, +.tablesorter-dropbox tbody > tr:hover > td, +.tablesorter-dropbox tbody > tr.even:hover > td, +.tablesorter-dropbox tbody > tr.odd:hover > td { + background-color: rgba(230, 245, 255, 0.3); + border-right: 0; + border-left: 0; + border-color: #c6d8e4; + /* trick to do border-top and bottom colors */ + border-style: double; +} + +/* table processing indicator */ +.tablesorter-dropbox .tablesorter-processing { + background-position: center center !important; + background-repeat: no-repeat !important; + /* background-image: url(images/loading.gif) !important; */ + background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; +} + +/* Zebra Widget - row alternating colors */ +.tablesorter-dropbox tr.odd > td { +} +.tablesorter-dropbox tr.even > td { +} + +/* Column Widget - column sort colors */ +.tablesorter-dropbox td.primary, +.tablesorter-dropbox tr.odd td.primary { +} +.tablesorter-dropbox tr.even td.primary { +} +.tablesorter-dropbox td.secondary, +.tablesorter-dropbox tr.odd td.secondary { +} +.tablesorter-dropbox tr.even td.secondary { +} +.tablesorter-dropbox td.tertiary, +.tablesorter-dropbox tr.odd td.tertiary { +} +.tablesorter-dropbox tr.even td.tertiary { +} + +/* caption */ +caption { + background-color: #fff; +} + +/* Filter Widget */ +.tablesorter-dropbox .tablesorter-filter-row { + background-color: #fff; +} +.tablesorter-dropbox .tablesorter-filter-row td { + background-color: #fff; + line-height: normal; + text-align: center; /* center the input */ + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* optional disabled input styling */ +.tablesorter-dropbox .tablesorter-filter-row .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; +} + +/* hidden filter row */ +.tablesorter-dropbox .tablesorter-filter-row.hideme td { + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; +} +.tablesorter-dropbox .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} + +/* filters */ +.tablesorter-dropbox input.tablesorter-filter, +.tablesorter-dropbox select.tablesorter-filter { + width: 98%; + height: auto; + margin: 0; + background-color: #fff; + border: 1px solid #bbb; + color: #333; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +/* rows hidden by filtering (needed for child rows) */ +.tablesorter .filtered { + display: none; +} + +/* ajax error row */ +.tablesorter .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: #e6bf99; +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.green.css b/vendor/FHC-vendor/jquery-tablesorter/css/theme.green.css new file mode 100644 index 000000000..32a0f3c6f --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.green.css @@ -0,0 +1,212 @@ +/************* + Green Theme + *************/ +/* overall */ +.tablesorter-green { + width: 100%; + text-align: left; + border-spacing: 0; + border: #cdcdcd 1px solid; + border-width: 1px 0 0 1px; +} +.tablesorter-green th, +.tablesorter-green td { + font: 12px/18px Arial, Sans-serif; + border: #cdcdcd 1px solid; + border-width: 0 1px 1px 0; +} + +/* header */ +.tablesorter-green thead tr .tablesorter-header, +.tablesorter-green tfoot tr { + background-position: center center; + background-repeat: repeat-x; + background-image: url(data:image/gif;base64,R0lGODlhAQBkAOYAAN/e39XU1fX19tTU1eXm5uTl5ePk5OLj4+Hi4vX29fT19PP08/Lz8vHy8fDx8O/w7+7v7uzt7Orr6ufo5/T08/Pz8ufn5uLi4eDg39/f3t3d3Nzc29HR0NDQz8/Pzuvq6urp6eno6Ojn5+fm5tfW1tbV1dTT09PS0tLR0dHQ0NDPz/f39/b29vX19fT09PPz8/Ly8vHx8e/v7+7u7u3t7ezs7Ovr6+rq6unp6ejo6Ofn5+bm5uXl5eTk5OPj4+Li4uHh4eDg4N/f397e3t3d3dzc3Nvb29ra2tnZ2djY2NfX19XV1dPT09LS0tHR0dDQ0M/Pz8rKysXFxf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFMALAAAAAABAGQAAAdegCsrLC0tLi+ILi6FCSwsCS0KkhQVDA0OMjM0NTYfICEiIzw9P0AYGUQaG0ZHSEoDTU9Qs08pTk1MSyRJR0VDQT8+PTw7Ojg3NTMyMTAvi4WOhC0vMTI1OT9GTlFSgQA7); + /* background-image: url(images/green-header.gif); */ +} +.tablesorter-green th, +.tablesorter-green thead td { + font-weight: bold; + border-right: #cdcdcd 1px solid; + border-collapse: collapse; + padding: 6px; +} +.tablesorter-green .header, +.tablesorter-green .tablesorter-header-inner { + background-position: 5px center; + background-repeat: no-repeat; + background-image: url(data:image/gif;base64,R0lGODlhEAAQAOYAAA5NDBBYDlWWUzRUM5DVjp7inJ/fnQ1ECiCsGhyYFxqKFRFdDhBXDQxCCiO8HSK2HCCqGh2aGByUFxuPFhqNFhmHFRZ2EhVvERRpEBBVDSS8HiGyHB+mGh6fGRuTFxiAFBd5Eww/Cgs5CRp7Fiu+JRx8GCy/JjHAKyynKCuhJzXCMDbCMDnDMyNuHz3EODy9N0LFPSl7JkvIRjycOFDKS1LKTVPLT1XLUFTCT17OWTBkLmbQYnDTbHXVcXnWdoXago/djGmUZ112XCJEIEdjRf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEUALAAAAAAQABAAAAdlgEWCg4SFhoIvh4cVLECKhCMeJjwFj0UlEwgaMD4Gii0WFAkRHQ47BIY6IQAZDAwBCyAPOJa1toRBGBAwNTY3OT0/AoZCDQoOKi4yNDOKRCIfGycrKZYDBxIkKLZDFxy3RTHgloEAOw==); + /* background-image: url(images/green-unsorted.gif); */ + border-collapse: collapse; + white-space: normal; + cursor: pointer; +} +.tablesorter-green thead .headerSortUp .tablesorter-header-inner, +.tablesorter-green thead .tablesorter-headerSortUp .tablesorter-header-inner, +.tablesorter-green thead .tablesorter-headerAsc .tablesorter-header-inner { + background-image: url(data:image/gif;base64,R0lGODlhEAAQANUAAA5NDBBYDpDVjp7inJ/fnSCsGhyYFxFdDhBXDSO8HSK2HB2aGBuPFhqNFhmHFRZ2EhBVDSS8Hh6fGRuTFxd5Eww/Chp7Fhx8GCy/JjnDMyNuHzy9N0LFPVTCTzBkLmbQYnDTbHnWdo/djP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAAQABAAAAY4wJFwSCwaj8ikcslMbpojR0bEtEwwoIHywihEOCECUvNoGBaSxEdg9FQAEAQicKAoOtC8fs8fBgEAOw==) + /* background-image: url(images/green-asc.gif); */ +} +.tablesorter-green thead .headerSortDown .tablesorter-header-inner, +.tablesorter-green thead .tablesorter-headerSortDown .tablesorter-header-inner, +.tablesorter-green thead .tablesorter-headerDesc .tablesorter-header-inner { + background-image: url(data:image/gif;base64,R0lGODlhEAAQANUAAFWWUzRUMw1EChqKFQxCCiO8HSCqGhyUFxVvERRpECGyHB+mGhiAFAs5CSu+JTHAKyynKCuhJzXCMDbCMD3EOELFPSl7JkvIRjycOFDKS1LKTVPLT1XLUF7OWXXVcYXagmmUZ112XCJEIEdjRf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACQALAAAAAAQABAAAAY4QJJwSCwaj8ikcskkghKGimbD6Xg+AGOIMChIKJcMBjlqMBSPSUQZEBwcEKYIsWiSLPa8fs9HBgEAOw==) + /* background-image: url(images/green-desc.gif); */ +} +.tablesorter-green th.tablesorter-header .tablesorter-header-inner, +.tablesorter-green td.tablesorter-header .tablesorter-header-inner { + padding-left: 23px; +} +.tablesorter-green thead .tablesorter-header.sorter-false .tablesorter-header-inner { + background-image: none; + cursor: default; + padding-left: 6px; +} + +/* tfoot */ +.tablesorter-green tbody td, +.tablesorter-green tfoot th { + padding: 6px; + vertical-align: top; +} + +/* tbody */ +.tablesorter-green td { + color: #3d3d3d; + padding: 6px; +} + +/* hovered row colors + you'll need to add additional lines for + rows with more than 2 child rows + */ +.tablesorter-green tbody > tr.hover > td, +.tablesorter-green tbody > tr:hover > td, +.tablesorter-green tbody > tr:hover + tr.tablesorter-childRow > td, +.tablesorter-green tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td, +.tablesorter-green tbody > tr.even.hover > td, +.tablesorter-green tbody > tr.even:hover > td, +.tablesorter-green tbody > tr.even:hover + tr.tablesorter-childRow > td, +.tablesorter-green tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + background-color: #d9d9d9; +} +.tablesorter-green tbody > tr.odd.hover > td, +.tablesorter-green tbody > tr.odd:hover > td, +.tablesorter-green tbody > tr.odd:hover + tr.tablesorter-childRow > td, +.tablesorter-green tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + background-color: #bfbfbf; +} + +/* table processing indicator */ +.tablesorter-green .tablesorter-processing { + background-position: center center !important; + background-repeat: no-repeat !important; + /* background-image: url(images/loading.gif) !important; */ + background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; +} + +/* Zebra Widget - row alternating colors */ +.tablesorter-green tr.odd > td { + background-color: #ebfaeb; +} +.tablesorter-green tr.even > td { + background-color: #fff; +} + +/* Column Widget - column sort colors */ +.tablesorter-green td.primary, +.tablesorter-green tr.odd td.primary { + background-color: #99e6a6; +} +.tablesorter-green tr.even td.primary { + background-color: #c2f0c9; +} +.tablesorter-green td.secondary, +.tablesorter-green tr.odd td.secondary { + background-color: #c2f0c9; +} +.tablesorter-green tr.even td.secondary { + background-color: #d6f5db; +} +.tablesorter-green td.tertiary, +.tablesorter-green tr.odd td.tertiary { + background-color: #d6f5db; +} +.tablesorter-green tr.even td.tertiary { + background-color: #ebfaed; +} + +/* caption */ +caption { + background-color: #fff; +} + +/* filter widget */ +.tablesorter-green .tablesorter-filter-row { + background-color: #eee; +} +.tablesorter-green .tablesorter-filter-row td { + background-color: #eee; + line-height: normal; + text-align: center; /* center the input */ + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* optional disabled input styling */ +.tablesorter-green .tablesorter-filter-row .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; +} +/* hidden filter row */ +.tablesorter-green .tablesorter-filter-row.hideme td { + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; +} +.tablesorter-green .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} +/* filters */ +.tablesorter-green input.tablesorter-filter, +.tablesorter-green select.tablesorter-filter { + width: 98%; + height: auto; + margin: 0; + padding: 4px; + background-color: #fff; + border: 1px solid #bbb; + color: #333; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +/* rows hidden by filtering (needed for child rows) */ +.tablesorter .filtered { + display: none; +} + +/* ajax error row */ +.tablesorter .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: #e6bf99; +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.grey.css b/vendor/FHC-vendor/jquery-tablesorter/css/theme.grey.css new file mode 100644 index 000000000..fdb3d9b0d --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.grey.css @@ -0,0 +1,252 @@ +/************* + Grey Theme + *************/ +/* overall */ +.tablesorter-grey { + width: 100%; + margin: 10px 0 15px; + text-align: left; + border-spacing: 0; + border-left: #555 1px solid; +} + +/* header */ +.tablesorter-grey th, +.tablesorter-grey thead td { + font: bold 12px/18px Arial, Sans-serif; + color: #c8c8c8; + background-color: #3c3c3c; + background-image: -moz-linear-gradient(top, #555, #3c3c3c); + background-image: -ms-linear-gradient(top, #555, #3c3c3c); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#555), to(#3c3c3c)); + background-image: -webkit-linear-gradient(top, #555, #3c3c3c); + background-image: -o-linear-gradient(top, #555, #3c3c3c); + background-image: linear-gradient(to bottom, #555,#3c3c3c); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#555555', endColorstr='#3c3c3c',GradientType=0 ); + background-repeat: repeat-x; + border-right: #555 1px solid; + text-shadow: 0 1px 0 rgba(128, 128, 128, 0.7); + -webkit-box-shadow: inset 0 1px 0 #222; + -moz-box-shadow: inset 0 1px 0 #222; + box-shadow: inset 0 1px 0 #222; + padding: 4px; +} +.tablesorter-grey .tablesorter-header-inner, +.tablesorter-grey .tablesorter-header-inner { + position: relative; + padding: 4px 15px 4px 4px; +} +.tablesorter-grey .header, +.tablesorter-grey .tablesorter-header { + cursor: pointer; +} +.tablesorter-grey .header i, +.tablesorter-grey .tablesorter-header i.tablesorter-icon { + width: 18px; + height: 10px; + position: absolute; + right: 2px; + top: 50%; + margin-top: -10px; + /* white (unsorted) double arrow */ + background-image: url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); + background-repeat: no-repeat; + background-position: center right; + padding: 4px; + white-space: normal; +} +.tablesorter-grey th.headerSortUp, +.tablesorter-grey th.tablesorter-headerSortUp, +.tablesorter-grey th.headerSortDown, +.tablesorter-grey th.tablesorter-headerSortDown { + color: #ddd; + background-color: #135185; + background-image: -moz-linear-gradient(top, #195c93, #0e4776); + background-image: -ms-linear-gradient(top, #195c93, #0e4776); + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#195c93), to(#0e4776)); + background-image: -webkit-linear-gradient(top, #195c93, #0e4776); + background-image: -o-linear-gradient(top, #195c93, #0e4776); + background-image: linear-gradient(to bottom, #195c93, #0e4776); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#195c93', endColorstr='#0e4776',GradientType=0 ); +} +.tablesorter-grey .headerSortUp i.tablesorter-icon, +.tablesorter-grey .tablesorter-headerSortUp i.tablesorter-icon, +.tablesorter-grey .tablesorter-headerAsc i.tablesorter-icon { + /* white asc arrow */ + background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); +} +.tablesorter-grey .headerSortDown i.tablesorter-icon, +.tablesorter-grey .tablesorter-headerSortDown i.tablesorter-icon, +.tablesorter-grey .tablesorter-headerDesc i.tablesorter-icon { + /* white desc arrow */ + background-image: url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); +} +.tablesorter-grey thead .sorter-false { + cursor: default; +} +.tablesorter-grey thead .sorter-false i.tablesorter-icon { + background-image: none; + padding: 4px; +} + +/* tfoot */ +.tablesorter-grey tbody td, +.tablesorter-grey tfoot th, +.tablesorter-grey tfoot td { + padding: 4px; + vertical-align: top; + border-right: #555 1px solid; +} +.tablesorter-grey tfoot th, +.tablesorter-grey tfoot td { + padding: 8px; +} + +/* tbody */ +.tablesorter-grey td { + color: #eee; + background-color: #6d6d6d; + padding: 4px; + vertical-align: top; +} + +/* hovered row colors + you'll need to add additional lines for + rows with more than 2 child rows + */ +.tablesorter-grey tbody > tr.hover > td, +.tablesorter-grey tbody > tr:hover > td, +.tablesorter-grey tbody > tr:hover + tr.tablesorter-childRow > td, +.tablesorter-grey tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td, +.tablesorter-grey tbody > tr.even.hover > td, +.tablesorter-grey tbody > tr.even:hover > td, +.tablesorter-grey tbody > tr.even:hover + tr.tablesorter-childRow > td, +.tablesorter-grey tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + background-color: #134b78; +} +.tablesorter-grey tbody > tr.odd.hover > td, +.tablesorter-grey tbody > tr.odd:hover > td, +.tablesorter-grey tbody > tr.odd:hover + tr.tablesorter-childRow > td, +.tablesorter-grey tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + background-color: #134b78; +} + +/* table processing indicator */ +.tablesorter-grey .tablesorter-processing { + background-position: center center !important; + background-repeat: no-repeat !important; + /* background-image: url(images/loading.gif) !important; */ + background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; +} + +/* Zebra Widget - row alternating colors */ +.tablesorter-grey tbody tr.odd > td { + background-color: #5e5e5e; +} +.tablesorter-grey tbody tr.even > td { + background-color: #6d6d6d; +} + +/* Column Widget - column sort colors */ +.tablesorter-grey td.primary, +.tablesorter-grey tr.odd td.primary { + color: #ddd; + background-color: #165388; +} +.tablesorter-grey tr.even td.primary { + color: #ddd; + background-color: #195c93; +} +.tablesorter-grey td.secondary, +.tablesorter-grey tr.odd td.secondary { + color: #ddd; + background-color: #185C9A; +} +.tablesorter-grey tr.even td.secondary { + color: #ddd; + background-color: #1D67A5; +} +.tablesorter-grey td.tertiary, +.tablesorter-grey tr.odd td.tertiary { + color: #ddd; + background-color: #1B67AD; +} +.tablesorter-grey tr.even td.tertiary { + color: #ddd; + background-color: #2073B7; +} + +/* caption */ +caption { + background-color: #fff; +} + +/* filter widget */ +.tablesorter-grey .tablesorter-filter-row { + background-color: #3c3c3c; +} +.tablesorter-grey .tablesorter-filter-row td { + background-color: #3c3c3c; + line-height: normal; + text-align: center; /* center the input */ + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* optional disabled input styling */ +.tablesorter-grey .tablesorter-filter-row .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; +} +/* hidden filter row */ +.tablesorter-grey .tablesorter-filter-row.hideme td { + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; +} +.tablesorter-grey .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} +/* filters */ +.tablesorter-grey input.tablesorter-filter, +.tablesorter-grey select.tablesorter-filter { + width: 98%; + height: auto; + margin: 0; + padding: 4px; + background-color: #6d6d6d; + border: 1px solid #555; + color: #ddd; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +/* rows hidden by filtering (needed for child rows) */ +.tablesorter .filtered { + display: none; +} + +/* ajax error row */ +.tablesorter .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: #e6bf99; +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.ice.css b/vendor/FHC-vendor/jquery-tablesorter/css/theme.ice.css new file mode 100644 index 000000000..0b406dece --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.ice.css @@ -0,0 +1,212 @@ +/************* + Ice Theme (by thezoggy) + *************/ +/* overall */ +.tablesorter-ice { + width: 100%; + background-color: #fff; + margin: 10px 0 15px; + text-align: left; + border-spacing: 0; + border: #ccc 1px solid; + border-width: 1px 0 0 1px; +} +.tablesorter-ice th, +.tablesorter-ice td { + border: #ccc 1px solid; + border-width: 0 1px 1px 0; +} + +/* header */ +.tablesorter-ice th, +.tablesorter-ice thead td { + font: 12px/18px Arial, Sans-serif; + color: #555; + background-color: #f6f8f9; + border-collapse: collapse; + padding: 4px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); +} +.tablesorter-ice tbody td, +.tablesorter-ice tfoot th, +.tablesorter-ice tfoot td { + padding: 4px; + vertical-align: top; +} +.tablesorter-ice .header, +.tablesorter-ice .tablesorter-header { + background-color: #f6f8f9; + background-position: center right; + background-repeat: no-repeat; + background-image: url(data:image/gif;base64,R0lGODlhDAAMAMQAAAJEjAJCiwJBigJAiANFjgNGjgNEjQRIkQRHkANIkAVMlAVQmAZWnQZUnAdYoAhdpAhZoAlhqQlepQliqQppsApmrQxutgtutQtutAxwtwxwtg1yug1zugxtsw1yuP8A/yH5BAEAAB8ALAAAAAAMAAwAAAUx4Cd+3GiOW4ado2d9VMVm1xg9ptadTsP+QNZEcjoQTBDGCAFgLRSfQgCYMAiCn8EvBAA7); + /* background-image: url(images/ice-unsorted.gif) */ + padding: 4px 20px 4px 4px; + white-space: normal; + cursor: pointer; +} +.tablesorter-ice .headerSortUp, +.tablesorter-ice .tablesorter-headerSortUp, +.tablesorter-ice .tablesorter-headerAsc { + color: #333; + background-color: #ebedee; + background-position: center right; + background-repeat: no-repeat; + background-image: url(data:image/gif;base64,R0lGODlhDAAMANUAAAJCiwNHkANFjgNEjQRIkQNJkQRMlARKkwRKkgVPlwZSmgdaogdYnwhfpghcowlhqgliqglgqAlgpwljqwporwpmrQplrAtsswtqsgtrsgtqsQxttAtvtQtttAxyuQxwtwxxtwxvtg10uw1zuQ1xuP8A/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACUALAAAAAAMAAwAAAY6wJKwJBoahyNQ6Dj0fDoZCpPEuWgqk4jxs8FQLI+Gg8Esm5kQydFQMC7IwkOAqUiUCAIzIjA4lwBlQQA7); + /* background-image: url(images/ice-desc.gif) */ +} +.tablesorter-ice .headerSortDown, +.tablesorter-ice .tablesorter-headerSortDown, +.tablesorter-ice .tablesorter-headerDesc { + color: #333; + background-color: #ebedee; + background-position: center right; + background-repeat: no-repeat; + background-image: url(data:image/gif;base64,R0lGODlhDAAMANUAAAE/iAJBigNFjgNEjQNFjQNDiwRHkQRHjwNHjwROlgRMlQRMlARJkgRKkgZQmAVPlgZWnQZSmgZRmAdXoAdXnwdUnAdbogdZoQhbowlhqAlepglkrAliqQtstAtqsQxyugxyuQxwuAxxuAxxtwxwtgxvtQ10vA12vA10u/8A/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACkALAAAAAAMAAwAAAY6wJQwdRoah6bP6DhEiVIdDxNEGm4yxlDpiJkwv2AmR2OhVCSJBsJ4gUQeCwOB6VAwBAXwYRAIpwBfQQA7); + /* background-image: url(images/ice-asc.gif); */ +} +.tablesorter-ice thead .sorter-false { + background-image: none; + cursor: default; + padding: 4px; +} + +/* tfoot */ +.tablesorter-ice tfoot .tablesorter-headerSortUp, +.tablesorter-ice tfoot .tablesorter-headerSortDown, +.tablesorter-ice tfoot .tablesorter-headerAsc, +.tablesorter-ice tfoot .tablesorter-headerDesc { + background-color: #ebedee; +} + +/* tbody */ +.tablesorter-ice td { + color: #333; +} + +/* hovered row colors */ +.tablesorter-ice tbody > tr.hover > td, +.tablesorter-ice tbody > tr:hover > td, +.tablesorter-ice tbody > tr.even:hover > td, +.tablesorter-ice tbody > tr.odd:hover > td { + background-color: #ebf2fa; +} + +/* table processing indicator */ +.tablesorter-ice .tablesorter-processing { + background-position: center center !important; + background-repeat: no-repeat !important; + /* background-image: url(images/loading.gif) !important; */ + background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; +} + +/* Zebra Widget - row alternating colors */ +.tablesorter-ice tr.odd > td { + background-color: #dfdfdf; +} +.tablesorter-ice tr.even > td { + background-color: #efefef; +} + +/* Column Widget - column sort colors */ +.tablesorter-ice td.primary, +.tablesorter-ice tr.odd td.primary { + background-color: #9ae5e5; +} +.tablesorter-ice tr.even td.primary { + background-color: #c2f0f0; +} +.tablesorter-ice td.secondary, +.tablesorter-ice tr.odd td.secondary { + background-color: #c2f0f0; +} +.tablesorter-ice tr.even td.secondary { + background-color: #d5f5f5; +} +.tablesorter-ice td.tertiary, +.tablesorter-ice tr.odd td.tertiary { + background-color: #d5f5f5; +} +.tablesorter-ice tr.even td.tertiary { + background-color: #ebfafa; +} + +/* sticky headers */ +.tablesorter-ice.containsStickyHeaders thead tr:nth-child(1) th, +.tablesorter-ice.containsStickyHeaders thead tr:nth-child(1) td { + border-top: #ccc 1px solid; +} + +/* caption */ +caption { + background-color: #fff; +} + +/* filter widget */ +.tablesorter-ice .tablesorter-filter-row { + background-color: #eee; +} +.tablesorter-ice .tablesorter-filter-row td { + background-color: #eee; + line-height: normal; + text-align: center; /* center the input */ + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* optional disabled input styling */ +.tablesorter-ice .tablesorter-filter-row .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; +} +/* hidden filter row */ +.tablesorter-ice .tablesorter-filter-row.hideme td { + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; +} +.tablesorter-ice .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} +/* filters */ +.tablesorter-ice input.tablesorter-filter, +.tablesorter-ice select.tablesorter-filter { + width: 98%; + height: auto; + margin: 0; + padding: 4px; + background-color: #fff; + border: 1px solid #bbb; + color: #333; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +/* rows hidden by filtering (needed for child rows) */ +.tablesorter .filtered { + display: none; +} + +/* ajax error row */ +.tablesorter .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: #e6bf99; +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.jui.css b/vendor/FHC-vendor/jquery-tablesorter/css/theme.jui.css new file mode 100644 index 000000000..aa1309b4d --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.jui.css @@ -0,0 +1,164 @@ +/************* + jQuery UI Theme + *************/ + /* overall */ +.tablesorter-jui { + width: 100%; + border-collapse: separate; + border-spacing: 2px; /* adjust spacing between table cells */ + margin: 10px 0 15px; + padding: 5px; + font-size: 0.8em; +} + +/* header */ +.tablesorter-jui thead th, +.tablesorter-jui thead td, +.tablesorter-jui tfoot th, +.tablesorter-jui tfoot td { + position: relative; + background-repeat: no-repeat; + background-position: right center; + /* UI hover and active states make the font normal and the table resizes, this fixes it */ + font-weight: bold !important; + border-width: 1px !important; + text-align: left; + padding: 8px; /* wider than the icon */ +} +.tablesorter-jui .header, +.tablesorter-jui .tablesorter-header { + cursor: pointer; + white-space: normal; +} +.tablesorter-jui .tablesorter-header-inner { + padding-right: 20px; +} +.tablesorter-jui thead tr th .ui-icon { + position: absolute; + right: 3px; + top: 50%; + margin-top: -8px; /* half the icon height; older IE doesn't like this */ +} + +.tablesorter-jui thead .sorter-false { + cursor: default; +} +.tablesorter-jui thead tr .sorter-false .ui-icon { + display: none; +} + +/* tfoot */ +.tablesorter-jui tfoot th, +.tablesorter-jui tfoot td { + font-weight: normal !important; + font-size: .9em; + padding: 2px; +} + +/* tbody */ +.tablesorter-jui td { + padding: 4px; + vertical-align: top; +} + +/* hovered row colors */ +.tablesorter-jui tbody > tr.hover > td, +.tablesorter-jui tbody > tr:hover > td { + opacity: 0.7; + filter: alpha(opacity=70); +} + +/* table processing indicator */ +.tablesorter-jui .tablesorter-processing .tablesorter-header-inner { + background-position: center center !important; + background-repeat: no-repeat !important; + /* background-image: url(images/loading.gif) !important; */ + background-image: url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=') !important; +} + +/* Zebra widget - This allows you to use ui-state-default as the zebra stripe color */ +.tablesorter-jui tr.ui-state-default { + background-image: none; + font-weight: normal; +} + +/* processing background color */ +.tablesorter-jui .tablesorter-processing { + background-color: #ddd; /* older browsers that don't support rgba */ + background-color: rgba(255,255,255,0.8); +} + +/* caption */ +.tablesorter-jui caption { + border: 0; +} + +/* filter widget */ +.tablesorter-jui .tablesorter-filter-row { + background-color: transparent; +} +.tablesorter-jui .tablesorter-filter-row td { + background-color: transparent; + line-height: normal; + text-align: center; /* center the input */ + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* optional disabled input styling */ +.tablesorter-jui .tablesorter-filter-row .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; +} +/* hidden filter row */ +.tablesorter-jui .tablesorter-filter-row.hideme td { + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; +} +.tablesorter-jui .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} +/* filters */ +.tablesorter-jui input.tablesorter-filter, +.tablesorter-jui select.tablesorter-filter { + width: 98%; + height: auto; + margin: 0; + padding: 4px; + background-color: #fff; + border: 1px solid #bbb; + color: #333; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +/* rows hidden by filtering (needed for child rows) */ +.tablesorter .filtered { + display: none; +} + +/* ajax error row */ +.tablesorter .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: #e6bf99; +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.less b/vendor/FHC-vendor/jquery-tablesorter/css/theme.less new file mode 100644 index 000000000..c0a4d7922 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.less @@ -0,0 +1,329 @@ +/* Tablesorter Custom LESS Theme by Rob Garrison + + To create your own theme, modify the code below and run it through + a LESS compiler, like this one: http://leafo.net/lessphp/editor.html + or download less.js from http://lesscss.org/ + +Test out these custom less files live + Basic Theme : http://codepen.io/Mottie/pen/eqBbn + Bootstrap : http://codepen.io/Mottie/pen/Ltzpi + Metro Style : http://codepen.io/Mottie/pen/gCslk + + */ + +/*** theme ***/ +@theme : tablesorter-custom; + +/*** fonts ***/ +@tableHeaderFont : 11px 'trebuchet ms', verdana, arial; +@tableBodyFont : 11px 'trebuchet ms', verdana, arial; + +/*** color definitions ***/ +/* for best results, only change the hue (120), + leave the saturation (60%) and luminosity (75%) alone + pick the color from here: http://hslpicker.com/#99E699 */ +@headerBackground : hsl(120, 60%, 75%); +@borderAndBackground : #cdcdcd; +@overallBorder : @borderAndBackground 1px solid; +@headerTextColor : #000; + +@bodyBackground : #fff; +@bodyTextColor : #000; + +@headerAsc : darken(spin(@headerBackground, 5), 10%); /* darken(@headerBackground, 10%); */ +@headerDesc : lighten(spin(@headerBackground, -5), 10%); /* desaturate(@headerAsc, 5%); */ + +@captionBackground : #fff; /* it might be best to match the document body background color here */ +@errorBackground : #e6bf99; /* ajax error message (added to thead) */ + +@filterCellBackground : #eee; +@filterElementTextColor: #333; +@filterElementBkgd : #fff; +@filterElementBorder : 1px solid #bbb; +@filterTransitionTime : 0.1s; +@filterRowHiddenHeight : 4px; /* becomes height using padding (so it's divided by 2) */ + +@overallPadding : 4px; +/* 20px should be slightly wider than the icon width to avoid overlap */ +@headerPadding : 4px 20px 4px 4px; + +/* url(icons/loading.gif); */ +@processingIcon : url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs='); + +/* zebra striping */ +.allRows { + background-color: @bodyBackground; + color: @bodyTextColor; +} +.evenRows { + background-color: lighten(@headerBackground, 40%); + color: @bodyTextColor; +} +.oddRows { + background-color: lighten(@headerBackground, 20%); +} + +/* hovered rows */ +.oddHovered { + background-color: desaturate(@headerBackground, 60%); + color: @bodyTextColor; +} +.evenHovered { + background-color: lighten( desaturate(@headerBackground, 60%), 10% ); + color: @bodyTextColor; +} + +/* Columns widget */ +@primaryOdd : spin(@headerBackground, 10); /* saturate( darken( desaturate(@headerBackground, 10%), 10% ), 30%); */ +@primaryEven : lighten( @primaryOdd, 10% ); +@secondaryOdd : @primaryEven; +@secondaryEven : lighten( @primaryEven, 5% ); +@tertiaryOdd : @secondaryEven; +@tertiaryEven : lighten( @secondaryEven, 5% ); + +/* Filter widget transition */ +.filterWidgetTransition { + -webkit-transition: line-height @filterTransitionTime ease; + -moz-transition: line-height @filterTransitionTime ease; + -o-transition: line-height @filterTransitionTime ease; + transition: line-height @filterTransitionTime ease; +} + +/*** Arrows ***/ +@arrowPosition : right 5px center; + +/* black */ +@unsortedBlack : url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); +@sortAscBlack : url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); +@sortDescBlack : url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); + +/* white */ +@unsortedWhite : url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); +@sortAscWhite : url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); +@sortDescWhite : url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); + +/* automatically choose the correct arrow/text color */ +.headerText (@a) when (lightness(@a) >= 50%) { + color: @headerTextColor; +} +.headerText (@a) when (lightness(@a) < 50%) { + color: lighten(@headerTextColor, 90%); +} +.unsorted (@a) when (lightness(@a) >= 50%) { + background-image: @unsortedBlack; +} +.unsorted (@a) when (lightness(@a) < 50%) { + background-image: @unsortedWhite; +} +.sortAsc (@a) when (lightness(@a) >= 50%) { + background-image: @sortAscBlack; +} +.sortAsc (@a) when (lightness(@a) < 50%) { + background-image: @sortAscWhite; +} +.sortDesc (@a) when (lightness(@a) >= 50%) { + background-image: @sortDescBlack; +} +.sortDesc (@a) when (lightness(@a) < 50%) { + background-image: @sortDescWhite; +} + +/* variable theme name - requires less.js 1.3+; + or just replace (!".@{theme}") with the contents of @theme + */ +.@{theme} { + font: @tableBodyFont; + background-color: @borderAndBackground; + margin: 10px 0 15px; + width: 100%; + text-align: left; + border-spacing: 0; + border: @overallBorder; + border-width: 1px 0 0 1px; + + th, td { + border: @overallBorder; + border-width: 0 1px 1px 0; + } + + /* style th's outside of the thead */ + th, thead td { + font: @tableHeaderFont; + font-weight: bold; + background-color: @headerBackground; + .headerText(@headerBackground); + border-collapse: collapse; + padding: @overallPadding; + } + + tbody td, tfoot th, tfoot td { + padding: @overallPadding; + vertical-align: top; + } + + /* style header */ + .tablesorter-header { + .unsorted(@headerBackground); + background-repeat: no-repeat; + background-position: @arrowPosition; + padding: @headerPadding; + cursor: pointer; + } + + .tablesorter-header.sorter-false { + background-image: none; + cursor: default; + padding: @overallPadding; + } + + .tablesorter-headerAsc { + background-color: @headerAsc; + .sortAsc(@headerBackground); + } + + .tablesorter-headerDesc { + background-color: @headerDesc; + .sortDesc(@headerBackground); + } + + /* tfoot */ + tfoot .tablesorter-headerAsc, + tfoot .tablesorter-headerDesc { + /* remove sort arrows from footer */ + background-image: none; + } + + /* optional disabled input styling */ + .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; + } + + /* body */ + tbody { + + td { + .allRows; + padding: @overallPadding; + vertical-align: top; + } + + /* Zebra Widget - row alternating colors */ + tr.odd > td { + .oddRows; + } + tr.even > td { + .evenRows; + } + + } + + /* hovered row colors + you'll need to add additional lines for + rows with more than 2 child rows + */ + tbody > tr.hover td, + tbody > tr:hover td, + tbody > tr:hover + tr.tablesorter-childRow > td, + tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td, + tbody > tr.even.hover > td, + tbody > tr.even:hover > td, + tbody > tr.even:hover + tr.tablesorter-childRow > td, + tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + .evenHovered; + } + tbody > tr.odd.hover > td, + tbody > tr.odd:hover > td, + tbody > tr.odd:hover + tr.tablesorter-childRow > td, + tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + .oddHovered; + } + + /* table processing indicator - indeterminate spinner */ + .tablesorter-processing { + background-image: @processingIcon; + background-position: center center; + background-repeat: no-repeat; + } + + /* Column Widget - column sort colors */ + tr.odd td.primary { + background-color: @primaryOdd; + } + td.primary, tr.even td.primary { + background-color: @primaryEven; + } + tr.odd td.secondary { + background-color: @secondaryOdd; + } + td.secondary, tr.even td.secondary { + background-color: @secondaryEven; + } + tr.odd td.tertiary { + background-color: @tertiaryOdd; + } + td.tertiary, tr.even td.tertiary { + background-color: @tertiaryEven; + } + + /* caption (non-theme matching) */ + caption { + background-color: @captionBackground ; + } + + /* filter widget */ + .tablesorter-filter-row input, + .tablesorter-filter-row select { + width: 98%; + height: auto; + margin: 0; + padding: @overallPadding; + color: @filterElementTextColor; + background-color: @filterElementBkgd; + border: @filterElementBorder; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + .filterWidgetTransition; + } + .tablesorter-filter-row { + background-color: @filterCellBackground; + } + .tablesorter-filter-row td { + text-align: center; + background-color: @filterCellBackground; + line-height: normal; + text-align: center; /* center the input */ + .filterWidgetTransition; + } + /* hidden filter row */ + .tablesorter-filter-row.hideme td { + padding: @filterRowHiddenHeight / 2; + margin: 0; + line-height: 0; + cursor: pointer; + } + .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); + } + /* rows hidden by filtering (needed for child rows) */ + .filtered { + display: none; + } + + /* ajax error row */ + .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: @errorBackground; + } + +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/css/theme.metro-dark.css b/vendor/FHC-vendor/jquery-tablesorter/css/theme.metro-dark.css new file mode 100644 index 000000000..461c2db45 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/css/theme.metro-dark.css @@ -0,0 +1,197 @@ +/************* +Metro Dark Theme +*************/ +/* overall */ +.tablesorter-metro-dark { + width: 100%; + font: 12px/18px 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + color: #000; + background-color: #333; + border-spacing: 0; + margin: 10px 0 15px; + text-align: left; +} + +.tablesorter-metro-dark tr.dark-row th, .tablesorter-metro-dark tr.dark-row td, .tablesorter-metro-dark caption.dark-row { + background-color: #222; + color: #fff; + padding: 2px; + text-align: left; + font-size: 14px; +} + +/* header/footer */ +.tablesorter-metro-dark caption, +.tablesorter-metro-dark th, +.tablesorter-metro-dark thead td, +.tablesorter-metro-dark tfoot th, +.tablesorter-metro-dark tfoot td { + font-weight: 300; + font-size: 15px; + color: #ddd; + background-color: #333; + padding: 4px; +} + +.tablesorter-metro-dark .header, +.tablesorter-metro-dark .tablesorter-header { + background-image: url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAGFBMVEUAAADu7u7u7u7u7u7u7u7u7u7u7u7u7u5jNePWAAAACHRSTlMAMxIHKwEgMWD59H4AAABSSURBVAjXY2BgYFJgAAHzYhDJ6igSAKTYBAUTgJSioKAQAwNzoaCguAFDiCAQuDIkgigxBgiA8cJAVCpQt6AgSL+JoKAzA0gjUBsQqBcBCYhFAAE/CV4zeSzxAAAAAElFTkSuQmCC); + background-position: right 5px center; + background-repeat: no-repeat; + cursor: pointer; + white-space: normal; +} +.tablesorter-metro-dark .tablesorter-header-inner { + padding: 0 18px 0 4px; +} +.tablesorter-metro-dark thead .headerSortUp, +.tablesorter-metro-dark thead .tablesorter-headerSortUp, +.tablesorter-metro-dark thead .tablesorter-headerAsc { + background-image: url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAADu7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u5meJAOAAAACnRSTlMAMwsqXt+gIBUGxGoDMAAAAFlJREFUCNctzC0SQAAUReEzGNQ3AlHRiSRZFCVZYgeswRL8hLdK7834wj3tAlGP6y7fYHpKS6w6WwbVG0I1NZVnZPG8/DYxOYlnhUYkA06R1s9ESsxR4NIdPhkPFDFYuEnMAAAAAElFTkSuQmCC); +} +.tablesorter-metro-dark thead .headerSortDown, +.tablesorter-metro-dark thead .tablesorter-headerSortDown, +.tablesorter-metro-dark thead .tablesorter-headerDesc { + background-image: url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAALVBMVEUAAADu7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7i0NViAAAADnRSTlMAMiweCQITTvDctZZqaTlM310AAABcSURBVAjXY2BgYEtgAAFHERDJqigUAKSYBQUNgFSioKAYAwOLIBA4MASBKFUGQxAlzAAF+94BwWuGKBC1lIFl3rt3Lx0YGCzevWsGSjK9e6cAUlT3HKyW9wADAwDRrBiDy6bKzwAAAABJRU5ErkJggg==); +} +.tablesorter-metro-dark thead .sorter-false { + background-image: none; + cursor: default; + padding: 4px; +} + +/* tbody */ +.tablesorter-metro-dark td { + background-color: #fff; + padding: 4px; + vertical-align: top; +} + +/* hovered row colors */ +.tablesorter-metro-dark tbody > tr.hover > td, +.tablesorter-metro-dark tbody > tr:hover > td, +.tablesorter-metro-dark tbody > tr.even:hover > td, +.tablesorter-metro-dark tbody > tr.odd:hover > td { + background-color: #bbb; + color: #000; +} + +/* table processing indicator */ +.tablesorter-metro-dark .tablesorter-processing { + background-position: center center !important; + background-repeat: no-repeat !important; + /* background-image: url(images/loading.gif) !important; */ + background-image: url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=) !important; +} + +/* pager */ +.tablesorter-metro-dark .tablesorter-pager button { + background-color: #444; + color: #eee; + border: #555 1px solid; + cursor: pointer; +} +.tablesorter-metro-dark .tablesorter-pager button:hover { + background-color: #555; +} + +/* Zebra Widget - row alternating colors */ +.tablesorter-metro-dark tr.odd > td { + background-color: #eee; +} +.tablesorter-metro-dark tr.even > td { + background-color: #fff; +} + +/* Column Widget - column sort colors */ +.tablesorter-metro-dark tr.odd td.primary { + background-color: #bfbfbf; +} +.tablesorter-metro-dark td.primary, +.tablesorter-metro-dark tr.even td.primary { + background-color: #d9d9d9; +} +.tablesorter-metro-dark tr.odd td.secondary { + background-color: #d9d9d9; +} +.tablesorter-metro-dark td.secondary, +.tablesorter-metro-dark tr.even td.secondary { + background-color: #e6e6e6; +} +.tablesorter-metro-dark tr.odd td.tertiary { + background-color: #e6e6e6; +} +.tablesorter-metro-dark td.tertiary, +.tablesorter-metro-dark tr.even td.tertiary { + background-color: #f2f2f2; +} + +/* filter widget */ +.tablesorter-metro-dark .tablesorter-filter-row { + background-color: #eee; +} +.tablesorter-metro-dark .tablesorter-filter-row td { + background-color: #eee; + line-height: normal; + text-align: center; /* center the input */ + -webkit-transition: line-height 0.1s ease; + -moz-transition: line-height 0.1s ease; + -o-transition: line-height 0.1s ease; + transition: line-height 0.1s ease; +} +/* optional disabled input styling */ +.tablesorter-metro-dark .tablesorter-filter-row .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; +} +/* hidden filter row */ +.tablesorter-metro-dark .tablesorter-filter-row.hideme td { + /*** *********************************************** ***/ + /*** change this padding to modify the thickness ***/ + /*** of the closed filter row (height = padding x 2) ***/ + padding: 2px; + /*** *********************************************** ***/ + margin: 0; + line-height: 0; + cursor: pointer; +} +.tablesorter-metro-dark .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); +} +/* filters */ +.tablesorter-metro-dark input.tablesorter-filter, +.tablesorter-metro-dark select.tablesorter-filter { + width: 95%; + height: auto; + margin: 0; + padding: 4px; + background-color: #fff; + border: 1px solid #bbb; + color: #333; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + -webkit-transition: height 0.1s ease; + -moz-transition: height 0.1s ease; + -o-transition: height 0.1s ease; + transition: height 0.1s ease; +} +/* rows hidden by filtering (needed for child rows) */ +.tablesorter .filtered { + display: none; +} + +/* ajax error row */ +.tablesorter .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: #e6bf99; +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/dragtable.mod.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/dragtable.mod.min.css new file mode 100644 index 000000000..56d2f42eb --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/dragtable.mod.min.css @@ -0,0 +1 @@ +.dragtable-sortable{list-style-type:none;margin:0;padding:0;-moz-user-select:none;z-index:10}.dragtable-sortable li{margin:0;padding:0;float:left;font-size:1em}.dragtable-sortable table{margin-top:0}.dragtable-sortable td,.dragtable-sortable th{border-left:0}.dragtable-sortable li:first-child td,.dragtable-sortable li:first-child th{border-left:1px solid #CCC}.ui-sortable-helper{opacity:.7;filter:alpha(opacity=70)}.ui-sortable-placeholder{-moz-box-shadow:4px 5px 4px rgba(0,0,0,.2) inset;-webkit-box-shadow:4px 5px 4px rgba(0,0,0,.2) inset;box-shadow:4px 5px 4px rgba(0,0,0,.2) inset;border-bottom:1px solid rgba(0,0,0,.2);border-top:1px solid rgba(0,0,0,.2);visibility:visible!important;background:#EFEFEF}.ui-sortable-placeholder *{opacity:0;visibility:hidden}.table-handle,.table-handle-disabled{background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyIiBoZWlnaHQ9IjEzIj48cmVjdCBzdHlsZT0iZmlsbDojMzMzO2ZpbGwtb3BhY2l0eTouODsiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHg9IjEiIHk9IjIiLz4JPHJlY3Qgc3R5bGU9ImZpbGw6IzMzMztmaWxsLW9wYWNpdHk6Ljg7IiB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4PSIxIiB5PSI0Ii8+CTxyZWN0IHN0eWxlPSJmaWxsOiMzMzM7ZmlsbC1vcGFjaXR5Oi44OyIgd2lkdGg9IjEiIGhlaWdodD0iMSIgeD0iMSIgeT0iNiIvPjxyZWN0IHN0eWxlPSJmaWxsOiMzMzM7ZmlsbC1vcGFjaXR5Oi44OyIgd2lkdGg9IjEiIGhlaWdodD0iMSIgeD0iMSIgeT0iOCIvPjxyZWN0IHN0eWxlPSJmaWxsOiMzMzM7ZmlsbC1vcGFjaXR5Oi44OyIgd2lkdGg9IjEiIGhlaWdodD0iMSIgeD0iMSIgeT0iMTAiLz48L3N2Zz4=);background-repeat:repeat-x;height:13px;margin:0 1px;cursor:move}.table-handle-disabled{opacity:0;cursor:not-allowed}.dragtable-sortable table{margin-bottom:0} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/filter.formatter.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/filter.formatter.min.css new file mode 100644 index 000000000..eba8cc043 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/filter.formatter.min.css @@ -0,0 +1 @@ +.tablesorter .tablesorter-filter-row td{text-align:center;font-size:.9em;font-weight:400}.tablesorter .ui-slider,.tablesorter input.range{width:90%;margin:2px auto;font-size:.8em}.tablesorter .ui-slider{top:12px}.tablesorter .ui-slider .ui-slider-handle{width:.9em;height:.9em}.tablesorter .ui-datepicker{font-size:.8em}.tablesorter .ui-slider-horizontal{height:.5em}.tablesorter .value-popup:after{content:attr(data-value);position:absolute;bottom:14px;left:-7px;min-width:18px;height:12px;background-color:#444;background-image:-webkit-gradient(linear,left top,left bottom,from(#444),to(#999));background-image:-webkit-linear-gradient(top,#444,#999);background-image:-moz-linear-gradient(top,#444,#999);background-image:-o-linear-gradient(top,#444,#999);background-image:linear-gradient(to bottom,#444,#999);-webkit-border-radius:3px;border-radius:3px;-webkit-background-clip:padding-box;background-clip:padding-box;-webkit-box-shadow:0 0 4px 0 #777;box-shadow:0 0 4px 0 #777;border:1px solid #444;color:#fff;font:1em/1.1em Arial,Sans-Serif;padding:1px;text-align:center}.tablesorter .button,.tablesorter .button label{-webkit-border-radius:25px;-moz-border-radius:25px}.tablesorter .value-popup:before{content:"";position:absolute;width:0;height:0;border-top:8px solid #777;border-left:8px solid transparent;border-right:8px solid transparent;top:-8px;left:50%;margin-left:-8px;margin-top:-1px}.tablesorter .dateFrom,.tablesorter .dateTo{width:80px;margin:2px 5px}.tablesorter .button{width:14px;height:14px;background:#fcfff4;background:-webkit-linear-gradient(top,#fcfff4 0,#dfe5d7 40%,#b3bead 100%);background:-moz-linear-gradient(top,#fcfff4 0,#dfe5d7 40%,#b3bead 100%);background:-o-linear-gradient(top,#fcfff4 0,#dfe5d7 40%,#b3bead 100%);background:-ms-linear-gradient(top,#fcfff4 0,#dfe5d7 40%,#b3bead 100%);background:linear-gradient(top,#fcfff4 0,#dfe5d7 40%,#b3bead 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#fcfff4', endColorstr='#b3bead', GradientType=0 );margin:1px 5px 1px 1px;border-radius:25px;-webkit-box-shadow:inset 0 1px 1px #fff,0 1px 3px rgba(0,0,0,.5);-moz-box-shadow:inset 0 1px 1px #fff,0 1px 3px rgba(0,0,0,.5);box-shadow:inset 0 1px 1px #fff,0 1px 3px rgba(0,0,0,.5);position:relative;top:3px;display:inline-block}.tablesorter .button label{cursor:pointer;position:absolute;width:10px;height:10px;border-radius:25px;left:2px;top:2px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.5),0 1px 0 rgba(255,255,255,1);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.5),0 1px 0 rgba(255,255,255,1);box-shadow:inset 0 1px 1px rgba(0,0,0,.5),0 1px 0 rgba(255,255,255,1);background:#45484d;background:-webkit-linear-gradient(top,#222 0,#45484d 100%);background:-moz-linear-gradient(top,#222 0,#45484d 100%);background:-o-linear-gradient(top,#222 0,#45484d 100%);background:-ms-linear-gradient(top,#222 0,#45484d 100%);background:linear-gradient(top,#222 0,#45484d 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#222', endColorstr='#45484d', GradientType=0 )}.tablesorter .button label:after{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);opacity:0;content:'';position:absolute;width:8px;height:8px;background:#55f;background:-webkit-linear-gradient(top,#aaf 0,#55f 100%);background:-moz-linear-gradient(top,#aaf 0,#55f 100%);background:-o-linear-gradient(top,#aaf 0,#55f 100%);background:-ms-linear-gradient(top,#aaf 0,#55f 100%);background:linear-gradient(top,#aaf 0,#55f 100%);-webkit-border-radius:25px;-moz-border-radius:25px;border-radius:25px;top:1px;left:1px;-webkit-box-shadow:inset 0 1px 1px #fff,0 1px 3px rgba(0,0,0,.5);-moz-box-shadow:inset 0 1px 1px #fff,0 1px 3px rgba(0,0,0,.5);box-shadow:inset 0 1px 1px #fff,0 1px 3px rgba(0,0,0,.5)}.tablesorter .button label:hover::after{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";filter:alpha(opacity=30);opacity:.3}.tablesorter .button input[type=checkbox]{visibility:hidden}.tablesorter .button input[type=checkbox]:checked+label:after{-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);opacity:1}.tablesorter .colorpicker{width:30px;height:18px}.tablesorter .ui-spinner-input{width:100px;height:18px}.tablesorter .currentColor,.tablesorter .ui-spinner,.tablesorter input.number{position:relative}.tablesorter .tablesorter-filter-row.hideme td *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/black-asc.gif b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/black-asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..730533fa3570dd4805cec70fe2630e85a2e1b863 GIT binary patch literal 48 zcmZ?wbhEHbWM^PuXkcJa);0M5|G(l-7DfgJMg|=QAOOiQFtPU}a;`qj$IW0300PSi A(EtDd literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/black-desc.gif b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/black-desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..4c3b61020bb4d707e41e94fbf2b6ebe5d0c87f6b GIT binary patch literal 49 zcmZ?wbhEHbWM^PuXkcJa);0M5|G(l-7DfgJMg|=QAOOiQFmbf-H%eylMrtrv0{{qN B3331c literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/black-unsorted.gif b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/black-unsorted.gif new file mode 100644 index 0000000000000000000000000000000000000000..5647f658329230706ec09c5e3c24fae39d225a04 GIT binary patch literal 54 zcmZ?wbhEHbWM|-HXkcJa);0M5|G(l-7DfgJMg|=QAOOiQF!A;za;`qjH@QXcLR*>^ GgEatAw+#UR literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/bootstrap-black-unsorted.png b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/bootstrap-black-unsorted.png new file mode 100644 index 0000000000000000000000000000000000000000..4e161a65ec0d89596124ebd5eeb18014e900fc5f GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0vp^+(697!3-qN?H5}Pq(TCGLR^8glao_qWTd2|7*RL%sEWEtDfVy;b zbxll6jE#-e)zyOpeq8{XD^U{U7tC<&w4}=pSw^+cIEHXsFFo$b)S$q_a*%=RSZ%q`zyJQp@4l^^wPsR(OvfDM=HriKqBL$joSm{K zXVT90He-#d&nmaQUaJZJH4i^GW#_qP3J;DgTe~DWM4fZ4GGK literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/bootstrap-white-unsorted.png b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/bootstrap-white-unsorted.png new file mode 100644 index 0000000000000000000000000000000000000000..fb227a150ec672948d40c0989ab4654957d4074c GIT binary patch literal 223 zcmeAS@N?(olHy`uVBq!ia0vp^+(697!VF^h|6T^9v;urWT!Hj|;y~N(Q~E&Fyd^?&UREc$ gEEzP#QWe-4B7cis^t&#$e5Qt)Q)VVuxK2V0i)78&qol`;+0PtZJpa1{> literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dragtable-handle.svg b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dragtable-handle.svg new file mode 100644 index 000000000..041ec1ded --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dragtable-handle.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dropbox-asc-hovered.png b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dropbox-asc-hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..bc45223f1dec5faab874457b501249849a5ad67a GIT binary patch literal 275 zcmV+u0qp*XP)N!0YroNDAvUkG#GGj^Q5tJa56A6voL^Y5FaECSH#ZAHJO8p z2Pn@9bO0j*hz9XN;vjkEyC0cUxcLQpK-MrZGeaB-RLI1{#PIL`Ke-j_w=ZQRCY%5Q Z3;^4XF8Gf^mEZsX002ovPDHLkV1l>1alZfn literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dropbox-asc.png b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dropbox-asc.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6ee15054013562d87105ebf9a5915b093b745a GIT binary patch literal 278 zcmV+x0qOpUP)c1cZKk`S9+`+ZU=! zioM^Vn8eP-+rq^!EX2hx!~mi}d=%^AChRcaJ^%m!07*qoM6N<$f|sClJ^%m! literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dropbox-desc-hovered.png b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/dropbox-desc-hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..4930942048212f647f27b8c8f06ec2737a7ee016 GIT binary patch literal 273 zcmV+s0q*{ZP)o985veE zvmi|S`{ysi@Ba*GAT}e+O=VNoUSVeZrwuXEnMIi9w^M{(hzka;~ zs$c-oAU;eEu4qcM&O4wR>i_=v1#(M0h!6K2vTwe9d^_vk-@kG{zI>R)z@PvZXCx+^ b00ImE*WX@&i7{I-00000NkvXXu0mjf>Ct&J literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/first.png b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/first.png new file mode 100644 index 0000000000000000000000000000000000000000..6f11fcb086b1bfa51bc5070ca45fac0a988c624c GIT binary patch literal 720 zcmV;>0x$iEP)ITpohD^Ctgf=H~o==W*|y0)VM;-LQd9lR=YF)677| z!Jh8V_;KSkP5LJrlF9S+j0qkk+2iPm7~x{#{$ZSbvzK9J-4zqYVC)27V7~717pTZd znit9v$VwYJS3ROyLxp^?0)a!0U)oMn7(0Xv0eUoZ@gH)t)d5_J+J%bT22oSJ)g^nf zqQZVCEIYOm2+rB;rB+cID%~N1o%g50=A<=fWgC_GFUb) z%s4&22M=t~3G+RMgR^pz#KbcfK)ZtsdJ$j@d{400GnQJeAz+sPu#&f$`6hKh0J%~V zq(%oWs|qZyzh}{lfSK@dRK#JSxg@DDP3^*cD+kP0j(npKkSQvp3bk_uYtD5My##O+ z;RpcDs9R5c#9;NFP5{z^GN_^r%PX%(0OOZ~7+aNFP*XZk{E2|i#E`vI`YjCrsfz|V zndEsDXoqvug2CxaF}ZvhdOaY6!{9q~KO+jO!o5Vk0qt%NcD}`cvVR;6QTNzYGWq-= zUX+?7V0e7VLW2m6_>T!vT6W8eRsOC$*+0hNMWWwDsLfA)S*X-WV71;M{bCz|Ns9CGysY}Sr{1@lo@nDW`q31z-Dn^Vu6Q_RR4)3 zMJIjoW+}V79ogbzu%PkNAq^J`MW&$784_ZXj<_d$31JXmQ7TxVVRd0o-FbO7Mh0sD Dr2|2x literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/green-desc.gif b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/green-desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f8817650dc07236f0f884cb826413ceeba2e1e6 GIT binary patch literal 283 zcmZ?wbhEHb6krfwxXQo~IxW~F#F*EGOR7th$B9dMkF3HfDVZtaqWOX%nF5NNWaO7g zNi>LXTXJgeQ#CxGt+QN1d!f4NAp^5R2DV2moQ~RRR;ziRaI=|X5pc>o=#+2pY5&mE z0deOdORpBT-fGI6k{(+YqvWFCp6vSn|9=K*1I3>#j0_Aa3_2i#L4IOjvv8PH;GrYc ze_~0|NtGs{wyw0pFDvXAk~<7EJT#{Buvumqi1d59ND9cv2rT2+m@!G`+n&1f?re+< F)&TJsK)V0{ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/green-header.gif b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/green-header.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc746b70a390d3c1e60dd0839aafaefdb56ffa5c GIT binary patch literal 513 zcmd7P%Sr-a7zW^93c{#X1sxV;wFw=D$Ppmun&SRq#z*(T68O2gBur(hZ)a0 zI!B!uXPm=7(#q7@)D`rtU*6}1FB}PZymuyW4_E+*I)P(2ga(G;49n6CL(w!zQB9JB z2GpUh>6)skimG&#uH2O+SrR)UFYsK8({)YLRE}dwve{@51W~Wms?};GlS!x3D2jdv zJkPh=?N+PB4N`0&pU>ksmdoX`*=*(~)$8>P!+;R#-*u|0D2go0k|cFH9Z?ho;ZF_A zFbqx86h)B(xH+Ilc733a_)4W*E|*HBVzF2#6mT5>4Wg-3Dw$07`+e{a&hj~K0^kPN zhFgX|0TZ_mR;vv`?2c!1?A+A!jB9J#y|cVxSzYr7f(P>p$BRp$@afrD wG=BLW--tyo&etR1lcU4ne!%bB^X$5}T+U6$OXBqjaX4LWZ!i?Qx_$({FRQBh`v3p{ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/green-unsorted.gif b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/green-unsorted.gif new file mode 100644 index 0000000000000000000000000000000000000000..0afe2c021cc7dccbb3af311f09496b51864737ca GIT binary patch literal 520 zcmZ?wbhEHb6krfwc*elM=gT7y!52C$*d)Yw!qvWckLJw3KbO~qOJR+a%nWgXc) zK7nvv9w#p4J+eyMWE56O$QVTsmjzy=%5g&1Q~8z$x#bQ@+8c{X>D9u@ zYh|ssn)>hdWKKzsEsIfdQE*Ro{r~?z!;k`sKUo+V7+e{2K&}SG2?Kj-gKJZBOKV$` zetWy9jzd?AvYeU?Yrm_iFo%?Z9b1>KmHq)$ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/ice-asc.gif b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/ice-asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..0961d9aafb17fa754d4ce5048c638cfb4db3b40d GIT binary patch literal 285 zcmZ?wbhEHbjG ze=B$H7M`M=JO$f%3b*s*Z{sc5&0D;aw{XXQhW`vy1&Tje7#SE;8FWCVg8an5W_4iF z1{Eo(cIAK<7GG+tB)KLZ*_oj=x#Q#Jg8@4IZOsRDX3rEjc`?91@5CYJhLs*uIGBu; N3@oNIq&hNK0{}6xMqB^@ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/ice-desc.gif b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/ice-desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..0330fccaabc2e17a7e67f4962aa4f89c8557ba4f GIT binary patch literal 285 zcmZ?wbhEHb)%wYAO#uhf0Eoc^7;0*Tg1?=JT*+b^AM=xTJT*wiGf)f^f3h$#FlaL9 zfJ_4UiGj`Pz!Za0DXI2l=U-U3bOy=t3%f|=8669F*)h{#e}bBO^1=|6PPRi8jV^NB W%#AMt3|Lq{BnogWXNY%Xum%8lS4B$z literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/ice-unsorted.gif b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/ice-unsorted.gif new file mode 100644 index 0000000000000000000000000000000000000000..c1afde558ea67f6f47148bb4e25f39abafd87799 GIT binary patch literal 180 zcmV;l089TzNk%w1VGIBa0K@xc>nEA^8LW0018VEC2ui01N;O000Fs;3t0EXpUQkoug-cRK;f37(J%e iole94K-NTZIuJ|{#s~pmEfk+Z0GKccf}g=J1OPj7d^(%} literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/last.png b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/last.png new file mode 100644 index 0000000000000000000000000000000000000000..72079357614b4254b163a5cac766093d1f99bbe7 GIT binary patch literal 737 zcmV<70v`Q|P)za-4I45g$8m^55K?|L?r+odSTVNnJ96LXt|7TGI4L>d~Fz z&-h8>1xd<>>vgSt=Y;X^$Jv9(As-4y`R%SPp?5wYYBW2LD^|g`7v>f>k`%^{A!C3N&EeR0q1EmI9?j zT<^fuCti3LD9UEdoCoe2BcvKUvD7KhHa~-21gL%Aj#%s&OGVR_$6iSuSoaqp%eN%J z76DWmU8pyEP^yWrwDz7wF9N262N52Jg#ie_jHv7Leqfv#&`?`&#}Fpfom5)T>7B!> zWsOHK0qlpu1b_k9E1Iu8-65F`u4B0T$PKrdAs|z3NmX=VY5BDbP=DEtvNfR%4Y5Zu z5VMpOD@qkb3GkT!aIm-Gn* z`85iZ>7zVE#RF?u>-GjXzTT2IfyTsX6XN-%yiPPHr0n_^E8Hzpe7MH(L!#e?D90zS zP^g}fN@{04Qcb!flJ%iEo~?q;Y!zl{=dXt}`IHwd0cyqO;QYY^WD0dM6YM#f=E3C+ z!2-R=&FDY;{gfv^)4f+|?c7Tj^US!+(gqX%T+i_HIx{<~voklC*uOv1|9t14Z-oeY T=@u`q-Vg)2ozNO$->CRz{H>f zQUKDzz~ne3e?i0B-7(yb4yr4bTs^i%F{Yz&j)hfn`=;ZaUeQxez2`bzvG#r5dd{19 z!Vll38%c$&oiKTOjaT|fg-sl?YN@OUQ`v#0ax(x)CXo=iMcq4Y^)WQ;^jy2>Pi|c0 z+yEr&d4XeL8If(~h1x7UMZQw|C0j$G*0IR9p-%D344shFF)_f@iA-r&*1q$O4~JHlrS=Ys z_3vtDAiIzOXf4!*A_|%9C!fc)bZLneovQiVkU1UVLRM%mejW= OqdvS&mB{N*qQH@MuUvp6C zPs?_%_h)|`vVF@G*#BDZenOR(_Zq8cwyV-krlwQVQ$FtbV`gaCncnKA!t6Kk+IbhR dGl35-$=XTsix@`i@H_)@oTsaw%Q~loCIIowIb;9; literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/metro-black-desc.png b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/metro-black-desc.png new file mode 100644 index 0000000000000000000000000000000000000000..ef5f48e07e52c6608e913fda2aa724c3eda3cecd GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eK!VDxY_&1vXDct~{5LX~gJUF;O!w#sLuO!GX zn88R#j+05)@57y~)3P!xeeTBsWnw&C978y+CnqE%cqcG0x(f=NT%{qxuw(`+D{n){ zq6G^in3=m31S||#8Z|=MoCQ?RFtGl<$9OQiO+#Sol*ZJ1yUX=uB_wq2?agNMGTK|c loFORWyUdzt-x-*h87{7oXg6#sMkxrPKgI|jHK z=@~FHGB7YG{*!VpN=+O)ufdp~4Hg(Gr$-m$6$)@UVMj zKlcFIf@zKk$Q-{OMFr^=p4}Usb-5He1%@OTN-8AyxJFB@sFB%PdjD;r1bc(Rb%{r9 z&XSu{RkVb#8Dz$>%Sc)Kl;epBXQqVdv$ZD6@O_c=`{?PEIAe8z%m=PBoA=5bTcOPq z`BwZ7WAkBtqm?OA^Y^o0GYaUpBvtKGMr{+{%n6Hc?Ow*&s>s7)=+d4jBe=?~X~RW% z=A@w5&$jXg7CKV>Czcdh`e5~&5y!3~b#1TbDIy;vKKnHCsFfW~h)D{W(%Q09E+f)O z^ZY3X0cN?EHu8tnz~%%^!fFiAISPj+Sc*R`dA{e?JOjz&G7l8>oVLw96~1PXArBk3 zNO9us4W{3xGBz4);OyKzKUdQWt2sdD-1+x`Q}E`T(AZgw?`{gpL$+T8S zx1$Ck6B1@`W8`Hy^>n-v5k z3^p`qu(vq~sGeeA43P7%jc8xIK*3{w=Yj>s6O!06nI)M`Sh55ef+w))8BS!k1Dea= M>FVdQ&MBb@0IrQR`v3p{ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/metro-white-asc.png b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/metro-white-asc.png new file mode 100644 index 0000000000000000000000000000000000000000..63327188b8fc240895c3e02d2e02e64e49e297c4 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eK!VDxY_&1vXDY*cj5LY1m4mYstac=>t;4BI9 z3uZ9p)Dn$*y+GkdYyN(qV5FyuV+hA}-7{#x{0(+XRRizpY<|VNa8}!`%^RxY>Xy%Fx>D?*J&AFu$MbY0 f)wDB(7a8Qwbqb|%)xLTMw1mOa)z4*}Q$iB}B+^)A literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/metro-white-desc.png b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/metro-white-desc.png new file mode 100644 index 0000000000000000000000000000000000000000..ca7c363e34009bdf9f61bfea526e410a9ecddc49 GIT binary patch literal 224 zcmeAS@N?(olHy`uVBq!ia0vp^JU}eK!VDxY_&1vXDfIxK5LY1mjtC&A#&`*+l&2)f zFPOndM~;(8IMeUNw4Hf3%JYHZF`h1tAsp9}6A}`<6BroX1qDv7(hy--GJ}iShLSD9Mo*f5ZF4kG4X`v&>jX)S3j3^P6_TF$F*h9sL-j zNpc$weSXQZ6Gag%5kOy9HfA1@g zVA*&|VjFHeVhIV!`DzQM7F-a@NRTNvNlYYp4z%6NAQuJno^MeOJ!7dzy8e(=;etr6 z4q2h83Vb36o=G4!6u79$u)6u4LoN!;_)kItHmh9g5CP1HxVh+sSiS*Mlqx_uVfwL~ z+}p|}Y*;r1{g* z9DE4_W&SW~qUN5hWN@-RUJ#q3Ngxr&iJp;+4aEd;HM{A>I)B?7>yL4`Nc6h^we^ve z3YC6fwXTqAQWr8=Cd?emR={YnNptkhuSFVP{Q?6Lt^ zqF4A?)Arx1JpP&Pyh<4sUhXnam)AJ@xmkE-VuVGbg_|=vm|INb-=FD!zVlDxJ_uiv SXLQ>D0000yhD literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/prev.png b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/prev.png new file mode 100644 index 0000000000000000000000000000000000000000..15d1584bdbb2c26a9fc4c8269aa54615a58a4657 GIT binary patch literal 745 zcmV1hlor z)=Ec^h7>5J3?Bj(D6|X+0|UcQj&m*_Qg!D|-c07sd7pF6opXl(U}#WhWg0W$d_xV%ATb~UcS*dC+@kfS*m{?64KBH-eM78JQAu#&2c z7TM!?0X98;&a@msh@1ehFDx4~_smCS0rm@Z$dv@5Y^ec>Jl}_`uDh5!i#cpZh5&_) z{y|~cgJzZ1d%`?CxkdJIg%by0u(~PqB0%Zdj?maMmYO=M!=;B#0>~5_5YO>&?w*4H z@LRbi!eNPrxg`gUUIeK8JG(3%R{o~|7so$K+8_qZe0Iz($pKd%d&oOhA&AGYXkKE` zO8~w=kN^smCS05H!-WT*2mpbXAJK6B{s*`+;U?8|s%XO8{Hs1d`DH6am$(L0coEX9 z)c+Ho)WS9-4?6~g4NrO@c2FaKCYmmR!DQ~YpfIn+s8pr^?KThtmU&}3Kr*7R^y^Rk z5Xsb_*=oc3w-9KI@B4=+yK6a8uQ@#oTkf1PnlL+NjAm=Zh)+xqld|idFEF=^(avw| z4U*w)Kx6;tnV0ZXQD@SHtHr7{`Y12 bpX>Y!%!CO%>C8GV00000NkvXXu0mjfJYGkQ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/white-asc.gif b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/white-asc.gif new file mode 100644 index 0000000000000000000000000000000000000000..2173b0a0596a3faa5d8f9236c385c325fa6227ad GIT binary patch literal 48 wcmZ?wbhEHbWM^PuXkcLY4+e@qSr{1@7#VaJfB+=Jz{K8@$hrD7A2)+F09SGhP5=M^ literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/white-desc.gif b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/white-desc.gif new file mode 100644 index 0000000000000000000000000000000000000000..7109c3ea161794feeae8c95a0fc5aa728e371f37 GIT binary patch literal 49 xcmZ?wbhEHbWM^PuXkcLY4+e@qSr{1@7#VaJfB+=Jz{JtQ-zb^I8>zuy4FF$-3-15` literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/white-unsorted.gif b/vendor/FHC-vendor/jquery-tablesorter/dist/css/images/white-unsorted.gif new file mode 100644 index 0000000000000000000000000000000000000000..9bfc3459c766d019f057f0557b0abf21319ff46e GIT binary patch literal 54 zcmZ?wbhEHbWM|-HXkcLY4+e@qSr{1@7#VaJfB+=Jz{J~=$hrD7-{cm(3vFpy4Aua( COb>nl literal 0 HcmV?d00001 diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/jquery.tablesorter.pager.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/jquery.tablesorter.pager.min.css new file mode 100644 index 000000000..9d87fe3fc --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/jquery.tablesorter.pager.min.css @@ -0,0 +1 @@ +.tablesorter-pager{padding:5px}td.tablesorter-pager{background-color:#e6eeee;margin:0}.tablesorter-pager img{vertical-align:middle;margin-right:2px;cursor:pointer}.tablesorter-pager .pagedisplay{padding:0 5px;width:auto;white-space:nowrap;text-align:center}.tablesorter-pager select{margin:0;padding:0}.tablesorter-pager.disabled{display:none}.tablesorter-pager .disabled{opacity:.5;filter:alpha(opacity=50);cursor:default} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/less/bootstrap.less b/vendor/FHC-vendor/jquery-tablesorter/dist/css/less/bootstrap.less new file mode 100644 index 000000000..1d712ca2f --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/less/bootstrap.less @@ -0,0 +1,322 @@ +/* Tablesorter Custom Bootstrap LESS Theme by Rob Garrison + +To create your own theme, modify the code below and run it through +a LESS compiler, like this one: http://leafo.net/lessphp/editor.html +or download less.js from http://lesscss.org/ + +Test out these custom less files live + Basic Theme : http://codepen.io/Mottie/pen/eqBbn + Bootstrap : http://codepen.io/Mottie/pen/Ltzpi + Metro Style : http://codepen.io/Mottie/pen/gCslk + +*/ + +/*** theme ***/ +@theme : tablesorter-bootstrap; + +/*** fonts ***/ +@tableHeaderFont : 14px bold Arial, Sans-serif; +@tableBodyFont : 14px "Helvetica Neue", Helvetica, Arial, sans-serif; + +/*** color definitions ***/ +/* for best results, only change the hue (240), + leave the saturation (60%) and luminosity (80%) alone + pick the color from here: http://hslpicker.com/#99E699 */ +@headerBackground : hsl(240, 60%, 80%); +@borderAndBackground : #cdcdcd; +@overallBorder : @borderAndBackground 1px solid; +@headerTextColor : #000; + +@bodyBackground : #fff; +@bodyTextColor : #000; + +@headerAsc : darken(spin(@headerBackground, 5), 10%); /* darken(@headerBackground, 10%); */ +@headerDesc : lighten(spin(@headerBackground, -5), 10%); /* desaturate(@headerAsc, 5%); */ + +@captionBackground : #fff; /* it might be best to match the document body background color here */ +@errorBackground : #e6bf99; /* ajax error message (added to thead) */ + +@filterCellBackground : #eee; +@filterElementTextColor: #333; +@filterElementBkgd : #fff; +@filterElementBorder : 1px solid #bbb; +@filterTransitionTime : 0.1s; +@filterRowHiddenHeight : 4px; /* becomes height using padding (so it's divided by 2) */ + +@overallPadding : 4px; +/* 20px should be slightly wider than the icon width to avoid overlap */ +@headerPadding : 4px 20px 4px 4px; +@headerMargin : 0 0 18px; + +/* url(icons/loading.gif); */ +@processingIcon : url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs='); + +/* zebra striping */ +.allRows { + background-color: @bodyBackground; + color: @bodyTextColor; +} +.evenRows { + background-color: lighten(@headerBackground, 35%); +} +.oddRows { + background-color: lighten(@headerBackground, 18%); +} + +/* hovered rows */ +.oddHovered { + background-color: desaturate(@headerBackground, 60%); +} +.evenHovered { + background-color: lighten( desaturate(@headerBackground, 60%), 10% ); +} + +/* Columns widget */ +@primaryOdd : spin(@headerBackground, 10); /* saturate( darken( desaturate(@headerBackground, 10%), 10% ), 30%); */ +@primaryEven : lighten( @primaryOdd, 10% ); +@secondaryOdd : @primaryEven; +@secondaryEven : lighten( @primaryEven, 5% ); +@tertiaryOdd : @secondaryEven; +@tertiaryEven : lighten( @secondaryEven, 5% ); + +/* Filter widget transition */ +.filterWidgetTransition { + -webkit-transition: line-height @filterTransitionTime ease; + -moz-transition: line-height @filterTransitionTime ease; + -o-transition: line-height @filterTransitionTime ease; + transition: line-height @filterTransitionTime ease; +} + +/*** icon block ***/ +.iconPosition { + font-size: 11px; + position: absolute; + right: 2px; + top: 50%; + margin-top: -7px; /* half the icon height; older IE doesn't like this */ + width: 14px; + height: 14px; + background-repeat: no-repeat; + line-height: 14px; +} + +/* black */ +@unsortedBlack : url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAMAAADOvxanAAAAVFBMVEUAAABCQkJZWVkZGRnJyckgICAZGRkZGRn8/PweHh4dHR0aGhoaGhpUVFQbGxvQ0NDc3NxMTExSUlIbGxvr6+s4ODhKSkogICAtLS00NDQzMzMnJydSEPrQAAAAGHRSTlMA1ssZRLgdAQbDyisqsZo8QdXUq0r9xPepSRwiAAAAX0lEQVQI13XHSQKAIAwEwQAKxn13Ev7/T2Pu9qmarJKPXIicI4PH4hxaKNrhm2S8bJK5h4YzKHrzJNtK6yYT/TdXzpS5zuYg4MSQYF6i4IHExdw1UVRi05HPrrvT53a+qyMFC9t04gcAAAAASUVORK5CYII=); + +/* white */ +@unsortedWhite : url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOBAMAAAALT/umAAAAKlBMVEUAAAD///////////////////////////////////////////////////+Gu8ovAAAADXRSTlMA4EXKBtQqvR0+sxmalc142gAAAFdJREFUCNdjYGDoamAAAjZbMxCVfvd6AgMDd+3du9UMDKx3hWSvMjBwXZww8RYDGuC53NB8h4GB8a617UUGBs7Yu3cjGRhYVO9eVQFKOskKOQApFmUgBwBZ+xXRTttNdAAAAABJRU5ErkJggg==); + +/* automatically choose the correct arrow/text color */ +.headerText (@a) when (lightness(@a) >= 50%) { + color: @headerTextColor; +} +.headerText (@a) when (lightness(@a) < 50%) { + color: lighten(@headerTextColor, 90%); +} +.unsorted (@a) when (lightness(@a) >= 50%) { + background-image: @unsortedBlack; + color: @headerTextColor; +} +.unsorted (@a) when (lightness(@a) < 50%) { + background-image: @unsortedWhite; + color: lighten(@headerTextColor, 90%); +} + +/* variable theme name - requires less.js 1.3+; + or just replace (!".@{theme}") with the contents of @theme +*/ +.@{theme} { + font: @tableBodyFont; + background-color: @borderAndBackground; + width: 100%; + + /* style th's outside of the thead */ + th, thead td { + font: @tableHeaderFont; + font-weight: bold; + background-color: @headerBackground; + .headerText(@headerBackground); + border-collapse: collapse; + margin: @headerMargin; + padding: @overallPadding; + } + + tbody td, tfoot th, tfoot td { + padding: @overallPadding; + vertical-align: top; + } + + /* style header */ + .tablesorter-header { + cursor: pointer; + } + + .tablesorter-header-inner { + position: relative; + padding: @headerPadding; + } + + /* bootstrap uses for icons */ + .tablesorter-header-inner i.tablesorter-icon { + .iconPosition + } + + .tablesorter-header.sorter-false { + background-image: none; + cursor: default; + + } + + .tablesorter-headerAsc { + background-color: @headerAsc; + } + + .tablesorter-headerDesc { + background-color: @headerDesc; + } + + .bootstrap-icon-unsorted { + .unsorted(@headerBackground); + } + + + /* tfoot */ + tfoot .tablesorter-headerAsc, + tfoot .tablesorter-headerDesc { + /* remove sort arrows from footer */ + background-image: none; + } + + /* optional disabled input styling */ + .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; + } + + /* body */ + tbody { + + td { + .allRows; + padding: @overallPadding; + vertical-align: top; + } + + /* Zebra Widget - row alternating colors */ + tr.odd > td { + .oddRows; + } + tr.even > td { + .evenRows; + } + + } + + /* hovered row colors + you'll need to add additional lines for + rows with more than 2 child rows + */ + tbody > tr.hover > td, + tbody > tr:hover > td, + tbody > tr:hover + tr.tablesorter-childRow > td, + tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td, + tbody > tr.even.hover > td, + tbody > tr.even:hover > td, + tbody > tr.even:hover + tr.tablesorter-childRow > td, + tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + .evenHovered; + } + tbody > tr.odd.hover > td, + tbody > tr.odd:hover > td, + tbody > tr.odd:hover + tr.tablesorter-childRow > td, + tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + .oddHovered; + } + + /* table processing indicator - indeterminate spinner */ + .tablesorter-processing { + background-image: @processingIcon; + background-position: center center; + background-repeat: no-repeat; + } + + /* Column Widget - column sort colors */ + tr.odd td.primary { + background-color: @primaryOdd; + } + td.primary, tr.even td.primary { + background-color: @primaryEven; + } + tr.odd td.secondary { + background-color: @secondaryOdd; + } + td.secondary, tr.even td.secondary { + background-color: @secondaryEven; + } + tr.odd td.tertiary { + background-color: @tertiaryOdd; + } + td.tertiary, tr.even td.tertiary { + background-color: @tertiaryEven; + } + + /* caption (non-theme matching) */ + caption { + background-color: @captionBackground ; + } + + /* filter widget */ + .tablesorter-filter-row input, + .tablesorter-filter-row select{ + width: 98%; + margin: 0; + padding: @overallPadding; + color: @filterElementTextColor; + background-color: @filterElementBkgd; + border: @filterElementBorder; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + .filterWidgetTransition; + } + .tablesorter-filter-row { + background-color: @filterCellBackground; + } + .tablesorter-filter-row td { + text-align: center; + background-color: @filterCellBackground; + line-height: normal; + text-align: center; /* center the input */ + .filterWidgetTransition; + } + /* hidden filter row */ + .tablesorter-filter-row.hideme td { + padding: @filterRowHiddenHeight / 2; + margin: 0; + line-height: 0; + cursor: pointer; + } + .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); + } + /* rows hidden by filtering (needed for child rows) */ + .filtered { + display: none; + } + + /* ajax error row */ + .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: @errorBackground; + } + +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/less/metro.less b/vendor/FHC-vendor/jquery-tablesorter/dist/css/less/metro.less new file mode 100644 index 000000000..62b929264 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/less/metro.less @@ -0,0 +1,357 @@ +/* Tablesorter Custom Metro LESS Theme by Rob Garrison + +To create your own theme, modify the code below and run it through +a LESS compiler, like this one: http://leafo.net/lessphp/editor.html +or download less.js from http://lesscss.org/ + +Test out these custom less files live + Basic Theme : http://codepen.io/Mottie/pen/eqBbn + Bootstrap : http://codepen.io/Mottie/pen/Ltzpi + Metro Style : http://codepen.io/Mottie/pen/gCslk + +*/ + +/*** theme ***/ +@theme : tablesorter-metro; + +/*** fonts ***/ +@tableHeaderFont : 14px 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; +@tableBodyFont : 14px 'Segoe UI Semilight', 'Open Sans', Verdana, Arial, Helvetica, sans-serif; + +/*** color definitions ***/ +/* for best results, only change the hue (120), + leave the saturation (60%) and luminosity (75%) alone + pick the color from here: http://hslpicker.com/#825a2b + + Inspired by http://www.jtable.org/ metro themes: + Blue: hsl(212, 86%, 35%) + Brown hsl(32, 50%, 30%) + Crimson hsl(0, 100%, 38%) + Dark Grey hsl(0, 0%, 27%) + Dark Orange hsl(13, 70%, 51%) + Green hsl(120, 100%, 32%) + Light Gray hsl(0, 0%, 44%) + Pink hsl(297, 100%, 33%) + Purple hsl(257, 51%, 48%) + Red hsl(5, 100%, 40%) + + */ +@headerBackground : hsl(32, 50%, 30%); +@borderAndBackground : #cdcdcd; +@headerTextColor : #eee; + +@bodyBackground : #fff; +@bodyTextColor : #000; + +@captionBackground : #fff; /* it might be best to match the document body background color here */ +@errorBackground : #e6bf99; /* ajax error message (added to thead) */ + +@filterCellBackground : #eee; +@filterElementTextColor: #333; +@filterElementBkgd : #fff; +@filterElementBorder : 1px solid #bbb; +@filterTransitionTime : 0.1s; +@filterRowHiddenHeight : 4px; /* becomes height using padding (so it's divided by 2) */ + +@overallPadding : 4px; +/* 20px should be slightly wider than the icon width to avoid overlap */ +@headerPadding : 4px 20px 4px 4px; + +/* url(icons/loading.gif); */ +@processingIcon : url('data:image/gif;base64,R0lGODlhEAAQAPIAAP///1VVVdbW1oCAgFVVVZaWlqurq7a2tiH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQJCgAAACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkECQoAAAAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkECQoAAAAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkECQoAAAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQJCgAAACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQJCgAAACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAkKAAAALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA=='); + +/* zebra striping */ +.allRows { + background-color: @bodyBackground; + color: @bodyTextColor; +} +.evenRows { + background-color: lighten( desaturate(@headerBackground, 80%), 70%); + color: @bodyTextColor; +} +.oddRows { + background-color: lighten( desaturate(@headerBackground, 80%), 50%); +} + +/* hovered rows */ +.oddHovered { + background-color: lighten( desaturate(@headerBackground, 50%), 40%); + color: @bodyTextColor; +} +.evenHovered { + background-color: lighten( desaturate(@headerBackground, 50%), 30%); + color: @bodyTextColor; +} + +/* Columns widget */ +@primaryOdd : lighten( spin(@headerBackground, 10), 40%); +@primaryEven : lighten( @primaryOdd, 8% ); +@secondaryOdd : @primaryEven; +@secondaryEven : lighten( @primaryEven, 8% ); +@tertiaryOdd : @secondaryEven; +@tertiaryEven : lighten( @secondaryEven, 8% ); + +/* Filter widget transition */ +.filterWidgetTransition { + -webkit-transition: line-height @filterTransitionTime ease; + -moz-transition: line-height @filterTransitionTime ease; + -o-transition: line-height @filterTransitionTime ease; + transition: line-height @filterTransitionTime ease; +} + +/*** Arrows ***/ +@arrowPosition : right 5px center; + +/* black */ +@unsortedBlack : url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABt0UjBAAAACnRSTlMAMwsqXt+gIBUGxGoDMAAAAFlJREFUCNctzC0SQAAUReEzGNQ3AlHRiSRZFCVZYgeswRL8hLdK7834wj3tAlGP6y7fYHpKS6w6WwbVG0I1NZVnZPG8/DYxOYlnhUYkA06R1s9ESsxR4NIdPhkPFDFYuEnMAAAAAElFTkSuQmCC); +@sortAscBlack : url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABt0UjBAAAACnRSTlMAMwsqXt+gIBUGxGoDMAAAAFlJREFUCNctzC0SQAAUReEzGNQ3AlHRiSRZFCVZYgeswRL8hLdK7834wj3tAlGP6y7fYHpKS6w6WwbVG0I1NZVnZPG8/DYxOYlnhUYkA06R1s9ESsxR4NIdPhkPFDFYuEnMAAAAAElFTkSuQmCC); +@sortDescBlack : url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAALVBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADBoCg+AAAADnRSTlMAMiweCQITTvDctZZqaTlM310AAABcSURBVAjXY2BgYEtgAAFHERDJqigUAKSYBQUNgFSioKAYAwOLIBA4MASBKFUGQxAlzAAF+94BwWuGKBC1lIFl3rt3Lx0YGCzevWsGSjK9e6cAUlT3HKyW9wADAwDRrBiDy6bKzwAAAABJRU5ErkJggg==); + +/* white */ +@unsortedWhite : url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAElBMVEUAAADu7u7u7u7u7u7u7u7u7u7yb344AAAABnRSTlMAMhIHKyAHBrhHAAAATElEQVQI12NgYGBSYAABQ2Ew5SgCIlkFBQOAlKKgoBADA7MgEBgwsIAoB4ZAECXKAAFQHkg9WIejoCBIv4mgoDOQYgZpAxkDNARqEQBTkAYuMZEHPgAAAABJRU5ErkJggg==); +@sortAscWhite : url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAHlBMVEUAAADu7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u4+jEeEAAAACXRSTlMAMwkqFV7roCD4hW+/AAAAWUlEQVQI1y3MrQ5AABSG4Xd+Rj0jiDabjKZxB6qqaarGNRh27tY5myd8b/uAeML1l2+wPqUlUd0ss+oNoZqG2rOwe15+p5iC1HNAK5IBlUjnZyIlZsxx0QAfzokSZgp96u4AAAAASUVORK5CYII=); +@sortDescWhite : url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAJ1BMVEUAAADu7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u4RJgHSAAAADHRSTlMAMiweCQITaU7olrlu2HdvAAAAXElEQVQI12NgYGBLYAABRxEQyaooFACkmAUFDYBUoqCgGAMDiyAQODAEgShVBkMQJcwABWvOAMEphmgQtZWBZc6ZMycdGBhszpw5DJRkOnNGAaSo5wRYLXsBAwMAi4YWQHRX4F0AAAAASUVORK5CYII=); + +/* automatically choose the correct arrow/text color */ +.headerText (@a) when (lightness(@a) >= 50%) { + color: @headerTextColor; +} +.headerText (@a) when (lightness(@a) < 50%) { + color: lighten(@headerTextColor, 90%); +} +.unsorted (@a) when (lightness(@a) >= 50%) { + background-image: @unsortedBlack; +} +.unsorted (@a) when (lightness(@a) < 50%) { + background-image: @unsortedWhite; +} +.sortAsc (@a) when (lightness(@a) >= 50%) { + background-image: @sortAscBlack; +} +.sortAsc (@a) when (lightness(@a) < 50%) { + background-image: @sortAscWhite; +} +.sortDesc (@a) when (lightness(@a) >= 50%) { + background-image: @sortDescBlack; +} +.sortDesc (@a) when (lightness(@a) < 50%) { + background-image: @sortDescWhite; +} + +/* variable theme name - requires less.js 1.3+; + or just replace (!".@{theme}") with the contents of @theme +*/ +.@{theme} { + font: @tableBodyFont; + background-color: @borderAndBackground; + margin: 10px 0 15px; + width: 100%; + text-align: left; + border-spacing: 0; + border: 0; + + th, td { + border: 0; + } + + /* style th's outside of the thead */ + th, thead td { + font: @tableHeaderFont; + font-weight: bold; + background-color: @headerBackground; + color: @headerTextColor; + .headerText(@headerBackground); + border-collapse: collapse; + padding: @overallPadding; + } + + .dark-row th, .dark-row td, caption.dark-row { + background-color: darken( @headerBackground, 10% ); + } + + tbody td, tfoot th, tfoot td { + padding: @overallPadding; + vertical-align: top; + } + + /* style header */ + .tablesorter-header { + .unsorted(@headerBackground); + background-repeat: no-repeat; + background-position: @arrowPosition; + cursor: pointer; + white-space: normal; + } + + .tablesorter-header-inner { + padding: @headerPadding; + } + + .tablesorter-header.sorter-false { + background-image: none; + cursor: default; + padding: @overallPadding; + } + + .tablesorter-headerAsc { + .sortAsc(@headerBackground); + } + + .tablesorter-headerDesc { + .sortDesc(@headerBackground); + } + + /* tfoot */ + tfoot .tablesorter-headerAsc, + tfoot .tablesorter-headerDesc { + /* remove sort arrows from footer */ + background-image: none; + } + + /* optional disabled input styling */ + .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; + } + + /* body */ + tbody { + + td { + .allRows; + padding: @overallPadding; + vertical-align: top; + } + + /* Zebra Widget - row alternating colors */ + tr.odd > td { + .oddRows; + } + tr.even > td { + .evenRows; + } + + } + + /* hovered row colors + you'll need to add additional lines for + rows with more than 2 child rows + */ + tbody > tr.hover > td, + tbody > tr:hover > td, + tbody > tr:hover + tr.tablesorter-childRow > td, + tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td, + tbody > tr.even.hover > td, + tbody > tr.even:hover > td, + tbody > tr.even:hover + tr.tablesorter-childRow > td, + tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + .evenHovered; + } + tbody > tr.odd.hover > td, + tbody > tr.odd:hover > td, + tbody > tr.odd:hover + tr.tablesorter-childRow > td, + tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + .oddHovered; + } + + /* table processing indicator - indeterminate spinner */ + .tablesorter-processing { + background-image: @processingIcon; + background-position: center center; + background-repeat: no-repeat; + } + + /* pager */ + div.tablesorter-pager { + button { + background-color: lighten( @headerBackground, 7% ); + color: @headerTextColor; + border: lighten( @headerBackground, 15% ) 1px solid; + cursor: pointer; + } + button:hover { + background-color: lighten( @headerBackground, 15% ); + } + } + + /* Column Widget - column sort colors */ + tr.odd td.primary { + background-color: @primaryOdd; + } + td.primary, tr.even td.primary { + background-color: @primaryEven; + } + tr.odd td.secondary { + background-color: @secondaryOdd; + } + td.secondary, tr.even td.secondary { + background-color: @secondaryEven; + } + tr.odd td.tertiary { + background-color: @tertiaryOdd; + } + td.tertiary, tr.even td.tertiary { + background-color: @tertiaryEven; + } + + /* caption (non-theme matching) */ + caption { + background-color: @captionBackground ; + } + + /* filter widget */ + .tablesorter-filter-row input, + .tablesorter-filter-row select{ + width: 98%; + height: auto; + margin: 0; + padding: @overallPadding; + color: @filterElementTextColor; + background-color: @filterElementBkgd; + border: @filterElementBorder; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + .filterWidgetTransition; + } + .tablesorter-filter-row { + background-color: @filterCellBackground; + } + .tablesorter-filter-row td { + text-align: center; + background-color: @filterCellBackground; + line-height: normal; + text-align: center; /* center the input */ + .filterWidgetTransition; + } + /* hidden filter row */ + .tablesorter-filter-row.hideme td { + padding: @filterRowHiddenHeight / 2; + margin: 0; + line-height: 0; + cursor: pointer; + } + .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); + } + /* rows hidden by filtering (needed for child rows) */ + .filtered { + display: none; + } + + /* ajax error row */ + .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: @errorBackground; + } + +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/less/theme.less b/vendor/FHC-vendor/jquery-tablesorter/dist/css/less/theme.less new file mode 100644 index 000000000..c0a4d7922 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/less/theme.less @@ -0,0 +1,329 @@ +/* Tablesorter Custom LESS Theme by Rob Garrison + + To create your own theme, modify the code below and run it through + a LESS compiler, like this one: http://leafo.net/lessphp/editor.html + or download less.js from http://lesscss.org/ + +Test out these custom less files live + Basic Theme : http://codepen.io/Mottie/pen/eqBbn + Bootstrap : http://codepen.io/Mottie/pen/Ltzpi + Metro Style : http://codepen.io/Mottie/pen/gCslk + + */ + +/*** theme ***/ +@theme : tablesorter-custom; + +/*** fonts ***/ +@tableHeaderFont : 11px 'trebuchet ms', verdana, arial; +@tableBodyFont : 11px 'trebuchet ms', verdana, arial; + +/*** color definitions ***/ +/* for best results, only change the hue (120), + leave the saturation (60%) and luminosity (75%) alone + pick the color from here: http://hslpicker.com/#99E699 */ +@headerBackground : hsl(120, 60%, 75%); +@borderAndBackground : #cdcdcd; +@overallBorder : @borderAndBackground 1px solid; +@headerTextColor : #000; + +@bodyBackground : #fff; +@bodyTextColor : #000; + +@headerAsc : darken(spin(@headerBackground, 5), 10%); /* darken(@headerBackground, 10%); */ +@headerDesc : lighten(spin(@headerBackground, -5), 10%); /* desaturate(@headerAsc, 5%); */ + +@captionBackground : #fff; /* it might be best to match the document body background color here */ +@errorBackground : #e6bf99; /* ajax error message (added to thead) */ + +@filterCellBackground : #eee; +@filterElementTextColor: #333; +@filterElementBkgd : #fff; +@filterElementBorder : 1px solid #bbb; +@filterTransitionTime : 0.1s; +@filterRowHiddenHeight : 4px; /* becomes height using padding (so it's divided by 2) */ + +@overallPadding : 4px; +/* 20px should be slightly wider than the icon width to avoid overlap */ +@headerPadding : 4px 20px 4px 4px; + +/* url(icons/loading.gif); */ +@processingIcon : url('data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs='); + +/* zebra striping */ +.allRows { + background-color: @bodyBackground; + color: @bodyTextColor; +} +.evenRows { + background-color: lighten(@headerBackground, 40%); + color: @bodyTextColor; +} +.oddRows { + background-color: lighten(@headerBackground, 20%); +} + +/* hovered rows */ +.oddHovered { + background-color: desaturate(@headerBackground, 60%); + color: @bodyTextColor; +} +.evenHovered { + background-color: lighten( desaturate(@headerBackground, 60%), 10% ); + color: @bodyTextColor; +} + +/* Columns widget */ +@primaryOdd : spin(@headerBackground, 10); /* saturate( darken( desaturate(@headerBackground, 10%), 10% ), 30%); */ +@primaryEven : lighten( @primaryOdd, 10% ); +@secondaryOdd : @primaryEven; +@secondaryEven : lighten( @primaryEven, 5% ); +@tertiaryOdd : @secondaryEven; +@tertiaryEven : lighten( @secondaryEven, 5% ); + +/* Filter widget transition */ +.filterWidgetTransition { + -webkit-transition: line-height @filterTransitionTime ease; + -moz-transition: line-height @filterTransitionTime ease; + -o-transition: line-height @filterTransitionTime ease; + transition: line-height @filterTransitionTime ease; +} + +/*** Arrows ***/ +@arrowPosition : right 5px center; + +/* black */ +@unsortedBlack : url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); +@sortAscBlack : url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); +@sortDescBlack : url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); + +/* white */ +@unsortedWhite : url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==); +@sortAscWhite : url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7); +@sortDescWhite : url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7); + +/* automatically choose the correct arrow/text color */ +.headerText (@a) when (lightness(@a) >= 50%) { + color: @headerTextColor; +} +.headerText (@a) when (lightness(@a) < 50%) { + color: lighten(@headerTextColor, 90%); +} +.unsorted (@a) when (lightness(@a) >= 50%) { + background-image: @unsortedBlack; +} +.unsorted (@a) when (lightness(@a) < 50%) { + background-image: @unsortedWhite; +} +.sortAsc (@a) when (lightness(@a) >= 50%) { + background-image: @sortAscBlack; +} +.sortAsc (@a) when (lightness(@a) < 50%) { + background-image: @sortAscWhite; +} +.sortDesc (@a) when (lightness(@a) >= 50%) { + background-image: @sortDescBlack; +} +.sortDesc (@a) when (lightness(@a) < 50%) { + background-image: @sortDescWhite; +} + +/* variable theme name - requires less.js 1.3+; + or just replace (!".@{theme}") with the contents of @theme + */ +.@{theme} { + font: @tableBodyFont; + background-color: @borderAndBackground; + margin: 10px 0 15px; + width: 100%; + text-align: left; + border-spacing: 0; + border: @overallBorder; + border-width: 1px 0 0 1px; + + th, td { + border: @overallBorder; + border-width: 0 1px 1px 0; + } + + /* style th's outside of the thead */ + th, thead td { + font: @tableHeaderFont; + font-weight: bold; + background-color: @headerBackground; + .headerText(@headerBackground); + border-collapse: collapse; + padding: @overallPadding; + } + + tbody td, tfoot th, tfoot td { + padding: @overallPadding; + vertical-align: top; + } + + /* style header */ + .tablesorter-header { + .unsorted(@headerBackground); + background-repeat: no-repeat; + background-position: @arrowPosition; + padding: @headerPadding; + cursor: pointer; + } + + .tablesorter-header.sorter-false { + background-image: none; + cursor: default; + padding: @overallPadding; + } + + .tablesorter-headerAsc { + background-color: @headerAsc; + .sortAsc(@headerBackground); + } + + .tablesorter-headerDesc { + background-color: @headerDesc; + .sortDesc(@headerBackground); + } + + /* tfoot */ + tfoot .tablesorter-headerAsc, + tfoot .tablesorter-headerDesc { + /* remove sort arrows from footer */ + background-image: none; + } + + /* optional disabled input styling */ + .disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: not-allowed; + } + + /* body */ + tbody { + + td { + .allRows; + padding: @overallPadding; + vertical-align: top; + } + + /* Zebra Widget - row alternating colors */ + tr.odd > td { + .oddRows; + } + tr.even > td { + .evenRows; + } + + } + + /* hovered row colors + you'll need to add additional lines for + rows with more than 2 child rows + */ + tbody > tr.hover td, + tbody > tr:hover td, + tbody > tr:hover + tr.tablesorter-childRow > td, + tbody > tr:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td, + tbody > tr.even.hover > td, + tbody > tr.even:hover > td, + tbody > tr.even:hover + tr.tablesorter-childRow > td, + tbody > tr.even:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + .evenHovered; + } + tbody > tr.odd.hover > td, + tbody > tr.odd:hover > td, + tbody > tr.odd:hover + tr.tablesorter-childRow > td, + tbody > tr.odd:hover + tr.tablesorter-childRow + tr.tablesorter-childRow > td { + .oddHovered; + } + + /* table processing indicator - indeterminate spinner */ + .tablesorter-processing { + background-image: @processingIcon; + background-position: center center; + background-repeat: no-repeat; + } + + /* Column Widget - column sort colors */ + tr.odd td.primary { + background-color: @primaryOdd; + } + td.primary, tr.even td.primary { + background-color: @primaryEven; + } + tr.odd td.secondary { + background-color: @secondaryOdd; + } + td.secondary, tr.even td.secondary { + background-color: @secondaryEven; + } + tr.odd td.tertiary { + background-color: @tertiaryOdd; + } + td.tertiary, tr.even td.tertiary { + background-color: @tertiaryEven; + } + + /* caption (non-theme matching) */ + caption { + background-color: @captionBackground ; + } + + /* filter widget */ + .tablesorter-filter-row input, + .tablesorter-filter-row select { + width: 98%; + height: auto; + margin: 0; + padding: @overallPadding; + color: @filterElementTextColor; + background-color: @filterElementBkgd; + border: @filterElementBorder; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + .filterWidgetTransition; + } + .tablesorter-filter-row { + background-color: @filterCellBackground; + } + .tablesorter-filter-row td { + text-align: center; + background-color: @filterCellBackground; + line-height: normal; + text-align: center; /* center the input */ + .filterWidgetTransition; + } + /* hidden filter row */ + .tablesorter-filter-row.hideme td { + padding: @filterRowHiddenHeight / 2; + margin: 0; + line-height: 0; + cursor: pointer; + } + .tablesorter-filter-row.hideme * { + height: 1px; + min-height: 0; + border: 0; + padding: 0; + margin: 0; + /* don't use visibility: hidden because it disables tabbing */ + opacity: 0; + filter: alpha(opacity=0); + } + /* rows hidden by filtering (needed for child rows) */ + .filtered { + display: none; + } + + /* ajax error row */ + .tablesorter-errorRow td { + text-align: center; + cursor: pointer; + background-color: @errorBackground; + } + +} diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.blackice.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.blackice.min.css new file mode 100644 index 000000000..0d728c756 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.blackice.min.css @@ -0,0 +1 @@ +.tablesorter-blackice{width:100%;margin-right:auto;margin-left:auto;font:11px/18px Arial,Sans-serif;text-align:left;background-color:#000;border-collapse:collapse;border-spacing:0}.tablesorter-blackice th,.tablesorter-blackice thead td{padding:4px;font:13px/20px Arial,Sans-serif;font-weight:700;color:#e5e5e5;text-align:left;text-shadow:0 1px 0 rgba(0,0,0,.7);background-color:#111;border:1px solid #232323}.tablesorter-blackice .header,.tablesorter-blackice .tablesorter-header{padding:4px 20px 4px 4px;cursor:pointer;background-image:url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);background-position:center right;background-repeat:no-repeat}.tablesorter-blackice .headerSortUp,.tablesorter-blackice .tablesorter-headerAsc,.tablesorter-blackice .tablesorter-headerSortUp{background-image:url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7);color:#fff}.tablesorter-blackice .headerSortDown,.tablesorter-blackice .tablesorter-headerDesc,.tablesorter-blackice .tablesorter-headerSortDown{color:#fff;background-image:url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7)}.tablesorter-blackice thead .sorter-false{background-image:none;cursor:default;padding:4px}.tablesorter-blackice tfoot .tablesorter-headerAsc,.tablesorter-blackice tfoot .tablesorter-headerDesc,.tablesorter-blackice tfoot .tablesorter-headerSortDown,.tablesorter-blackice tfoot .tablesorter-headerSortUp{background-image:none}.tablesorter-blackice td{padding:4px;color:#ccc;vertical-align:top;background-color:#333;border:1px solid #232323}.tablesorter-blackice tbody>tr.even:hover>td,.tablesorter-blackice tbody>tr.hover>td,.tablesorter-blackice tbody>tr.odd:hover>td,.tablesorter-blackice tbody>tr:hover>td{background-color:#000}.tablesorter-blackice .tablesorter-processing{background-position:center center!important;background-repeat:no-repeat!important;background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=)!important}.tablesorter-blackice tr.odd>td{background-color:#333}.tablesorter-blackice tr.even>td{background-color:#393939}.tablesorter-blackice td.primary,.tablesorter-blackice tr.odd td.primary{background-color:#2f3a40}.tablesorter-blackice td.secondary,.tablesorter-blackice tr.even td.primary,.tablesorter-blackice tr.odd td.secondary{background-color:#3f4a50}.tablesorter-blackice td.tertiary,.tablesorter-blackice tr.even td.secondary,.tablesorter-blackice tr.odd td.tertiary{background-color:#4f5a60}.tablesorter-blackice tr.even td.tertiary{background-color:#5a646b}caption{background-color:#fff}.tablesorter-blackice .tablesorter-filter-row{background-color:#222}.tablesorter-blackice .tablesorter-filter-row td{background-color:#222;line-height:normal;text-align:center;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-blackice .tablesorter-filter-row .disabled{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed}.tablesorter-blackice .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0;cursor:pointer}.tablesorter-blackice .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter-blackice input.tablesorter-filter,.tablesorter-blackice select.tablesorter-filter{width:98%;height:auto;margin:0;padding:4px;background-color:#fff;border:1px solid #bbb;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter .filtered{display:none}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.blue.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.blue.min.css new file mode 100644 index 000000000..8276861fb --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.blue.min.css @@ -0,0 +1 @@ +.tablesorter-blue{width:100%;background-color:#fff;margin:10px 0 15px;text-align:left;border-spacing:0;border:1px solid #cdcdcd;border-width:1px 0 0 1px}.tablesorter-blue td,.tablesorter-blue th{border:1px solid #cdcdcd;border-width:0 1px 1px 0}.tablesorter-blue th,.tablesorter-blue thead td{font:12px/18px Arial,Sans-serif;font-weight:700;color:#000;background-color:#99bfe6;border-collapse:collapse;padding:4px;text-shadow:0 1px 0 rgba(204,204,204,.7)}.tablesorter-blue tbody td,.tablesorter-blue tfoot td,.tablesorter-blue tfoot th{padding:4px;vertical-align:top}.tablesorter-blue .header,.tablesorter-blue .tablesorter-header{background-image:url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);background-repeat:no-repeat;background-position:center right;padding:4px 18px 4px 4px;white-space:normal;cursor:pointer}.tablesorter-blue .headerSortUp,.tablesorter-blue .tablesorter-headerAsc,.tablesorter-blue .tablesorter-headerSortUp{background-color:#9fbfdf;background-image:url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7)}.tablesorter-blue .headerSortDown,.tablesorter-blue .tablesorter-headerDesc,.tablesorter-blue .tablesorter-headerSortDown{background-color:#8cb3d9;background-image:url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7)}.tablesorter-blue thead .sorter-false{background-image:none;cursor:default;padding:4px}.tablesorter-blue tfoot .tablesorter-headerAsc,.tablesorter-blue tfoot .tablesorter-headerDesc,.tablesorter-blue tfoot .tablesorter-headerSortDown,.tablesorter-blue tfoot .tablesorter-headerSortUp{background-image:none}.tablesorter-blue td{color:#3d3d3d;background-color:#fff;padding:4px;vertical-align:top}.tablesorter-blue tbody>tr.even.hover>td,.tablesorter-blue tbody>tr.even:hover+tr.tablesorter-childRow+tr.tablesorter-childRow>td,.tablesorter-blue tbody>tr.even:hover+tr.tablesorter-childRow>td,.tablesorter-blue tbody>tr.even:hover>td,.tablesorter-blue tbody>tr.hover>td,.tablesorter-blue tbody>tr:hover+tr.tablesorter-childRow+tr.tablesorter-childRow>td,.tablesorter-blue tbody>tr:hover+tr.tablesorter-childRow>td,.tablesorter-blue tbody>tr:hover>td{background-color:#d9d9d9}.tablesorter-blue tbody>tr.odd.hover>td,.tablesorter-blue tbody>tr.odd:hover+tr.tablesorter-childRow+tr.tablesorter-childRow>td,.tablesorter-blue tbody>tr.odd:hover+tr.tablesorter-childRow>td,.tablesorter-blue tbody>tr.odd:hover>td{background-color:#bfbfbf}.tablesorter-blue .tablesorter-processing{background-position:center center!important;background-repeat:no-repeat!important;background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=)!important}.tablesorter-blue tbody tr.odd>td{background-color:#ebf2fa}.tablesorter-blue tbody tr.even>td{background-color:#fff}.tablesorter-blue td.primary,.tablesorter-blue tr.odd td.primary{background-color:#99b3e6}.tablesorter-blue td.secondary,.tablesorter-blue tr.even td.primary,.tablesorter-blue tr.odd td.secondary{background-color:#c2d1f0}.tablesorter-blue td.tertiary,.tablesorter-blue tr.even td.secondary,.tablesorter-blue tr.odd td.tertiary{background-color:#d6e0f5}.tablesorter-blue tr.even td.tertiary{background-color:#ebf0fa}caption{background-color:#fff}.tablesorter-blue .tablesorter-filter-row{background-color:#eee}.tablesorter-blue .tablesorter-filter-row td{background-color:#eee;line-height:normal;text-align:center;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-blue .tablesorter-filter-row .disabled{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed}.tablesorter-blue .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0;cursor:pointer}.tablesorter-blue .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter-blue input.tablesorter-filter,.tablesorter-blue select.tablesorter-filter{width:98%;height:auto;margin:0;padding:4px;background-color:#fff;border:1px solid #bbb;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter .filtered{display:none}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.bootstrap.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.bootstrap.min.css new file mode 100644 index 000000000..9ce906402 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.bootstrap.min.css @@ -0,0 +1 @@ +.tablesorter-bootstrap{width:100%}.tablesorter-bootstrap tfoot td,.tablesorter-bootstrap tfoot th,.tablesorter-bootstrap thead td,.tablesorter-bootstrap thead th{font:14px/20px Arial,Sans-serif;font-weight:700;padding:4px;margin:0 0 18px;background-color:#eee}.tablesorter-bootstrap .tablesorter-header{cursor:pointer}.tablesorter-bootstrap .tablesorter-header-inner{position:relative;padding:4px 18px 4px 4px}.tablesorter-bootstrap .tablesorter-header i.tablesorter-icon{font-size:11px;position:absolute;right:2px;top:50%;margin-top:-7px;width:14px;height:14px;background-repeat:no-repeat;line-height:14px;display:inline-block}.tablesorter-bootstrap .bootstrap-icon-unsorted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAMAAADOvxanAAAAVFBMVEUAAABCQkJZWVkZGRnJyckgICAZGRkZGRn8/PweHh4dHR0aGhoaGhpUVFQbGxvQ0NDc3NxMTExSUlIbGxvr6+s4ODhKSkogICAtLS00NDQzMzMnJydSEPrQAAAAGHRSTlMA1ssZRLgdAQbDyisqsZo8QdXUq0r9xPepSRwiAAAAX0lEQVQI13XHSQKAIAwEwQAKxn13Ev7/T2Pu9qmarJKPXIicI4PH4hxaKNrhm2S8bJK5h4YzKHrzJNtK6yYT/TdXzpS5zuYg4MSQYF6i4IHExdw1UVRi05HPrrvT53a+qyMFC9t04gcAAAAASUVORK5CYII=)}.tablesorter-bootstrap .icon-white.bootstrap-icon-unsorted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOBAMAAAALT/umAAAAKlBMVEUAAAD///////////////////////////////////////////////////+Gu8ovAAAADXRSTlMA4EXKBtQqvR0+sxmalc142gAAAFdJREFUCNdjYGDoamAAAjZbMxCVfvd6AgMDd+3du9UMDKx3hWSvMjBwXZww8RYDGuC53NB8h4GB8a617UUGBs7Yu3cjGRhYVO9eVQFKOskKOQApFmUgBwBZ+xXRTttNdAAAAABJRU5ErkJggg==)}.tablesorter-bootstrap>tbody>tr.odd>td,.tablesorter-bootstrap>tbody>tr.tablesorter-hasChildRow.odd:hover~tr.tablesorter-hasChildRow.odd~.tablesorter-childRow.odd>td{background-color:#f9f9f9}.tablesorter-bootstrap>tbody>tr.even:hover>td,.tablesorter-bootstrap>tbody>tr.hover>td,.tablesorter-bootstrap>tbody>tr.odd:hover>td,.tablesorter-bootstrap>tbody>tr.tablesorter-hasChildRow.even:hover~.tablesorter-childRow.even>td,.tablesorter-bootstrap>tbody>tr.tablesorter-hasChildRow.odd:hover~.tablesorter-childRow.odd>td{background-color:#f5f5f5}.caption,.tablesorter-bootstrap>tbody>tr.even>td,.tablesorter-bootstrap>tbody>tr.tablesorter-hasChildRow.even:hover~tr.tablesorter-hasChildRow.even~.tablesorter-childRow.even>td{background-color:#fff}.tablesorter-bootstrap .tablesorter-processing{background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=);background-position:center center!important;background-repeat:no-repeat!important}.tablesorter-bootstrap .tablesorter-filter-row input.tablesorter-filter,.tablesorter-bootstrap .tablesorter-filter-row select.tablesorter-filter{width:98%;margin:0;padding:4px 6px;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter.disabled{background-color:#eee;color:#555;cursor:not-allowed;border:1px solid #ccc;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.075) inset;box-sizing:border-box;transition:height .1s ease}.tablesorter-bootstrap .tablesorter-filter-row{background-color:#efefef}.tablesorter-bootstrap .tablesorter-filter-row td{background-color:#efefef;line-height:normal;text-align:center;padding:4px 6px;vertical-align:middle;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-bootstrap .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0}.tablesorter-bootstrap .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter .filtered{display:none}.tablesorter-bootstrap .tablesorter-pager select{padding:4px 6px}.tablesorter-bootstrap .tablesorter-pager .pagedisplay{border:0}.tablesorter-bootstrap tfoot i{font-size:11px}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.bootstrap_2.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.bootstrap_2.min.css new file mode 100644 index 000000000..f855e0809 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.bootstrap_2.min.css @@ -0,0 +1 @@ +.tablesorter-bootstrap{width:100%}.tablesorter-bootstrap .tablesorter-header,.tablesorter-bootstrap tfoot td,.tablesorter-bootstrap tfoot th{font:14px/20px Arial,Sans-serif;font-weight:700;position:relative;padding:8px;margin:0 0 18px;list-style:none;background-color:#FBFBFB;background-image:-moz-linear-gradient(top,#fff,#efefef);background-image:-ms-linear-gradient(top,#fff,#efefef);background-image:-webkit-gradient(linear,0 0,0 100%,from(white),to(#efefef));background-image:-webkit-linear-gradient(top,#fff,#efefef);background-image:-o-linear-gradient(top,#fff,#efefef);background-image:linear-gradient(to bottom,#fff,#efefef);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#efefef', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 1px 0 #fff;-moz-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff}.tablesorter-bootstrap .tablesorter-header{cursor:pointer}.tablesorter-bootstrap .tablesorter-header-inner{position:relative;padding:4px 18px 4px 4px}.tablesorter-bootstrap .tablesorter-header i.tablesorter-icon{position:absolute;right:2px;top:50%;margin-top:-7px;width:14px;height:14px;background-repeat:no-repeat;line-height:14px;display:inline-block}.tablesorter-bootstrap .bootstrap-icon-unsorted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOCAYAAAD5YeaVAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAWVJREFUeNqUUL9Lw2AUTGP8mqGlpBQkNeCSRcckEBcHq1jImMElToKuDvpHFMGhU0BQcHBwLji6CE1B4uB/INQsDi4d2jQ/fPeZxo764OV6915f7lLJ81xot9tCURXqdVEUr7IsO6ffH9Q5BlEUCaLwWxWqTcbYnaIoh0Dw4gAvcWlxq1qt9hqNxg6hUGAP+uIPUrGs0qXLer2+v/pTX6QpxLtkc2U2m53ACb8sSdIDXerSEms2m6+DweAICA4d89KGbduf9MpEVdXQ9/2LVqv1CASHjjn3iq/x1xKFfxQPqGnada1W86bT6SiO42OS3qk3KPStLMvbk8nkfjwen/LLuq6blFymMB0KdUPSGhAcOualjX6/f0bCiC7NaWGPQr0BwaFjzn0gYJqmLAiCA8/zni3LmhuGkQPBoWPOPwQeaPIqD4fDruu6L6Zp5kBw6IudchmdJAkLw3DXcZwnIPjy/FuAAQCiqqWWCAFKcwAAAABJRU5ErkJggg==)}.tablesorter-bootstrap .icon-white.bootstrap-icon-unsorted{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAOBAMAAAALT/umAAAAKlBMVEUAAAD///////////////////////////////////////////////////+Gu8ovAAAADXRSTlMA4EXKBtQqvR0+sxmalc142gAAAFdJREFUCNdjYGDoamAAAjZbMxCVfvd6AgMDd+3du9UMDKx3hWSvMjBwXZww8RYDGuC53NB8h4GB8a617UUGBs7Yu3cjGRhYVO9eVQFKOskKOQApFmUgBwBZ+xXRTttNdAAAAABJRU5ErkJggg==)}.tablesorter-bootstrap tr.odd>td{background-color:#f9f9f9}.tablesorter-bootstrap tbody>.even:hover>td,.tablesorter-bootstrap tbody>.odd:hover>td,.tablesorter-bootstrap tbody>tr.hover>td{background-color:#f5f5f5}.tablesorter-bootstrap tbody>tr.even>td,caption{background-color:#fff}.tablesorter-bootstrap .tablesorter-processing{background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=);position:absolute;z-index:1000}.tablesorter-bootstrap .tablesorter-filter-row input.tablesorter-filter,.tablesorter-bootstrap .tablesorter-filter-row select.tablesorter-filter{height:28px;width:98%;margin:0;padding:4px 6px;background-color:#fff;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter-bootstrap .tablesorter-filter-row .tablesorter-filter.disabled{background-color:#eee;cursor:not-allowed}.tablesorter-bootstrap .tablesorter-filter-row{background-color:#ddd}.tablesorter-bootstrap .tablesorter-filter-row td{background-color:#eee;line-height:normal;text-align:center;padding:4px 6px;vertical-align:middle;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-bootstrap tr.tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0}.tablesorter-bootstrap tr.tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter .filtered{display:none}.tablesorter-bootstrap .tablesorter-pager select{padding:4px 6px}.tablesorter-bootstrap .tablesorter-pager .pagedisplay{border:0}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.dark.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.dark.min.css new file mode 100644 index 000000000..7b3801b58 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.dark.min.css @@ -0,0 +1 @@ +.tablesorter-dark,.tablesorter-dark tbody>tr.even:hover>td,.tablesorter-dark tbody>tr.hover>td,.tablesorter-dark tbody>tr.odd:hover>td,.tablesorter-dark tbody>tr:hover>td,.tablesorter-dark td{background-color:#000}.tablesorter-dark{width:100%;font:11px/18px Arial,Sans-serif;color:#ccc;text-align:left;border-spacing:0}.tablesorter-dark th,.tablesorter-dark thead td{padding:4px;font:12px/20px Arial,Sans-serif;font-weight:700;color:#fff;background-color:#000;border-collapse:collapse}.tablesorter-dark thead th{border-bottom:#333 2px solid}.tablesorter-dark .header,.tablesorter-dark .tablesorter-header{padding:4px 20px 4px 4px;cursor:pointer;background-image:url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);background-position:center right;background-repeat:no-repeat}.tablesorter-dark thead .headerSortUp,.tablesorter-dark thead .tablesorter-headerAsc,.tablesorter-dark thead .tablesorter-headerSortUp{background-image:url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7);border-bottom:#888 1px solid}.tablesorter-dark thead .headerSortDown,.tablesorter-dark thead .tablesorter-headerDesc,.tablesorter-dark thead .tablesorter-headerSortDown{background-image:url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);border-bottom:#888 1px solid}.tablesorter-dark thead .sorter-false{background-image:none;cursor:default;padding:4px}.tablesorter-dark tfoot .tablesorter-headerAsc,.tablesorter-dark tfoot .tablesorter-headerDesc,.tablesorter-dark tfoot .tablesorter-headerSortDown,.tablesorter-dark tfoot .tablesorter-headerSortUp{border-top:#888 1px solid;background-image:none}.tablesorter-dark td{padding:4px;border-bottom:#333 1px solid;color:#ccc}.tablesorter-dark .tablesorter-processing{background-position:center center!important;background-repeat:no-repeat!important;background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=)!important}.tablesorter-dark tr.odd>td{background-color:#202020}.tablesorter-dark tr.even>td{background-color:#101010}.tablesorter-dark td.primary,.tablesorter-dark tr.odd td.primary{background-color:#0a0a0a}.tablesorter-dark tr.even td.primary{background-color:#050505}.tablesorter-dark td.secondary,.tablesorter-dark tr.odd td.secondary{background-color:#0f0f0f}.tablesorter-dark tr.even td.secondary{background-color:#0a0a0a}.tablesorter-dark td.tertiary,.tablesorter-dark tr.odd td.tertiary{background-color:#191919}.tablesorter-dark tr.even td.tertiary{background-color:#0f0f0f}.tablesorter-dark .tablesorter-filter-row,caption{background-color:#202020}.tablesorter-dark .tablesorter-filter-row td{background-color:#202020;line-height:normal;text-align:center;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-dark .tablesorter-filter-row .disabled{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed}.tablesorter-dark .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0;cursor:pointer}.tablesorter-dark .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter-dark input.tablesorter-filter,.tablesorter-dark select.tablesorter-filter{width:98%;height:auto;margin:0;padding:4px;background-color:#111;border:1px solid #222;color:#ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter .filtered{display:none}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.default.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.default.min.css new file mode 100644 index 000000000..e60b04934 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.default.min.css @@ -0,0 +1 @@ +.tablesorter-default{width:100%;font:12px/18px Arial,Sans-serif;color:#333;background-color:#fff;border-spacing:0;margin:10px 0 15px;text-align:left}.tablesorter-default th,.tablesorter-default thead td{font-weight:700;color:#000;background-color:#fff;border-collapse:collapse;border-bottom:#ccc 2px solid;padding:0}.tablesorter-default tfoot td,.tablesorter-default tfoot th{border:0}.tablesorter-default .header,.tablesorter-default .tablesorter-header{background-image:url(data:image/gif;base64,R0lGODlhFQAJAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);background-position:center right;background-repeat:no-repeat;cursor:pointer;white-space:normal;padding:4px 20px 4px 4px}.tablesorter-default thead .headerSortUp,.tablesorter-default thead .tablesorter-headerAsc,.tablesorter-default thead .tablesorter-headerSortUp{background-image:url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7);border-bottom:#000 2px solid}.tablesorter-default thead .headerSortDown,.tablesorter-default thead .tablesorter-headerDesc,.tablesorter-default thead .tablesorter-headerSortDown{background-image:url(data:image/gif;base64,R0lGODlhFQAEAIAAACMtMP///yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7);border-bottom:#000 2px solid}.tablesorter-default thead .sorter-false{background-image:none;cursor:default;padding:4px}.tablesorter-default tfoot .tablesorter-headerAsc,.tablesorter-default tfoot .tablesorter-headerDesc,.tablesorter-default tfoot .tablesorter-headerSortDown,.tablesorter-default tfoot .tablesorter-headerSortUp{border-top:#000 2px solid}.tablesorter-default td{background-color:#fff;border-bottom:#ccc 1px solid;padding:4px;vertical-align:top}.tablesorter-default tbody>tr.even:hover>td,.tablesorter-default tbody>tr.hover>td,.tablesorter-default tbody>tr.odd:hover>td,.tablesorter-default tbody>tr:hover>td{background-color:#fff;color:#000}.tablesorter-default .tablesorter-processing{background-position:center center!important;background-repeat:no-repeat!important;background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=)!important}.tablesorter-default tr.odd>td{background-color:#dfdfdf}.tablesorter-default tr.even>td{background-color:#efefef}.tablesorter-default tr.odd td.primary{background-color:#bfbfbf}.tablesorter-default td.primary,.tablesorter-default tr.even td.primary,.tablesorter-default tr.odd td.secondary{background-color:#d9d9d9}.tablesorter-default td.secondary,.tablesorter-default tr.even td.secondary,.tablesorter-default tr.odd td.tertiary{background-color:#e6e6e6}.tablesorter-default td.tertiary,.tablesorter-default tr.even td.tertiary{background-color:#f2f2f2}caption{background-color:#fff}.tablesorter-default .tablesorter-filter-row{background-color:#eee}.tablesorter-default .tablesorter-filter-row td{background-color:#eee;border-bottom:#ccc 1px solid;line-height:normal;text-align:center;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-default .tablesorter-filter-row .disabled{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed}.tablesorter-default .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0;cursor:pointer}.tablesorter-default .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter-default input.tablesorter-filter,.tablesorter-default select.tablesorter-filter{width:95%;height:auto;margin:4px auto;padding:4px;background-color:#fff;border:1px solid #bbb;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter .filtered{display:none}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.dropbox.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.dropbox.min.css new file mode 100644 index 000000000..949f9c9c2 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.dropbox.min.css @@ -0,0 +1 @@ +.tablesorter-dropbox{width:100%;font:13px/32px "Open Sans","lucida grande","Segoe UI",arial,verdana,"lucida sans unicode",tahoma,sans-serif;color:#555;text-align:left;background-color:#fff;border-collapse:collapse;border-top:1px solid #82cffa;border-spacing:0}.tablesorter-dropbox tfoot td,.tablesorter-dropbox tfoot th,.tablesorter-dropbox th,.tablesorter-dropbox thead td{background-color:#f0f9ff;border-color:#82cffa #e7f2fb #96c4ea;border-style:solid;border-width:1px;padding:3px 6px;font-size:13px;font-weight:400;line-height:29px;color:#2281CF;text-align:left}.tablesorter-dropbox .header,.tablesorter-dropbox .tablesorter-headerRow,.tablesorter-dropbox thead tr{background-color:#f0f9ff;border-bottom:1px solid #96c4ea;box-shadow:0 1px 1px rgba(0,0,0,.12),0 0 0 #000 inset;white-space:normal}.tablesorter-dropbox .tablesorter-headerAsc,.tablesorter-dropbox .tablesorter-headerDesc,.tablesorter-dropbox .tablesorter-headerSortDown,.tablesorter-dropbox .tablesorter-headerSortUp{font-weight:600}.tablesorter-dropbox .tablesorter-header{cursor:pointer}.tablesorter-dropbox .tablesorter-header i.tablesorter-icon{width:9px;height:9px;padding:0 10px 0 4px;display:inline-block;background-position:center right;background-repeat:no-repeat;content:""}.tablesorter-dropbox .tablesorter-headerAsc i.tablesorter-icon,.tablesorter-dropbox .tablesorter-headerSortUp i.tablesorter-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALhJREFUeNpi/P//PwMhwILMiexYx8bIxNTy/9+/muUVQb9g4kzIitg4edI4+YRLQTSyOCPMupjerUI8whK3OXgEhH58+fDuy9sXqkuKvd+hmMTOxdvCxS8sxMUvxACiQXwU6+Im7DDg5BNKY+fiY2BmYWMA0SA+SByuiJ2bbzIHrwAzMxsb0AGMDCAaxAeJg+SZ7wtaqfAISfQAdTIwMUM8ywhUyMTEzPD/71+5FXvPLWUkJpwAAgwAZqYvvHStbD4AAAAASUVORK5CYII=)}.tablesorter-dropbox .tablesorter-headerAsc:hover i.tablesorter-icon,.tablesorter-dropbox .tablesorter-headerSortUp:hover i.tablesorter-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALVJREFUeNpi/P//PwMhwILMCc+qZGNkYmr5/+9fzcpp7b9g4kzIitjYOdM4uXlLQTSyOCPMuqi8OiEefsHbHFzcQj++fX335eN71WWTmt6hmMTOwdXCycMnBDSJAUSD+CjWxRQ0GHBw86Sxc3AyMDOzMIBoEB8kDlfEzsk1mYOLByjPCnQAIwOIBvFB4iB55rsfmVS4+QV7QNYwMTNDHApUyMTExPDv/z+5Feu3L2UkJpwAAgwA244u+I9CleAAAAAASUVORK5CYII=)}.tablesorter-dropbox .tablesorter-headerDesc i.tablesorter-icon,.tablesorter-dropbox .tablesorter-headerSortDown i.tablesorter-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNpi/P//PwMhwBLdtVGFhZ3zNhMzC4bkv79/GP78/K7KCDIpZ9mVw+xcfDaMTExwBf///WP4+e3TkSlROrZg7UxMLLns3HxnmFnZmGGK/v7+9ff3j2+5YHkQMSlC48Kv719m/f//D2IKkAbxQeJwRSDw4/OHmr+/fr0DqmAA0SA+TA6uaEq0zjugG+r//vkFcks9iA/3HbJvvn18O+vf379yP758mMXAoAAXZyQmnAACDADX316BiTFbMQAAAABJRU5ErkJggg==)}.tablesorter-dropbox .tablesorter-headerDesc:hover i.tablesorter-icon,.tablesorter-dropbox .tablesorter-headerSortDown:hover i.tablesorter-icon{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALNJREFUeNpi/P//PwMhwBJf3uP879e3PUzMzBiS//7+ZWBi43JhBJmU2z7nIzMzEx8jIyNcAUj8799/nyZXpvCzgARYuXjTWBkZVjCzIEz7++cvw+//DGkgNiPMTWVT1l5hZvynDTINbMp/pqtdOcE6IDkmmM5fv3/5//v37z9QBQOIBvFhcnBFEwoj7/5jZFnz9+8fBhAN4sN9h+ybH9++JrGxscr/+vE1CVmckZhwAggwANvlUyq5Dd1wAAAAAElFTkSuQmCC)}.tablesorter-dropbox thead .sorter-false{cursor:default}.tablesorter-dropbox thead .sorter-false i.tablesorter-icon,.tablesorter-dropbox thead .sorter-false:hover i.tablesorter-icon{background-image:none;padding:4px}.tablesorter-dropbox td{padding:5px 6px;line-height:32px;color:#555;text-align:left;border-top:1px solid #edf1f5;border-bottom:1px solid #edf1f5}.tablesorter-dropbox tbody>tr.even:hover>td,.tablesorter-dropbox tbody>tr.hover>td,.tablesorter-dropbox tbody>tr.odd:hover>td,.tablesorter-dropbox tbody>tr:hover>td{background-color:rgba(230,245,255,.3);border-right:0;border-left:0;border-color:#c6d8e4;border-style:double}.tablesorter-dropbox .tablesorter-processing{background-position:center center!important;background-repeat:no-repeat!important;background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=)!important}.tablesorter-dropbox .tablesorter-filter-row,caption{background-color:#fff}.tablesorter-dropbox .tablesorter-filter-row td{background-color:#fff;line-height:normal;text-align:center;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-dropbox .tablesorter-filter-row .disabled{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed}.tablesorter-dropbox .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0;cursor:pointer}.tablesorter-dropbox .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter-dropbox input.tablesorter-filter,.tablesorter-dropbox select.tablesorter-filter{width:98%;height:auto;margin:0;background-color:#fff;border:1px solid #bbb;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter .filtered{display:none}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.green.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.green.min.css new file mode 100644 index 000000000..1bcbf539b --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.green.min.css @@ -0,0 +1 @@ +.tablesorter-green{width:100%;text-align:left;border-spacing:0;border:1px solid #cdcdcd;border-width:1px 0 0 1px}.tablesorter-green td,.tablesorter-green th{font:12px/18px Arial,Sans-serif;border:1px solid #cdcdcd;border-width:0 1px 1px 0}.tablesorter-green tfoot tr,.tablesorter-green thead tr .tablesorter-header{background-position:center center;background-repeat:repeat-x;background-image:url(data:image/gif;base64,R0lGODlhAQBkAOYAAN/e39XU1fX19tTU1eXm5uTl5ePk5OLj4+Hi4vX29fT19PP08/Lz8vHy8fDx8O/w7+7v7uzt7Orr6ufo5/T08/Pz8ufn5uLi4eDg39/f3t3d3Nzc29HR0NDQz8/Pzuvq6urp6eno6Ojn5+fm5tfW1tbV1dTT09PS0tLR0dHQ0NDPz/f39/b29vX19fT09PPz8/Ly8vHx8e/v7+7u7u3t7ezs7Ovr6+rq6unp6ejo6Ofn5+bm5uXl5eTk5OPj4+Li4uHh4eDg4N/f397e3t3d3dzc3Nvb29ra2tnZ2djY2NfX19XV1dPT09LS0tHR0dDQ0M/Pz8rKysXFxf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAFMALAAAAAABAGQAAAdegCsrLC0tLi+ILi6FCSwsCS0KkhQVDA0OMjM0NTYfICEiIzw9P0AYGUQaG0ZHSEoDTU9Qs08pTk1MSyRJR0VDQT8+PTw7Ojg3NTMyMTAvi4WOhC0vMTI1OT9GTlFSgQA7)}.tablesorter-green th,.tablesorter-green thead td{font-weight:700;border-right:#cdcdcd 1px solid;border-collapse:collapse;padding:6px}.tablesorter-green .header,.tablesorter-green .tablesorter-header-inner{background-position:5px center;background-repeat:no-repeat;background-image:url(data:image/gif;base64,R0lGODlhEAAQAOYAAA5NDBBYDlWWUzRUM5DVjp7inJ/fnQ1ECiCsGhyYFxqKFRFdDhBXDQxCCiO8HSK2HCCqGh2aGByUFxuPFhqNFhmHFRZ2EhVvERRpEBBVDSS8HiGyHB+mGh6fGRuTFxiAFBd5Eww/Cgs5CRp7Fiu+JRx8GCy/JjHAKyynKCuhJzXCMDbCMDnDMyNuHz3EODy9N0LFPSl7JkvIRjycOFDKS1LKTVPLT1XLUFTCT17OWTBkLmbQYnDTbHXVcXnWdoXago/djGmUZ112XCJEIEdjRf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAEUALAAAAAAQABAAAAdlgEWCg4SFhoIvh4cVLECKhCMeJjwFj0UlEwgaMD4Gii0WFAkRHQ47BIY6IQAZDAwBCyAPOJa1toRBGBAwNTY3OT0/AoZCDQoOKi4yNDOKRCIfGycrKZYDBxIkKLZDFxy3RTHgloEAOw==);border-collapse:collapse;white-space:normal;cursor:pointer}.tablesorter-green thead .headerSortUp .tablesorter-header-inner,.tablesorter-green thead .tablesorter-headerAsc .tablesorter-header-inner,.tablesorter-green thead .tablesorter-headerSortUp .tablesorter-header-inner{background-image:url(data:image/gif;base64,R0lGODlhEAAQANUAAA5NDBBYDpDVjp7inJ/fnSCsGhyYFxFdDhBXDSO8HSK2HB2aGBuPFhqNFhmHFRZ2EhBVDSS8Hh6fGRuTFxd5Eww/Chp7Fhx8GCy/JjnDMyNuHzy9N0LFPVTCTzBkLmbQYnDTbHnWdo/djP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACMALAAAAAAQABAAAAY4wJFwSCwaj8ikcslMbpojR0bEtEwwoIHywihEOCECUvNoGBaSxEdg9FQAEAQicKAoOtC8fs8fBgEAOw==)}.tablesorter-green thead .headerSortDown .tablesorter-header-inner,.tablesorter-green thead .tablesorter-headerDesc .tablesorter-header-inner,.tablesorter-green thead .tablesorter-headerSortDown .tablesorter-header-inner{background-image:url(data:image/gif;base64,R0lGODlhEAAQANUAAFWWUzRUMw1EChqKFQxCCiO8HSCqGhyUFxVvERRpECGyHB+mGhiAFAs5CSu+JTHAKyynKCuhJzXCMDbCMD3EOELFPSl7JkvIRjycOFDKS1LKTVPLT1XLUF7OWXXVcYXagmmUZ112XCJEIEdjRf///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACQALAAAAAAQABAAAAY4QJJwSCwaj8ikcskkghKGimbD6Xg+AGOIMChIKJcMBjlqMBSPSUQZEBwcEKYIsWiSLPa8fs9HBgEAOw==)}.tablesorter-green td.tablesorter-header .tablesorter-header-inner,.tablesorter-green th.tablesorter-header .tablesorter-header-inner{padding-left:23px}.tablesorter-green thead .tablesorter-header.sorter-false .tablesorter-header-inner{background-image:none;cursor:default;padding-left:6px}.tablesorter-green tbody td,.tablesorter-green tfoot th{padding:6px;vertical-align:top}.tablesorter-green td{color:#3d3d3d;padding:6px}.tablesorter-green tbody>tr.even.hover>td,.tablesorter-green tbody>tr.even:hover+tr.tablesorter-childRow+tr.tablesorter-childRow>td,.tablesorter-green tbody>tr.even:hover+tr.tablesorter-childRow>td,.tablesorter-green tbody>tr.even:hover>td,.tablesorter-green tbody>tr.hover>td,.tablesorter-green tbody>tr:hover+tr.tablesorter-childRow+tr.tablesorter-childRow>td,.tablesorter-green tbody>tr:hover+tr.tablesorter-childRow>td,.tablesorter-green tbody>tr:hover>td{background-color:#d9d9d9}.tablesorter-green tbody>tr.odd.hover>td,.tablesorter-green tbody>tr.odd:hover+tr.tablesorter-childRow+tr.tablesorter-childRow>td,.tablesorter-green tbody>tr.odd:hover+tr.tablesorter-childRow>td,.tablesorter-green tbody>tr.odd:hover>td{background-color:#bfbfbf}.tablesorter-green .tablesorter-processing{background-position:center center!important;background-repeat:no-repeat!important;background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=)!important}.tablesorter-green tr.odd>td{background-color:#ebfaeb}.tablesorter-green tr.even>td{background-color:#fff}.tablesorter-green td.primary,.tablesorter-green tr.odd td.primary{background-color:#99e6a6}.tablesorter-green td.secondary,.tablesorter-green tr.even td.primary,.tablesorter-green tr.odd td.secondary{background-color:#c2f0c9}.tablesorter-green td.tertiary,.tablesorter-green tr.even td.secondary,.tablesorter-green tr.odd td.tertiary{background-color:#d6f5db}.tablesorter-green tr.even td.tertiary{background-color:#ebfaed}caption{background-color:#fff}.tablesorter-green .tablesorter-filter-row{background-color:#eee}.tablesorter-green .tablesorter-filter-row td{background-color:#eee;line-height:normal;text-align:center;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-green .tablesorter-filter-row .disabled{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed}.tablesorter-green .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0;cursor:pointer}.tablesorter-green .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter-green input.tablesorter-filter,.tablesorter-green select.tablesorter-filter{width:98%;height:auto;margin:0;padding:4px;background-color:#fff;border:1px solid #bbb;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter .filtered{display:none}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.grey.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.grey.min.css new file mode 100644 index 000000000..9fb75c516 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.grey.min.css @@ -0,0 +1 @@ +.tablesorter-grey{width:100%;margin:10px 0 15px;text-align:left;border-spacing:0;border-left:#555 1px solid}.tablesorter-grey th,.tablesorter-grey thead td{font:700 12px/18px Arial,Sans-serif;color:#c8c8c8;background-color:#3c3c3c;background-image:-moz-linear-gradient(top,#555,#3c3c3c);background-image:-ms-linear-gradient(top,#555,#3c3c3c);background-image:-webkit-gradient(linear,0 0,0 100%,from(#555),to(#3c3c3c));background-image:-webkit-linear-gradient(top,#555,#3c3c3c);background-image:-o-linear-gradient(top,#555,#3c3c3c);background-image:linear-gradient(to bottom,#555,#3c3c3c);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#555555', endColorstr='#3c3c3c', GradientType=0 );background-repeat:repeat-x;border-right:#555 1px solid;text-shadow:0 1px 0 rgba(128,128,128,.7);-webkit-box-shadow:inset 0 1px 0 #222;-moz-box-shadow:inset 0 1px 0 #222;box-shadow:inset 0 1px 0 #222;padding:4px}.tablesorter-grey .tablesorter-header-inner{position:relative;padding:4px 15px 4px 4px}.tablesorter-grey .header,.tablesorter-grey .tablesorter-header{cursor:pointer}.tablesorter-grey .header i,.tablesorter-grey .tablesorter-header i.tablesorter-icon{width:18px;height:10px;position:absolute;right:2px;top:50%;margin-top:-10px;background-image:url(data:image/gif;base64,R0lGODlhFQAJAIAAAP///////yH5BAEAAAEALAAAAAAVAAkAAAIXjI+AywnaYnhUMoqt3gZXPmVg94yJVQAAOw==);background-repeat:no-repeat;background-position:center right;padding:4px;white-space:normal}.tablesorter-grey th.headerSortDown,.tablesorter-grey th.headerSortUp,.tablesorter-grey th.tablesorter-headerSortDown,.tablesorter-grey th.tablesorter-headerSortUp{color:#ddd;background-color:#135185;background-image:-moz-linear-gradient(top,#195c93,#0e4776);background-image:-ms-linear-gradient(top,#195c93,#0e4776);background-image:-webkit-gradient(linear,0 0,0 100%,from(#195c93),to(#0e4776));background-image:-webkit-linear-gradient(top,#195c93,#0e4776);background-image:-o-linear-gradient(top,#195c93,#0e4776);background-image:linear-gradient(to bottom,#195c93,#0e4776);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#195c93', endColorstr='#0e4776', GradientType=0 )}.tablesorter-grey .headerSortUp i.tablesorter-icon,.tablesorter-grey .tablesorter-headerAsc i.tablesorter-icon,.tablesorter-grey .tablesorter-headerSortUp i.tablesorter-icon{background-image:url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjI8Bya2wnINUMopZAQA7)}.tablesorter-grey .headerSortDown i.tablesorter-icon,.tablesorter-grey .tablesorter-headerDesc i.tablesorter-icon,.tablesorter-grey .tablesorter-headerSortDown i.tablesorter-icon{background-image:url(data:image/gif;base64,R0lGODlhFQAEAIAAAP///////yH5BAEAAAEALAAAAAAVAAQAAAINjB+gC+jP2ptn0WskLQA7)}.tablesorter-grey thead .sorter-false{cursor:default}.tablesorter-grey thead .sorter-false i.tablesorter-icon{background-image:none;padding:4px}.tablesorter-grey tbody td,.tablesorter-grey tfoot td,.tablesorter-grey tfoot th{padding:4px;vertical-align:top;border-right:#555 1px solid}.tablesorter-grey tfoot td,.tablesorter-grey tfoot th{padding:8px}.tablesorter-grey td{color:#eee;background-color:#6d6d6d;padding:4px;vertical-align:top}.tablesorter-grey tbody>tr.even.hover>td,.tablesorter-grey tbody>tr.even:hover+tr.tablesorter-childRow+tr.tablesorter-childRow>td,.tablesorter-grey tbody>tr.even:hover+tr.tablesorter-childRow>td,.tablesorter-grey tbody>tr.even:hover>td,.tablesorter-grey tbody>tr.hover>td,.tablesorter-grey tbody>tr.odd.hover>td,.tablesorter-grey tbody>tr.odd:hover+tr.tablesorter-childRow+tr.tablesorter-childRow>td,.tablesorter-grey tbody>tr.odd:hover+tr.tablesorter-childRow>td,.tablesorter-grey tbody>tr.odd:hover>td,.tablesorter-grey tbody>tr:hover+tr.tablesorter-childRow+tr.tablesorter-childRow>td,.tablesorter-grey tbody>tr:hover+tr.tablesorter-childRow>td,.tablesorter-grey tbody>tr:hover>td{background-color:#134b78}.tablesorter-grey .tablesorter-processing{background-position:center center!important;background-repeat:no-repeat!important;background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=)!important}.tablesorter-grey tbody tr.odd>td{background-color:#5e5e5e}.tablesorter-grey tbody tr.even>td{background-color:#6d6d6d}.tablesorter-grey td.primary,.tablesorter-grey tr.odd td.primary{color:#ddd;background-color:#165388}.tablesorter-grey tr.even td.primary{color:#ddd;background-color:#195c93}.tablesorter-grey td.secondary,.tablesorter-grey tr.odd td.secondary{color:#ddd;background-color:#185C9A}.tablesorter-grey tr.even td.secondary{color:#ddd;background-color:#1D67A5}.tablesorter-grey td.tertiary,.tablesorter-grey tr.odd td.tertiary{color:#ddd;background-color:#1B67AD}.tablesorter-grey tr.even td.tertiary{color:#ddd;background-color:#2073B7}caption{background-color:#fff}.tablesorter-grey .tablesorter-filter-row{background-color:#3c3c3c}.tablesorter-grey .tablesorter-filter-row td{background-color:#3c3c3c;line-height:normal;text-align:center;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-grey .tablesorter-filter-row .disabled{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed}.tablesorter-grey .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0;cursor:pointer}.tablesorter-grey .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter-grey input.tablesorter-filter,.tablesorter-grey select.tablesorter-filter{width:98%;height:auto;margin:0;padding:4px;background-color:#6d6d6d;border:1px solid #555;color:#ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter .filtered{display:none}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.ice.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.ice.min.css new file mode 100644 index 000000000..add23f621 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.ice.min.css @@ -0,0 +1 @@ +.tablesorter-ice{width:100%;background-color:#fff;margin:10px 0 15px;text-align:left;border-spacing:0;border:1px solid #ccc;border-width:1px 0 0 1px}.tablesorter-ice td,.tablesorter-ice th{border:1px solid #ccc;border-width:0 1px 1px 0}.tablesorter-ice th,.tablesorter-ice thead td{font:12px/18px Arial,Sans-serif;color:#555;background-color:#f6f8f9;border-collapse:collapse;padding:4px;text-shadow:0 1px 0 rgba(255,255,255,.7)}.tablesorter-ice tbody td,.tablesorter-ice tfoot td,.tablesorter-ice tfoot th{padding:4px;vertical-align:top}.tablesorter-ice .header,.tablesorter-ice .tablesorter-header{background-color:#f6f8f9;background-position:center right;background-repeat:no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMAMQAAAJEjAJCiwJBigJAiANFjgNGjgNEjQRIkQRHkANIkAVMlAVQmAZWnQZUnAdYoAhdpAhZoAlhqQlepQliqQppsApmrQxutgtutQtutAxwtwxwtg1yug1zugxtsw1yuP8A/yH5BAEAAB8ALAAAAAAMAAwAAAUx4Cd+3GiOW4ado2d9VMVm1xg9ptadTsP+QNZEcjoQTBDGCAFgLRSfQgCYMAiCn8EvBAA7);padding:4px 20px 4px 4px;white-space:normal;cursor:pointer}.tablesorter-ice .headerSortUp,.tablesorter-ice .tablesorter-headerAsc,.tablesorter-ice .tablesorter-headerSortUp{color:#333;background-color:#ebedee;background-position:center right;background-repeat:no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMANUAAAJCiwNHkANFjgNEjQRIkQNJkQRMlARKkwRKkgVPlwZSmgdaogdYnwhfpghcowlhqgliqglgqAlgpwljqwporwpmrQplrAtsswtqsgtrsgtqsQxttAtvtQtttAxyuQxwtwxxtwxvtg10uw1zuQ1xuP8A/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACUALAAAAAAMAAwAAAY6wJKwJBoahyNQ6Dj0fDoZCpPEuWgqk4jxs8FQLI+Gg8Esm5kQydFQMC7IwkOAqUiUCAIzIjA4lwBlQQA7)}.tablesorter-ice .headerSortDown,.tablesorter-ice .tablesorter-headerDesc,.tablesorter-ice .tablesorter-headerSortDown{color:#333;background-color:#ebedee;background-position:center right;background-repeat:no-repeat;background-image:url(data:image/gif;base64,R0lGODlhDAAMANUAAAE/iAJBigNFjgNEjQNFjQNDiwRHkQRHjwNHjwROlgRMlQRMlARJkgRKkgZQmAVPlgZWnQZSmgZRmAdXoAdXnwdUnAdbogdZoQhbowlhqAlepglkrAliqQtstAtqsQxyugxyuQxwuAxxuAxxtwxwtgxvtQ10vA12vA10u/8A/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAACkALAAAAAAMAAwAAAY6wJQwdRoah6bP6DhEiVIdDxNEGm4yxlDpiJkwv2AmR2OhVCSJBsJ4gUQeCwOB6VAwBAXwYRAIpwBfQQA7)}.tablesorter-ice thead .sorter-false{background-image:none;cursor:default;padding:4px}.tablesorter-ice tfoot .tablesorter-headerAsc,.tablesorter-ice tfoot .tablesorter-headerDesc,.tablesorter-ice tfoot .tablesorter-headerSortDown,.tablesorter-ice tfoot .tablesorter-headerSortUp{background-color:#ebedee}.tablesorter-ice td{color:#333}.tablesorter-ice tbody>tr.even:hover>td,.tablesorter-ice tbody>tr.hover>td,.tablesorter-ice tbody>tr.odd:hover>td,.tablesorter-ice tbody>tr:hover>td{background-color:#ebf2fa}.tablesorter-ice .tablesorter-processing{background-position:center center!important;background-repeat:no-repeat!important;background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=)!important}.tablesorter-ice tr.odd>td{background-color:#dfdfdf}.tablesorter-ice tr.even>td{background-color:#efefef}.tablesorter-ice td.primary,.tablesorter-ice tr.odd td.primary{background-color:#9ae5e5}.tablesorter-ice td.secondary,.tablesorter-ice tr.even td.primary,.tablesorter-ice tr.odd td.secondary{background-color:#c2f0f0}.tablesorter-ice td.tertiary,.tablesorter-ice tr.even td.secondary,.tablesorter-ice tr.odd td.tertiary{background-color:#d5f5f5}.tablesorter-ice tr.even td.tertiary{background-color:#ebfafa}.tablesorter-ice.containsStickyHeaders thead tr:nth-child(1) td,.tablesorter-ice.containsStickyHeaders thead tr:nth-child(1) th{border-top:#ccc 1px solid}caption{background-color:#fff}.tablesorter-ice .tablesorter-filter-row{background-color:#eee}.tablesorter-ice .tablesorter-filter-row td{background-color:#eee;line-height:normal;text-align:center;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-ice .tablesorter-filter-row .disabled{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed}.tablesorter-ice .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0;cursor:pointer}.tablesorter-ice .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter-ice input.tablesorter-filter,.tablesorter-ice select.tablesorter-filter{width:98%;height:auto;margin:0;padding:4px;background-color:#fff;border:1px solid #bbb;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter .filtered{display:none}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.jui.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.jui.min.css new file mode 100644 index 000000000..8b24d87f9 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.jui.min.css @@ -0,0 +1 @@ +.tablesorter .filtered,.tablesorter-jui thead tr .sorter-false .ui-icon{display:none}.tablesorter-jui{width:100%;border-collapse:separate;border-spacing:2px;margin:10px 0 15px;padding:5px;font-size:.8em}.tablesorter-jui tfoot td,.tablesorter-jui tfoot th,.tablesorter-jui thead td,.tablesorter-jui thead th{position:relative;background-repeat:no-repeat;background-position:right center;font-weight:700!important;border-width:1px!important;text-align:left;padding:8px}.tablesorter-jui .header,.tablesorter-jui .tablesorter-header{cursor:pointer;white-space:normal}.tablesorter-jui .tablesorter-header-inner{padding-right:20px}.tablesorter-jui thead tr th .ui-icon{position:absolute;right:3px;top:50%;margin-top:-8px}.tablesorter-jui thead .sorter-false{cursor:default}.tablesorter-jui tfoot td,.tablesorter-jui tfoot th{font-weight:400!important;font-size:.9em;padding:2px}.tablesorter-jui td{padding:4px;vertical-align:top}.tablesorter-jui tbody>tr.hover>td,.tablesorter-jui tbody>tr:hover>td{opacity:.7;filter:alpha(opacity=70)}.tablesorter-jui .tablesorter-processing .tablesorter-header-inner{background-position:center center!important;background-repeat:no-repeat!important;background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=)!important}.tablesorter-jui tr.ui-state-default{background-image:none;font-weight:400}.tablesorter-jui .tablesorter-processing{background-color:#ddd;background-color:rgba(255,255,255,.8)}.tablesorter-jui caption{border:0}.tablesorter-jui .tablesorter-filter-row{background-color:transparent}.tablesorter-jui .tablesorter-filter-row td{background-color:transparent;line-height:normal;text-align:center;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-jui .tablesorter-filter-row .disabled{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed}.tablesorter-jui .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0;cursor:pointer}.tablesorter-jui .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter-jui input.tablesorter-filter,.tablesorter-jui select.tablesorter-filter{width:98%;height:auto;margin:0;padding:4px;background-color:#fff;border:1px solid #bbb;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.metro-dark.min.css b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.metro-dark.min.css new file mode 100644 index 000000000..349f9d983 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/css/theme.metro-dark.min.css @@ -0,0 +1 @@ +.tablesorter-metro-dark{width:100%;font:12px/18px 'Segoe UI Semilight','Open Sans',Verdana,Arial,Helvetica,sans-serif;color:#000;background-color:#333;border-spacing:0;margin:10px 0 15px;text-align:left}.tablesorter-metro-dark caption.dark-row,.tablesorter-metro-dark tr.dark-row td,.tablesorter-metro-dark tr.dark-row th{background-color:#222;color:#fff;padding:2px;text-align:left;font-size:14px}.tablesorter-metro-dark caption,.tablesorter-metro-dark tfoot td,.tablesorter-metro-dark tfoot th,.tablesorter-metro-dark th,.tablesorter-metro-dark thead td{font-weight:300;font-size:15px;color:#ddd;background-color:#333;padding:4px}.tablesorter-metro-dark .header,.tablesorter-metro-dark .tablesorter-header{background-image:url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAGFBMVEUAAADu7u7u7u7u7u7u7u7u7u7u7u7u7u5jNePWAAAACHRSTlMAMxIHKwEgMWD59H4AAABSSURBVAjXY2BgYFJgAAHzYhDJ6igSAKTYBAUTgJSioKAQAwNzoaCguAFDiCAQuDIkgigxBgiA8cJAVCpQt6AgSL+JoKAzA0gjUBsQqBcBCYhFAAE/CV4zeSzxAAAAAElFTkSuQmCC);background-position:right 5px center;background-repeat:no-repeat;cursor:pointer;white-space:normal}.tablesorter-metro-dark .tablesorter-header-inner{padding:0 18px 0 4px}.tablesorter-metro-dark thead .headerSortUp,.tablesorter-metro-dark thead .tablesorter-headerAsc,.tablesorter-metro-dark thead .tablesorter-headerSortUp{background-image:url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAAIVBMVEUAAADu7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u5meJAOAAAACnRSTlMAMwsqXt+gIBUGxGoDMAAAAFlJREFUCNctzC0SQAAUReEzGNQ3AlHRiSRZFCVZYgeswRL8hLdK7834wj3tAlGP6y7fYHpKS6w6WwbVG0I1NZVnZPG8/DYxOYlnhUYkA06R1s9ESsxR4NIdPhkPFDFYuEnMAAAAAElFTkSuQmCC)}.tablesorter-metro-dark thead .headerSortDown,.tablesorter-metro-dark thead .tablesorter-headerDesc,.tablesorter-metro-dark thead .tablesorter-headerSortDown{background-image:url(data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQBAMAAADQT4M0AAAALVBMVEUAAADu7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7i0NViAAAADnRSTlMAMiweCQITTvDctZZqaTlM310AAABcSURBVAjXY2BgYEtgAAFHERDJqigUAKSYBQUNgFSioKAYAwOLIBA4MASBKFUGQxAlzAAF+94BwWuGKBC1lIFl3rt3Lx0YGCzevWsGSjK9e6cAUlT3HKyW9wADAwDRrBiDy6bKzwAAAABJRU5ErkJggg==)}.tablesorter-metro-dark thead .sorter-false{background-image:none;cursor:default;padding:4px}.tablesorter-metro-dark td{background-color:#fff;padding:4px;vertical-align:top}.tablesorter-metro-dark tbody>tr.even:hover>td,.tablesorter-metro-dark tbody>tr.hover>td,.tablesorter-metro-dark tbody>tr.odd:hover>td,.tablesorter-metro-dark tbody>tr:hover>td{background-color:#bbb;color:#000}.tablesorter-metro-dark .tablesorter-processing{background-position:center center!important;background-repeat:no-repeat!important;background-image:url(data:image/gif;base64,R0lGODlhFAAUAKEAAO7u7lpaWgAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgACACwAAAAAFAAUAAACQZRvoIDtu1wLQUAlqKTVxqwhXIiBnDg6Y4eyx4lKW5XK7wrLeK3vbq8J2W4T4e1nMhpWrZCTt3xKZ8kgsggdJmUFACH5BAEKAAIALAcAAAALAAcAAAIUVB6ii7jajgCAuUmtovxtXnmdUAAAIfkEAQoAAgAsDQACAAcACwAAAhRUIpmHy/3gUVQAQO9NetuugCFWAAAh+QQBCgACACwNAAcABwALAAACE5QVcZjKbVo6ck2AF95m5/6BSwEAIfkEAQoAAgAsBwANAAsABwAAAhOUH3kr6QaAcSrGWe1VQl+mMUIBACH5BAEKAAIALAIADQALAAcAAAIUlICmh7ncTAgqijkruDiv7n2YUAAAIfkEAQoAAgAsAAAHAAcACwAAAhQUIGmHyedehIoqFXLKfPOAaZdWAAAh+QQFCgACACwAAAIABwALAAACFJQFcJiXb15zLYRl7cla8OtlGGgUADs=)!important}.tablesorter-metro-dark .tablesorter-pager button{background-color:#444;color:#eee;border:1px solid #555;cursor:pointer}.tablesorter-metro-dark .tablesorter-pager button:hover{background-color:#555}.tablesorter-metro-dark tr.odd>td{background-color:#eee}.tablesorter-metro-dark tr.even>td{background-color:#fff}.tablesorter-metro-dark tr.odd td.primary{background-color:#bfbfbf}.tablesorter-metro-dark td.primary,.tablesorter-metro-dark tr.even td.primary,.tablesorter-metro-dark tr.odd td.secondary{background-color:#d9d9d9}.tablesorter-metro-dark td.secondary,.tablesorter-metro-dark tr.even td.secondary,.tablesorter-metro-dark tr.odd td.tertiary{background-color:#e6e6e6}.tablesorter-metro-dark td.tertiary,.tablesorter-metro-dark tr.even td.tertiary{background-color:#f2f2f2}.tablesorter-metro-dark .tablesorter-filter-row{background-color:#eee}.tablesorter-metro-dark .tablesorter-filter-row td{background-color:#eee;line-height:normal;text-align:center;-webkit-transition:line-height .1s ease;-moz-transition:line-height .1s ease;-o-transition:line-height .1s ease;transition:line-height .1s ease}.tablesorter-metro-dark .tablesorter-filter-row .disabled{opacity:.5;filter:alpha(opacity=50);cursor:not-allowed}.tablesorter-metro-dark .tablesorter-filter-row.hideme td{padding:2px;margin:0;line-height:0;cursor:pointer}.tablesorter-metro-dark .tablesorter-filter-row.hideme *{height:1px;min-height:0;border:0;padding:0;margin:0;opacity:0;filter:alpha(opacity=0)}.tablesorter-metro-dark input.tablesorter-filter,.tablesorter-metro-dark select.tablesorter-filter{width:95%;height:auto;margin:0;padding:4px;background-color:#fff;border:1px solid #bbb;color:#333;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:height .1s ease;-moz-transition:height .1s ease;-o-transition:height .1s ease;transition:height .1s ease}.tablesorter .filtered{display:none}.tablesorter .tablesorter-errorRow td{text-align:center;cursor:pointer;background-color:#e6bf99} \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/jquery.dragtable.mod.min.js b/vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/jquery.dragtable.mod.min.js new file mode 100644 index 000000000..2bd8920dc --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/jquery.dragtable.mod.min.js @@ -0,0 +1,3 @@ +/*! Dragtable Mod for TableSorter - updated 10/31/2015 (v2.24.0) */ +!function(a){"use strict";function b(){var b=a('');a(document.head).append(b),a(document.body).attr("onselectstart","return false;").attr("unselectable","on"),window.getSelection?window.getSelection().removeAllRanges():document.selection.empty()}function c(){a("#__dragtable_disable_text_selection__").remove(),f?a(document.body).attr("onselectstart",f):a(document.body).removeAttr("onselectstart"),g?a(document.body).attr("unselectable",g):a(document.body).removeAttr("unselectable")}var d,e=a.tablesorter;e.dragtable={create:function(b){var c,d=b.originalTable.el,e=b.options.dragHandle.replace(".","");d.children("thead").children().children("th,td").each(function(){var d=a(this);d.find(b.options.dragHandle+",."+e+"-disabled").length||(c=b.options.dragaccept?d.hasClass(b.options.dragaccept.replace(".","")):!0,d.wrapInner('
').prepend('
'))})},start:function(b){b=a(b)[0],b&&b.config&&(b.config.widgetOptions.dragtableLast={search:a(b).data("lastSearch"),order:e.dragtable.getOrder(b)})},update:function(b){var c,d,f,g=b.originalTable,h=g.el[0],i=a(h),j=h.config,k=j&&j.widgetOptions,l=g.startIndex-1,m=g.endIndex-1,n=e.dragtable.getOrder(h)||[],o=e.hasWidget(i,"filter")||!1,p=k&&k.dragtableLast||{},q=[];(p.order||[]).join("")!==n.join("")&&(j.sortList.length&&(d=a.extend(!0,[],j.sortList),a.each(n,function(a,b){f=e.isValueInArray(parseInt(b,10),d),b!==p.order[a]&&f>=0&&(j.sortList[f][0]=a)})),o&&a.each(p.search||[],function(a){q[a]=p.search[n[a]]}),c=e.hasWidget(j.$table,"editable")?k.editable_columnsArray:!1,c&&(j.widgetOptions.editable_columnsArray=e.dragtable.reindexArrayItem(c,l,m)),c=e.hasWidget(j.$table,"math")?k.math_ignore:!1,c&&(j.widgetOptions.math_ignore=e.dragtable.reindexArrayItem(c,l,m)),c=e.hasWidget(j.$table,"resizable")?k.resizable_widths:!1,c&&(k.resizable_widths=e.dragtable.moveArrayItem(c,l,m)),e.updateAll(j,!1,function(){o&&setTimeout(function(){j.lastCombinedFilter=null,j.$table.data("lastSearch",q),e.setFilters(i,q),a.isFunction(b.options.tablesorterComplete)&&b.options.tablesorterComplete(j.table)},10)}))},getOrder:function(b){return a(b).children("thead").children("."+e.css.headerRow).children().map(function(){return a(this).attr("data-column")}).get()||[]},startColumnMove:function(b){var c,d=b.el[0].config,e=b.startIndex-1,f=b.endIndex-1,g=d.columns-1,h=f===g?!1:e>=f,i=d.$table.children().children("tr");d.debug&&console.log("Inserting column "+e+(h?" before":" after")+" column "+f),i.each(function(){c=a(this).children(),c.eq(e)[h?"insertBefore":"insertAfter"](c.eq(f))}),c=d.$table.children("colgroup").children(),c.eq(e)[h?"insertBefore":"insertAfter"](c.eq(f))},swapNodes:function(a,b){var c,d,e,f=a.length;for(c=0;f>c;c++)d=a[c].parentNode,e=a[c].nextSibling===b[c]?a[c]:a[c].nextSibling,b[c].parentNode.insertBefore(a[c],b[c]),d.insertBefore(b[c],e)},moveArrayItem:function(a,b,c){var e,f=a.length;if(c>=f)for(e=c-f;e--+1;)a.push(d);return a.splice(c,0,a.splice(b,1)[0]),a},reindexArrayItem:function(b,c,d){var e=a.inArray(d,b),f=a.inArray(c,b),g=(Math.max.apply(Math,b),[]);return e>=0&&f>=0?b:(a.each(b,function(a,b){c>d?b>=d?g.push(b+(c>b?1:0)):g.push(b):d>c&&(b===c?g.push(d):d>b&&b>=c?g.push(b-1):d>=b?g.push(b):b>c&&g.push(b+(d>b?0:1)))}),g.sort())}},/*! dragtable v2.0.14 Mod */ +a.widget("akottr.dragtable",{options:{revert:!1,dragHandle:".table-handle",maxMovingRows:40,excludeFooter:!1,onlyHeaderThreshold:100,dragaccept:null,persistState:null,restoreState:null,exact:!0,clickDelay:10,containment:null,cursor:"move",cursorAt:!1,distance:0,tolerance:"pointer",axis:"x",beforeStart:a.noop,beforeMoving:a.noop,beforeReorganize:a.noop,beforeStop:a.noop,tablesorterComplete:null,sortClass:".sorter"},originalTable:{el:null,selectedHandle:null,sortOrder:null,startIndex:0,endIndex:0},sortableTable:{el:a(),selectedHandle:a(),movingRow:a()},persistState:function(){var b=this;this.originalTable.el.find("th").each(function(a){""!==this.id&&(b.originalTable.sortOrder[this.id]=a)}),a.ajax({url:this.options.persistState,data:this.originalTable.sortOrder})},_restoreState:function(b){for(var c in b)c in b&&(this.originalTable.startIndex=a("#"+c).closest("th").prevAll().length+1,this.originalTable.endIndex=parseInt(b[c],10)+1,this._bubbleCols())},_bubbleCols:function(){e.dragtable.startColumnMove(this.originalTable)},_rearrangeTableBackroundProcessing:function(){var b=this;return function(){b._bubbleCols(),b.options.beforeStop(b.originalTable),b.sortableTable.el.remove(),c(),e.dragtable.update(b),a.isFunction(b.options.persistState)?b.options.persistState(b.originalTable):b.persistState()}},_rearrangeTable:function(){var a=this;return function(){a.originalTable.selectedHandle.removeClass("dragtable-handle-selected"),a.sortableTable.el.sortable("disable"),a.sortableTable.el.addClass("dragtable-disabled"),a.options.beforeReorganize(a.originalTable,a.sortableTable),a.originalTable.endIndex=a.sortableTable.movingRow.prevAll().length+1,setTimeout(a._rearrangeTableBackroundProcessing(),50)}},_generateSortable:function(c){c.cancelBubble?c.cancelBubble=!0:c.stopPropagation();for(var d=this,e=this.originalTable.el[0].attributes,f="",g=0;g',s=[],t=m.eq(0).children("th, td").length;for(g=0;t>g;g++){var u=m.children(":nth-child("+(g+1)+")");u.is(":visible")&&(q=0,s[g]='
  • "+(p?'':"")+"",m.each(function(a){s[g]+=""+u[a].outerHTML+""}),s[g]+="",u=n.children(":nth-child("+(g+1)+")"),d.options.maxMovingRows>1&&(u=u.add(n.children(":nth-child("+(g+1)+")").slice(0,d.options.maxMovingRows-1))),u.each(function(a){s[g]+=""+this.outerHTML+""}),s[g]+="",d.options.excludeFooter||(s[g]+=""+l.filter("tfoot").children("tr:visible").children()[g].outerHTML+""),s[g]+="
  • ")}r+=s.join("")+"",this.sortableTable.el=this.originalTable.el.before(r).prev(),this.sortableTable.el.find("> li > table").each(function(b){a(this).css("width",j[b]+"px")}),this.sortableTable.selectedHandle=this.sortableTable.el.find("th .dragtable-handle-selected");var v=this.options.dragaccept?"li:has("+this.options.dragaccept+")":"li";this.sortableTable.el.sortable({items:v,stop:this._rearrangeTable(),revert:this.options.revert,tolerance:this.options.tolerance,containment:this.options.containment,cursor:this.options.cursor,cursorAt:this.options.cursorAt,distance:this.options.distance,axis:this.options.axis}),this.originalTable.startIndex=a(c.target).closest("th,td").prevAll().length+1,this.options.beforeMoving(this.originalTable,this.sortableTable),this.sortableTable.movingRow=this.sortableTable.el.children("li:nth-child("+this.originalTable.startIndex+")"),b(),this.sortableTable.movingRow.trigger(a.extend(a.Event(c.type),{which:1,clientX:c.clientX,clientY:c.clientY,pageX:c.pageX,pageY:c.pageY,screenX:c.screenX,screenY:c.screenY}));var w=this.sortableTable.el.find(".ui-sortable-placeholder");w.height()>0&&w.css("height",this.sortableTable.el.find(".ui-sortable-helper").height()),w.html('
    ')},bindTo:{},_create:function(){var b=this;b.originalTable={el:b.element,selectedHandle:a(),sortOrder:{},startIndex:0,endIndex:0},e.dragtable.create(b),b.bindTo="> thead > tr > "+(b.options.dragaccept||"th, td"),b.element.find(b.bindTo).find(b.options.dragHandle).length&&(b.bindTo+=" "+b.options.dragHandle),a.isFunction(b.options.restoreState)?b.options.restoreState(b.originalTable):b._restoreState(b.options.restoreState),b.originalTable.el.on("mousedown.dragtable",b.bindTo,function(c){1===c.which&&(e.dragtable.start(b.originalTable.el),b.options.beforeStart(b.originalTable)!==!1&&(clearTimeout(b.downTimer),b.downTimer=setTimeout(function(){b.originalTable.selectedHandle=a(b),b.originalTable.selectedHandle.addClass("dragtable-handle-selected"),b._generateSortable(c)},b.options.clickDelay)))}).on("mouseup.dragtable",b.options.dragHandle,function(){clearTimeout(b.downTimer)})},redraw:function(){this.destroy(),this._create()},destroy:function(){this.originalTable.el.off("mousedown.dragtable mouseup.dragtable",this.bindTo),a.Widget.prototype.destroy.apply(this,arguments)}});var f=a(document.body).attr("onselectstart"),g=a(document.body).attr("unselectable")}(jQuery); \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/jquery.metadata.min.js b/vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/jquery.metadata.min.js new file mode 100644 index 000000000..4a11db581 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/jquery.metadata.min.js @@ -0,0 +1 @@ +!function($){$.extend({metadata:{defaults:{type:"class",name:"metadata",cre:/(\{.*\})/,single:"metadata"},setType:function(a,b){this.defaults.type=a,this.defaults.name=b},get:function(elem,opts){var data,m,e,attr,settings=$.extend({},this.defaults,opts);if(settings.single.length||(settings.single="metadata"),data=$.data(elem,settings.single))return data;if(data="{}","class"===settings.type)m=settings.cre.exec(elem.className),m&&(data=m[1]);else if("elem"===settings.type){if(!elem.getElementsByTagName)return;e=elem.getElementsByTagName(settings.name),e.length&&(data=$.trim(e[0].innerHTML))}else void 0!==elem.getAttribute&&(attr=elem.getAttribute(settings.name),attr&&(data=attr));return data.indexOf("{")<0&&(data="{"+data+"}"),data=eval("("+data+")"),$.data(elem,settings.single,data),data}}}),$.fn.metadata=function(a){return $.metadata.get(this[0],a)}}(jQuery); \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/jquery.tablesorter.pager.min.js b/vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/jquery.tablesorter.pager.min.js new file mode 100644 index 000000000..a7d0be284 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/jquery.tablesorter.pager.min.js @@ -0,0 +1,5 @@ +/*! + * tablesorter (FORK) pager plugin + * updated 11/22/2015 (v2.24.6) + */ +!function(a){"use strict";var b=a.tablesorter;a.extend({tablesorterPager:new function(){this.defaults={container:null,ajaxUrl:null,customAjaxUrl:function(a,b){return b},ajaxError:null,ajaxObject:{dataType:"json"},processAjaxOnInit:!0,ajaxProcessing:function(a){return[0,[],null]},output:"{startRow} to {endRow} of {totalRows} rows",updateArrows:!0,page:0,pageReset:0,size:10,maxOptionSize:20,savePages:!0,storageKey:"tablesorter-pager",fixedHeight:!1,countChildRows:!1,removeRows:!1,cssFirst:".first",cssPrev:".prev",cssNext:".next",cssLast:".last",cssGoto:".gotoPage",cssPageDisplay:".pagedisplay",cssPageSize:".pagesize",cssErrorRow:"tablesorter-errorRow",cssDisabled:"disabled",totalRows:0,totalPages:0,filteredRows:0,filteredPages:0,ajaxCounter:0,currentFilters:[],startRow:0,endRow:0,$size:null,last:{}};var c="filterInit filterStart filterEnd sortEnd disablePager enablePager destroyPager updateComplete pageSize pageSet pageAndSize pagerUpdate refreshComplete ",d=this,e=function(a,b,c){var d="addClass",e="removeClass",f=b.cssDisabled,g=!!c,h=g||0===b.page,i=t(a,b),j=g||b.page===i-1||0===i;b.updateArrows&&(b.$container.find(b.cssFirst+","+b.cssPrev)[h?d:e](f).attr("aria-disabled",h),b.$container.find(b.cssNext+","+b.cssLast)[j?d:e](f).attr("aria-disabled",j))},f=function(a,c){var d,e,f,g=a.config,h=g.$table.hasClass("hasFilters");if(h&&!c.ajaxUrl)if(b.isEmptyObject(g.cache))c.filteredRows=c.totalRows=g.$tbodies.eq(0).children("tr").not(c.countChildRows?"":"."+g.cssChildRow).length;else for(c.filteredRows=0,d=g.cache[0].normalized,f=d.length,e=0;f>e;e++)c.filteredRows+=c.regexRows.test(d[e][g.columns].$row[0].className)?0:1;else h||(c.filteredRows=c.totalRows)},g=function(c,d,g){if(!d.initializing){var j,k,l,m,n,o,p=c.config,q=p.namespace+"pager",r=u(d,d.size,"get");if(d.countChildRows&&k.push(p.cssChildRow),d.totalPages=Math.ceil(d.totalRows/r),p.totalRows=d.totalRows,v(c,d),f(c,d),p.filteredRows=d.filteredRows,d.filteredPages=Math.ceil(d.filteredRows/r)||0,t(c,d)>=0){if(k=d.size*d.page>d.filteredRows&&g,d.page=k?d.pageReset||0:d.page,d.startRow=k?d.size*d.page+1:0===d.filteredRows?0:d.size*d.page+1,d.endRow=Math.min(d.filteredRows,d.totalRows,d.size*(d.page+1)),l=d.$container.find(d.cssPageDisplay),j=(d.ajaxData&&d.ajaxData.output?d.ajaxData.output||d.output:d.output).replace(/\{page([\-+]\d+)?\}/gi,function(a,b){return d.totalPages?d.page+(b?parseInt(b,10):1):0}).replace(/\{\w+(\s*:\s*\w+)?\}/gi,function(a){var b,c,e=a.replace(/[{}\s]/g,""),f=e.split(":"),g=d.ajaxData,h=/(rows?|pages?)$/i.test(e)?0:"";return/(startRow|page)/.test(f[0])&&"input"===f[1]?(b=(""+("page"===f[0]?d.totalPages:d.totalRows)).length,c="page"===f[0]?d.page+1:d.startRow,''):f.length>1&&g&&g[f[0]]?g[f[0]][f[1]]:d[e]||(g?g[e]:h)||h}),d.$goto.length){for(k="",o=h(c,d),n=o.length,m=0;n>m;m++)k+='";d.$goto.html(k).val(d.page+1)}l.length&&(l["INPUT"===l[0].nodeName?"val":"html"](j),l.find(".ts-startRow, .ts-page").unbind("change"+q).bind("change"+q,function(){var b=a(this).val(),c=a(this).hasClass("ts-startRow")?Math.floor(b/d.size)+1:b;p.$table.trigger("pageSet"+q,[c])}))}e(c,d),i(c,d),d.initialized&&g!==!1&&(p.debug&&console.log("Pager: Triggering pagerComplete"),p.$table.trigger("pagerComplete",d),d.savePages&&b.storage&&b.storage(c,d.storageKey,{page:d.page,size:d.size}))}},h=function(b,c){var d,e,f,g,h,i,j=t(b,c)||1,k=5*Math.ceil(j/c.maxOptionSize/5),l=j>c.maxOptionSize,m=c.page+1,n=k,o=j-k,p=[1],q=l?k:1;for(d=q;j>=d;)p.push(d),d+=l?k:1;if(p.push(j),l){for(f=[],e=Math.max(Math.floor(c.maxOptionSize/k)-1,5),n=m-e,1>n&&(n=1),o=m+e,o>j&&(o=j),d=n;o>=d;d++)f.push(d);p=a.grep(p,function(b,c){return a.inArray(b,p)===c}),h=p.length,i=f.length,h-i>k/2&&h+i>c.maxOptionSize&&(g=Math.floor(h/2)-Math.floor(i/2),Array.prototype.splice.apply(p,[g,i])),p=p.concat(f)}return p=a.grep(p,function(b,c){return a.inArray(b,p)===c}).sort(function(a,b){return a-b})},i=function(b,c){var d,e,f=b.config,g=f.$tbodies.eq(0);g.find("tr.pagerSavedHeightSpacer").remove(),c.fixedHeight&&!c.isDisabled&&(e=a.data(b,"pagerSavedHeight"),e&&(d=e-g.height(),d>5&&a.data(b,"pagerLastSize")===c.size&&g.children("tr:visible").length')))},j=function(b,c){var d,e=b.config,f=e.$tbodies.eq(0);f.find("tr.pagerSavedHeightSpacer").remove(),f.children("tr:visible").length||f.append(' '),d=f.children("tr").eq(0).height()*c.size,a.data(b,"pagerSavedHeight",d),i(b,c),a.data(b,"pagerLastSize",c.size)},k=function(a,c){if(!c.ajaxUrl){var d,e=0,f=a.config,g=f.$tbodies.eq(0).children("tr"),h=g.length,i=c.page*c.size,j=i+c.size,k=f.widgetOptions&&f.widgetOptions.filter_filteredRow||"filtered",l=0,m=0;for(c.cacheIndex=[],d=0;h>d;d++)g[d].className.match(k)||(m===i&&g[d].className.match(f.cssChildRow)?g[d].style.display="none":(g[d].style.display=m>=i&&j>m?"":"none",l!==m&&m>=i&&j>m&&(c.cacheIndex.push(d),l=m),m+=g[d].className.match(f.cssChildRow+"|"+f.selectorRemove.slice(1))&&!c.countChildRows?0:1,m===j&&"none"!==g[d].style.display&&g[d].className.match(b.css.cssHasChild)&&(e=d)));if(e>0&&g[e].className.match(b.css.cssHasChild))for(;++e> Ajax Error",f,h,i),b.showError(d,f,h,i),y.$tbodies.eq(0).children("tr").detach(),e.totalRows=0;else{if(a.isArray(B)?(l=isNaN(B[0])&&!isNaN(B[1]),w=B[l?1:0],e.totalRows=isNaN(w)?e.totalRows||0:w,y.totalRows=y.filteredRows=e.filteredRows=e.totalRows,t=0===e.totalRows?[]:B[l?0:1]||[],s=B[2]):(e.ajaxData=B,y.totalRows=e.totalRows=B.total,y.filteredRows=e.filteredRows="undefined"!=typeof B.filteredRows?B.filteredRows:B.total,s=B.headers,t=B.rows||[]),v=t&&t.length,t instanceof jQuery)e.processAjaxOnInit&&(y.$tbodies.eq(0).empty(),y.$tbodies.eq(0).append(t));else if(v){for(j=0;v>j;j++){for(A+="",k=0;k"+t[j][k]+"";A+=""}e.processAjaxOnInit&&y.$tbodies.eq(0).html(A)}if(e.processAjaxOnInit=!0,s&&s.length===C)for(m=z.hasClass("hasStickyHeaders"),o=m?y.widgetOptions.$sticky.children("thead:first").children("tr").children():"",n=z.find("tfoot tr:first").children(),p=y.$headers.filter("th "),x=p.length,k=0;x>k;k++)q=p.eq(k),q.find("."+b.css.icon).length?(r=q.find("."+b.css.icon).clone(!0),q.find(".tablesorter-header-inner").html(s[k]).append(r),m&&o.length&&(r=o.eq(k).find("."+b.css.icon).clone(!0),o.eq(k).find(".tablesorter-header-inner").html(s[k]).append(r))):(q.find(".tablesorter-header-inner").html(s[k]),m&&o.length&&o.eq(k).find(".tablesorter-header-inner").html(s[k])),n.eq(k).html(s[k])}y.showProcessing&&b.isProcessing(d),e.totalPages=Math.ceil(e.totalRows/u(e,e.size,"get")),e.last.totalRows=e.totalRows,e.last.currentFilters=e.currentFilters,e.last.sortList=(y.sortList||[]).join(","),g(d,e,!1),b.updateCache(y,function(){e.initialized&&setTimeout(function(){y.debug&&console.log("Pager: Triggering pagerChange"),z.trigger("pagerChange",e),b.applyWidget(d),g(d,e,!0)},0)})}e.initialized||(e.initialized=!0,e.initializing=!1,d.config.debug&&console.log("Pager: Triggering pagerInitialized"),a(d).trigger("pagerInitialized",e),b.applyWidget(d),g(d,e))},n=function(c,d){var e,f=o(c,d),g=a(document),h=c.config,i=h.namespace+"pager";""!==f&&(h.showProcessing&&b.isProcessing(c,!0),g.bind("ajaxError"+i,function(a,b,e,f){m(null,c,d,b,e,f),g.unbind("ajaxError"+i)}),e=++d.ajaxCounter,d.last.ajaxUrl=f,d.ajaxObject.url=f,d.ajaxObject.success=function(a,b,f){ed;d++)l.push(j+"["+h[d][0]+"]="+h[d][1]);g=g.replace(/\{\s*sort(?:List)?\s*:\s*(\w*)\s*\}/g,l.length?l.join("&"):j),l=[]}if(k){for(k=k[1],e=i.length,d=0;e>d;d++)i[d]&&l.push(k+"["+d+"]="+encodeURIComponent(i[d]));g=g.replace(/\{\s*filter(?:List)?\s*:\s*(\w*)\s*\}/g,l.length?l.join("&"):k),c.currentFilters=i}return"function"==typeof c.customAjaxUrl&&(g=c.customAjaxUrl(b,g)),f.debug&&console.log("Pager: Ajax url = "+g),g},p=function(c,d,e){var f,h,i,j,l=a(c),m=c.config,n=m.$table.hasClass("hasFilters"),o=d&&d.length||0,p=e.page*e.size,q=e.size;if(1>o)return void(m.debug&&console.warn("Pager: >> No rows for pager to render"));if(e.page>=e.totalPages&&y(c,e),e.cacheIndex=[],e.isDisabled=!1,e.initialized&&(m.debug&&console.log("Pager: Triggering pagerChange"),l.trigger("pagerChange",e)),e.removeRows){for(b.clearTableBody(c),f=b.processTbody(c,m.$tbodies.eq(0),!0),h=n?0:p,i=n?0:p,j=0;q>j&&hp&&q>=j&&(j++,e.cacheIndex.push(h),f.append(d[h]))),h++;b.processTbody(c,f,!1)}else k(c,e);g(c,e),c.isUpdating&&(m.debug&&console.log("Pager: Triggering updateComplete"),l.trigger("updateComplete",[c,!0]))},q=function(c,d){var f,g,h;for(d.ajax?e(c,d,!0):(a.data(c,"pagerLastPage",d.page),a.data(c,"pagerLastSize",d.size),d.page=0,d.size=d.totalRows,d.totalPages=1,a(c).addClass("pagerDisabled").removeAttr("aria-describedby").find("tr.pagerSavedHeightSpacer").remove(),p(c,c.config.rowsCopy,d),d.isDisabled=!0,b.applyWidget(c),c.config.debug&&console.log("Pager: Disabled")),g=d.$size.add(d.$goto).add(d.$container.find(".ts-startRow, .ts-page")),h=g.length,f=0;h>f;f++)g.eq(f).attr("aria-disabled","true").addClass(d.cssDisabled)[0].disabled=!0},r=function(a){var c=a.config,d=c.pager;b.updateCache(c,function(){var b,e=[],f=a.config.cache[0].normalized;for(d.totalRows=f.length,b=0;bc&&c>=0&&(b.page=c),b.page},w=function(b,c,d){d.size=u(d,c,"get"),d.$size.val(u(d,d.size,"set")),a.data(b,"pagerLastPage",v(b,d)),a.data(b,"pagerLastSize",d.size),d.totalPages=Math.ceil(d.totalRows/d.size),d.filteredPages=Math.ceil(d.filteredRows/d.size),s(b,d)},x=function(a,b){b.page=0,s(a,b)},y=function(a,b){b.page=t(a,b)-1,s(a,b)},z=function(a,b){b.page++;var c=t(a,b)-1;b.page>=c&&(b.page=c),s(a,b)},A=function(a,b){b.page--,b.page<=0&&(b.page=0),s(a,b)},B=function(a,c){var d=a.config,e=d.namespace+"pager",f=[c.cssFirst,c.cssPrev,c.cssNext,c.cssLast,c.cssGoto,c.cssPageSize].join(",");q(a,c),c.$container.hide().find(f).unbind(e),d.appender=null,d.$table.unbind(e),b.storage&&b.storage(a,c.storageKey,""),delete d.pager,delete d.rowsCopy},C=function(c,d,e){var f,g,h=c.config;d.$size.add(d.$goto).add(d.$container.find(".ts-startRow, .ts-page")).removeClass(d.cssDisabled).removeAttr("disabled").attr("aria-disabled","false"),d.isDisabled=!1,d.page=a.data(c,"pagerLastPage")||d.page||0,g=d.$size.find("option[selected]").val(),d.size=a.data(c,"pagerLastSize")||u(d,d.size,"get"),d.$size.val(u(d,d.size,"set")),d.totalPages=Math.ceil(t(c,d)/d.size),c.id&&(f=c.id+"_pager_info",d.$container.find(d.cssPageDisplay).attr("id",f),h.$table.attr("aria-describedby",f)),j(c,d),e&&(b.update(h),w(c,d.size,d),l(c,d),h.debug&&console.log("Pager: Enabled"))};d.appender=function(b,c){var d=b.config,e=d.pager;e.ajax||(d.rowsCopy=c,e.totalRows=e.countChildRows?d.$tbodies.eq(0).children("tr").length:c.length,e.size=a.data(b,"pagerLastSize")||e.size||e.settings.size||10,e.totalPages=Math.ceil(e.totalRows/e.size),p(b,c,e),g(b,e,!1))},d.construct=function(e){return this.each(function(){if(this.config&&this.hasInitialized){var f,h,i,m=this,n=m.config,o=n.widgetOptions,p=n.pager=a.extend(!0,{},a.tablesorterPager.defaults,e),t=n.$table,v=n.namespace+"pager",D=p.$container=a(p.container).addClass("tablesorter-pager").show();p.settings=a.extend(!0,{},a.tablesorterPager.defaults,e),n.debug&&console.log("Pager: Initializing"),p.oldAjaxSuccess=p.oldAjaxSuccess||p.ajaxObject.success,n.appender=d.appender,p.initializing=!0,p.savePages&&b.storage&&(f=b.storage(m,p.storageKey)||{},p.page=isNaN(f.page)?p.page:f.page,p.size=(isNaN(f.size)?p.size:f.size)||p.settings.size||10,a.data(m,"pagerLastSize",p.size)),p.regexRows=new RegExp("("+(o.filter_filteredRow||"filtered")+"|"+n.selectorRemove.slice(1)+"|"+n.cssChildRow+")"),t.unbind(c.split(" ").join(v+" ").replace(/\s+/g," ")).bind("filterInit filterStart ".split(" ").join(v+" "),function(b,c){p.currentFilters=a.isArray(c)?c:n.$table.data("lastSearch"),"filterStart"===b.type&&p.pageReset!==!1&&(n.lastCombinedFilter||"")!==(p.currentFilters||[]).join("")&&(p.page=p.pageReset)}).bind("filterEnd sortEnd ".split(" ").join(v+" "),function(){p.currentFilters=n.$table.data("lastSearch"),(p.initialized||p.initializing)&&(n.delayInit&&n.rowsCopy&&0===n.rowsCopy.length&&r(m),g(m,p,!1),s(m,p,!1),b.applyWidget(m))}).bind("disablePager"+v,function(a){a.stopPropagation(),q(m,p)}).bind("enablePager"+v,function(a){a.stopPropagation(),C(m,p,!0)}).bind("destroyPager"+v,function(a){a.stopPropagation(),B(m,p)}).bind("updateComplete"+v,function(a,b,c){if(a.stopPropagation(),b&&!c&&!p.ajax){var d=n.$tbodies.eq(0).children("tr").not(n.selectorRemove);p.totalRows=d.length-(p.countChildRows?0:d.filter("."+n.cssChildRow).length),p.totalPages=Math.ceil(p.totalRows/p.size),d.length&&n.rowsCopy&&0===n.rowsCopy.length&&r(b),p.page>=p.totalPages&&y(b,p),k(b,p),j(b,p),g(b,p,!0)}}).bind("pageSize refreshComplete ".split(" ").join(v+" "),function(a,b){a.stopPropagation(),w(m,u(p,b,"get"),p),k(m,p),g(m,p,!1)}).bind("pageSet pagerUpdate ".split(" ").join(v+" "),function(a,b){a.stopPropagation(),"pagerUpdate"===a.type&&(b="undefined"==typeof b?p.page+1:b,p.last.page=!0),p.page=(parseInt(b,10)||1)-1,s(m,p,!0),g(m,p,!1)}).bind("pageAndSize"+v,function(a,b,c){a.stopPropagation(),p.page=(parseInt(b,10)||1)-1,w(m,u(p,c,"get"),p),s(m,p,!0),k(m,p),g(m,p,!1)}),h=[p.cssFirst,p.cssPrev,p.cssNext,p.cssLast],i=[x,A,z,y],n.debug&&!D.length&&console.warn("Pager: >> Container not found"),D.find(h.join(",")).attr("tabindex",0).unbind("click"+v).bind("click"+v,function(b){b.stopPropagation();var c,d=a(this),e=h.length;if(!d.hasClass(p.cssDisabled))for(c=0;e>c;c++)if(d.is(h[c])){i[c](m,p);break}}),p.$goto=D.find(p.cssGoto),p.$goto.length?p.$goto.unbind("change"+v).bind("change"+v,function(){p.page=a(this).val()-1,s(m,p,!0),g(m,p,!1)}):n.debug&&console.warn("Pager: >> Goto selector not found"),p.$size=D.find(p.cssPageSize),p.$size.length?(p.$size.find("option").removeAttr("selected"),p.$size.unbind("change"+v).bind("change"+v,function(){if(!a(this).hasClass(p.cssDisabled)){var b=a(this).val();p.$size.val(b),w(m,b,p),j(m,p)}return!1})):n.debug&&console.warn("Pager: >> Size selector not found"),p.initialized=!1,t.trigger("pagerBeforeInitialized",p),C(m,p,!1),"string"==typeof p.ajaxUrl?(p.ajax=!0,n.widgetOptions.filter_serversideFiltering=!0,n.serverSideSorting=!0,s(m,p)):(p.ajax=!1,b.appendCache(n,!0),l(m,p)),p.ajax||p.initialized||(p.initializing=!1,p.initialized=!0,s(m,p),n.debug&&console.log("Pager: Triggering pagerInitialized"),n.$table.trigger("pagerInitialized",p),n.widgetOptions.filter_initialized&&b.hasWidget(m,"filter")||g(m,p,!1)),n.widgetInit.pager=!0}})}}}),b.showError=function(b,c,d,e){var f,g=a(b),h=g[0].config,i=h&&h.widgetOptions,j=h.pager&&h.pager.cssErrorRow||i&&i.pager_css&&i.pager_css.errorRow||"tablesorter-errorRow",k=typeof c,l=!0,m="",n=function(){h.$table.find("thead").find("."+j).remove()};if(!g.length)return void console.error("tablesorter showError: no table parameter passed");if("function"==typeof h.pager.ajaxError){if(l=h.pager.ajaxError(h,c,d,e),l===!1)return n();m=l}else if("function"==typeof i.pager_ajaxError){if(l=i.pager_ajaxError(h,c,d,e),l===!1)return n();m=l}if(""===m)if("object"===k)m=0===c.status?"Not connected, verify Network":404===c.status?"Requested page not found [404]":500===c.status?"Internal Server Error [500]":"parsererror"===e?"Requested JSON parse failed":"timeout"===e?"Time out error":"abort"===e?"Ajax Request aborted":"Uncaught error: "+c.statusText+" ["+c.status+"]";else{if("string"!==k)return n();m=c}f=a(/tr\>/.test(m)?m:''+m+"").click(function(){a(this).remove()}).appendTo(h.$table.find("thead:first")).addClass(j+" "+h.selectorRemove.slice(1)).attr({role:"alert","aria-live":"assertive"})},a.fn.extend({tablesorterPager:a.tablesorterPager.construct})}(jQuery); \ No newline at end of file diff --git a/vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/semver-mod.min.js b/vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/semver-mod.min.js new file mode 100644 index 000000000..733fe1149 --- /dev/null +++ b/vendor/FHC-vendor/jquery-tablesorter/dist/js/extras/semver-mod.min.js @@ -0,0 +1,2 @@ +/*! Modified semver.js for node.js (v4.3.3, 3/27/2015) */ +!function(){function a(a,b){if(a instanceof d)return a;if("string"!=typeof a)return null;if(a.length>U)return null;var c=b?W[la]:W[ia];if(!c.test(a))return null;try{return new d(a,b)}catch(e){return null}}function b(b,c){var d=a(b,c);return d?d.version:null}function c(b,c){var d=a(b.trim().replace(/^[=v]+/,""),c);return d?d.version:null}function d(a,b){if(a instanceof d){if(a.loose===b)return a;a=a.version}else if("string"!=typeof a)throw new TypeError("Invalid Version: "+a);if(a.length>U)throw new TypeError("version is longer than "+U+" characters");if(!(this instanceof d))return new d(a,b);R("SemVer",a,b),this.loose=b;var c=a.trim().match(b?W[la]:W[ia]);if(!c)throw new TypeError("Invalid Version: "+a);if(this.raw=a,this.major=+c[1],this.minor=+c[2],this.patch=+c[3],this.major>V||this.major<0)throw new TypeError("Invalid major version");if(this.minor>V||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>V||this.patch<0)throw new TypeError("Invalid patch version");c[4]?this.prerelease=c[4].split(".").map(function(a){if(/^[0-9]+$/.test(a)){var b=+a;if(b>=0&&V>b)return b}return a}):this.prerelease=[],this.build=c[5]?c[5].split("."):[],this.format()}function e(a,b,c,e){"string"==typeof c&&(e=c,c=void 0);try{return new d(a,c).inc(b,e).version}catch(f){return null}}function f(b,c){if(s(b,c))return null;var d=a(b),e=a(c);if(d.prerelease.length||e.prerelease.length){for(var f in d)if(("major"===f||"minor"===f||"patch"===f)&&d[f]!==e[f])return"pre"+f;return"prerelease"}for(var f in d)if(("major"===f||"minor"===f||"patch"===f)&&d[f]!==e[f])return f}function g(a,b){var c=La.test(a),d=La.test(b);return c&&d&&(a=+a,b=+b),c&&!d?-1:d&&!c?1:b>a?-1:a>b?1:0}function h(a,b){return g(b,a)}function i(a,b){return new d(a,b).major}function j(a,b){return new d(a,b).minor}function k(a,b){return new d(a,b).patch}function l(a,b,c){return new d(a,c).compare(b)}function m(a,b){return l(a,b,!0)}function n(a,b,c){return l(b,a,c)}function o(a,b){return a.sort(function(a,c){return T.compare(a,c,b)})}function p(a,b){return a.sort(function(a,c){return T.rcompare(a,c,b)})}function q(a,b,c){return l(a,b,c)>0}function r(a,b,c){return l(a,b,c)<0}function s(a,b,c){return 0===l(a,b,c)}function t(a,b,c){return 0!==l(a,b,c)}function u(a,b,c){return l(a,b,c)>=0}function v(a,b,c){return l(a,b,c)<=0}function w(a,b,c,d){var e;switch(b){case"===":"object"==typeof a&&(a=a.version),"object"==typeof c&&(c=c.version),e=a===c;break;case"!==":"object"==typeof a&&(a=a.version),"object"==typeof c&&(c=c.version),e=a!==c;break;case"":case"=":case"==":e=s(a,c,d);break;case"!=":e=t(a,c,d);break;case">":e=q(a,c,d);break;case">=":e=u(a,c,d);break;case"<":e=r(a,c,d);break;case"<=":e=v(a,c,d);break;default:throw new TypeError("Invalid operator: "+b)}return e}function x(a,b){if(a instanceof x){if(a.loose===b)return a;a=a.value}return this instanceof x?(R("comparator",a,b),this.loose=b,this.parse(a),this.semver===Ma?this.value="":this.value=this.operator+this.semver.version,void R("comp",this)):new x(a,b)}function y(a,b){if(a instanceof y&&a.loose===b)return a;if(!(this instanceof y))return new y(a,b);if(this.loose=b,this.raw=a,this.set=a.split(/\s*\|\|\s*/).map(function(a){return this.parseRange(a.trim())},this).filter(function(a){return a.length}),!this.set.length)throw new TypeError("Invalid SemVer Range: "+a);this.format()}function z(a,b){return new y(a,b).set.map(function(a){return a.map(function(a){return a.value}).join(" ").trim().split(" ")})}function A(a,b){return R("comp",a),a=E(a,b),R("caret",a),a=C(a,b),R("tildes",a),a=G(a,b),R("xrange",a),a=I(a,b),R("stars",a),a}function B(a){return!a||"x"===a.toLowerCase()||"*"===a}function C(a,b){return a.trim().split(/\s+/).map(function(a){return D(a,b)}).join(" ")}function D(a,b){var c=b?W[xa]:W[wa];return a.replace(c,function(b,c,d,e,f){R("tilde",a,b,c,d,e,f);var g;return B(c)?g="":B(d)?g=">="+c+".0.0 <"+(+c+1)+".0.0":B(e)?g=">="+c+"."+d+".0 <"+c+"."+(+d+1)+".0":f?(R("replaceTilde pr",f),"-"!==f.charAt(0)&&(f="-"+f),g=">="+c+"."+d+"."+e+f+" <"+c+"."+(+d+1)+".0"):g=">="+c+"."+d+"."+e+" <"+c+"."+(+d+1)+".0",R("tilde return",g),g})}function E(a,b){return a.trim().split(/\s+/).map(function(a){return F(a,b)}).join(" ")}function F(a,b){R("caret",a,b);var c=b?W[Ca]:W[Ba];return a.replace(c,function(b,c,d,e,f){R("caret",a,b,c,d,e,f);var g;return B(c)?g="":B(d)?g=">="+c+".0.0 <"+(+c+1)+".0.0":B(e)?g="0"===c?">="+c+"."+d+".0 <"+c+"."+(+d+1)+".0":">="+c+"."+d+".0 <"+(+c+1)+".0.0":f?(R("replaceCaret pr",f),"-"!==f.charAt(0)&&(f="-"+f),g="0"===c?"0"===d?">="+c+"."+d+"."+e+f+" <"+c+"."+d+"."+(+e+1):">="+c+"."+d+"."+e+f+" <"+c+"."+(+d+1)+".0":">="+c+"."+d+"."+e+f+" <"+(+c+1)+".0.0"):(R("no pr"),g="0"===c?"0"===d?">="+c+"."+d+"."+e+" <"+c+"."+d+"."+(+e+1):">="+c+"."+d+"."+e+" <"+c+"."+(+d+1)+".0":">="+c+"."+d+"."+e+" <"+(+c+1)+".0.0"),R("caret return",g),g})}function G(a,b){return R("replaceXRanges",a,b),a.split(/\s+/).map(function(a){return H(a,b)}).join(" ")}function H(a,b){a=a.trim();var c=b?W[sa]:W[ra];return a.replace(c,function(b,c,d,e,f,g){R("xRange",a,b,c,d,e,f,g);var h=B(d),i=h||B(e),j=i||B(f),k=j;return"="===c&&k&&(c=""),h?b=">"===c||"<"===c?"<0.0.0":"*":c&&k?(i&&(e=0),j&&(f=0),">"===c?(c=">=",i?(d=+d+1,e=0,f=0):j&&(e=+e+1,f=0)):"<="===c&&(c="<",i?d=+d+1:e=+e+1),b=c+d+"."+e+"."+f):i?b=">="+d+".0.0 <"+(+d+1)+".0.0":j&&(b=">="+d+"."+e+".0 <"+d+"."+(+e+1)+".0"),R("xRange return",b),b})}function I(a,b){return R("replaceStars",a,b),a.trim().replace(W[Ja],"")}function J(a,b,c,d,e,f,g,h,i,j,k,l,m){return b=B(c)?"":B(d)?">="+c+".0.0":B(e)?">="+c+"."+d+".0":">="+b,h=B(i)?"":B(j)?"<"+(+i+1)+".0.0":B(k)?"<"+i+"."+(+j+1)+".0":l?"<="+i+"."+j+"."+k+"-"+l:"<="+h,(b+" "+h).trim()}function K(a,b){for(var c=0;c0){var d=a[c].semver;if(d.major===b.major&&d.minor===b.minor&&d.patch===b.patch)return!0}}return!1}return!0}function L(a,b,c){try{b=new y(b,c)}catch(d){return!1}return b.test(a)}function M(a,b,c){return a.filter(function(a){return L(a,b,c)}).sort(function(a,b){return n(a,b,c)})[0]||null}function N(a,b){try{return new y(a,b).range||"*"}catch(c){return null}}function O(a,b,c){return Q(a,b,"<",c)}function P(a,b,c){return Q(a,b,">",c)}function Q(a,b,c,e){a=new d(a,e),b=new y(b,e);var f,g,h,i,j;switch(c){case">":f=q,g=v,h=r,i=">",j=">=";break;case"<":f=r,g=u,h=q,i="<",j="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(L(a,b,e))return!1;for(var k=0;k)?=?)";var na=Y++;X[na]=X[$]+"|x|X|\\*";var oa=Y++;X[oa]=X[Z]+"|x|X|\\*";var pa=Y++;X[pa]="[v=\\s]*("+X[oa]+")(?:\\.("+X[oa]+")(?:\\.("+X[oa]+")(?:"+X[ea]+")?"+X[ha]+"?)?)?";var qa=Y++;X[qa]="[v=\\s]*("+X[na]+")(?:\\.("+X[na]+")(?:\\.("+X[na]+")(?:"+X[fa]+")?"+X[ha]+"?)?)?";var ra=Y++;X[ra]="^"+X[ma]+"\\s*"+X[pa]+"$";var sa=Y++;X[sa]="^"+X[ma]+"\\s*"+X[qa]+"$";var ta=Y++;X[ta]="(?:~>?)";var ua=Y++;X[ua]="(\\s*)"+X[ta]+"\\s+",W[ua]=new RegExp(X[ua],"g");var va="$1~",wa=Y++;X[wa]="^"+X[ta]+X[pa]+"$";var xa=Y++;X[xa]="^"+X[ta]+X[qa]+"$";var ya=Y++;X[ya]="(?:\\^)";var za=Y++;X[za]="(\\s*)"+X[ya]+"\\s+",W[za]=new RegExp(X[za],"g");var Aa="$1^",Ba=Y++;X[Ba]="^"+X[ya]+X[pa]+"$";var Ca=Y++;X[Ca]="^"+X[ya]+X[qa]+"$";var Da=Y++;X[Da]="^"+X[ma]+"\\s*("+ka+")$|^$";var Ea=Y++;X[Ea]="^"+X[ma]+"\\s*("+ja+")$|^$";var Fa=Y++;X[Fa]="(\\s*)"+X[ma]+"\\s*("+ka+"|"+X[pa]+")",W[Fa]=new RegExp(X[Fa],"g");var Ga="$1$2$3",Ha=Y++;X[Ha]="^\\s*("+X[pa]+")\\s+-\\s+("+X[pa]+")\\s*$";var Ia=Y++;X[Ia]="^\\s*("+X[qa]+")\\s+-\\s+("+X[qa]+")\\s*$";var Ja=Y++;X[Ja]="(<|>)?=?\\s*\\*";for(var Ka=0;Y>Ka;Ka++)R(Ka,X[Ka]),W[Ka]||(W[Ka]=new RegExp(X[Ka]));T.parse=a,T.valid=b,T.clean=c,window.semver=T.SemVer=d,d.prototype.format=function(){return this.version=this.major+"."+this.minor+"."+this.patch,this.prerelease.length&&(this.version+="-"+this.prerelease.join(".")),this.version},d.prototype.inspect=function(){return''},d.prototype.toString=function(){return this.version},d.prototype.compare=function(a){return R("SemVer.compare",this.version,this.loose,a),a instanceof d||(a=new d(a,this.loose)),this.compareMain(a)||this.comparePre(a)},d.prototype.compareMain=function(a){return a instanceof d||(a=new d(a,this.loose)),g(this.major,a.major)||g(this.minor,a.minor)||g(this.patch,a.patch)},d.prototype.comparePre=function(a){if(a instanceof d||(a=new d(a,this.loose)),this.prerelease.length&&!a.prerelease.length)return-1;if(!this.prerelease.length&&a.prerelease.length)return 1;if(!this.prerelease.length&&!a.prerelease.length)return 0;var b=0;do{var c=this.prerelease[b],e=a.prerelease[b];if(R("prerelease compare",b,c,e),void 0===c&&void 0===e)return 0;if(void 0===e)return 1;if(void 0===c)return-1;if(c!==e)return g(c,e)}while(++b)},d.prototype.inc=function(a,b){switch(a){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",b);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",b);break;case"prepatch":this.prerelease.length=0,this.inc("patch",b),this.inc("pre",b);break;case"prerelease":0===this.prerelease.length&&this.inc("patch",b),this.inc("pre",b);break;case"major":(0!==this.minor||0!==this.patch||0===this.prerelease.length)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(0!==this.patch||0===this.prerelease.length)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":0===this.prerelease.length&&this.patch++,this.prerelease=[];break;case"pre":if(0===this.prerelease.length)this.prerelease=[0];else{for(var c=this.prerelease.length;--c>=0;)"number"==typeof this.prerelease[c]&&(this.prerelease[c]++,c=-2);-1===c&&this.prerelease.push(0)}b&&(this.prerelease[0]===b?isNaN(this.prerelease[1])&&(this.prerelease=[b,0]):this.prerelease=[b,0]);break;default:throw new Error("invalid increment argument: "+a)}return this.format(),this},T.inc=e,T.diff=f,T.compareIdentifiers=g;var La=/^[0-9]+$/;T.rcompareIdentifiers=h,T.major=i,T.minor=j,T.patch=k,T.compare=l,T.compareLoose=m,T.rcompare=n,T.sort=o,T.rsort=p,T.gt=q,T.lt=r,T.eq=s,T.neq=t,T.gte=u,T.lte=v,T.cmp=w,T.Comparator=x;var Ma={};x.prototype.parse=function(a){var b=this.loose?W[Da]:W[Ea],c=a.match(b);if(!c)throw new TypeError("Invalid comparator: "+a);this.operator=c[1],"="===this.operator&&(this.operator=""),c[2]?this.semver=new d(c[2],this.loose):this.semver=Ma},x.prototype.inspect=function(){return''},x.prototype.toString=function(){return this.value},x.prototype.test=function(a){return R("Comparator.test",a,this.loose),this.semver===Ma?!0:("string"==typeof a&&(a=new d(a,this.loose)),w(a,this.operator,this.semver,this.loose))},T.Range=y,y.prototype.inspect=function(){return''},y.prototype.format=function(){return this.range=this.set.map(function(a){return a.join(" ").trim()}).join("||").trim(),this.range},y.prototype.toString=function(){return this.range},y.prototype.parseRange=function(a){var b=this.loose;a=a.trim(),R("range",a,b);var c=b?W[Ia]:W[Ha];a=a.replace(c,J),R("hyphen replace",a),a=a.replace(W[Fa],Ga),R("comparator trim",a,W[Fa]),a=a.replace(W[ua],va),a=a.replace(W[za],Aa),a=a.split(/\s+/).join(" ");var d=b?W[Da]:W[Ea],e=a.split(" ").map(function(a){return A(a,b)}).join(" ").split(/\s+/);return this.loose&&(e=e.filter(function(a){return!!a.match(d)})),e=e.map(function(a){return new x(a,b)})},T.toComparators=z,y.prototype.test=function(a){if(!a)return!1;"string"==typeof a&&(a=new d(a,this.loose));for(var b=0;b // class from cssIcon + onRenderTemplate : null, // function( index, template ){ return template; }, // template is a string + onRenderHeader : null, // function( index ){}, // nothing to return + + // *** functionality + cancelSelection : true, // prevent text selection in the header + tabIndex : true, // add tabindex to header for keyboard accessibility + dateFormat : 'mmddyyyy', // other options: 'ddmmyyy' or 'yyyymmdd' + sortMultiSortKey : 'shiftKey', // key used to select additional columns + sortResetKey : 'ctrlKey', // key used to remove sorting on a column + usNumberFormat : true, // false for German '1.234.567,89' or French '1 234 567,89' + delayInit : false, // if false, the parsed table contents will not update until the first sort + serverSideSorting: false, // if true, server-side sorting should be performed because client-side sorting will be disabled, but the ui and events will still be used. + resort : true, // default setting to trigger a resort after an 'update', 'addRows', 'updateCell', etc has completed + + // *** sort options + headers : {}, // set sorter, string, empty, locked order, sortInitialOrder, filter, etc. + ignoreCase : true, // ignore case while sorting + sortForce : null, // column(s) first sorted; always applied + sortList : [], // Initial sort order; applied initially; updated when manually sorted + sortAppend : null, // column(s) sorted last; always applied + sortStable : false, // when sorting two rows with exactly the same content, the original sort order is maintained + + sortInitialOrder : 'asc', // sort direction on first click + sortLocaleCompare: false, // replace equivalent character (accented characters) + sortReset : false, // third click on the header will reset column to default - unsorted + sortRestart : false, // restart sort to 'sortInitialOrder' when clicking on previously unsorted columns + + emptyTo : 'bottom', // sort empty cell to bottom, top, none, zero, emptyMax, emptyMin + stringTo : 'max', // sort strings in numerical column as max, min, top, bottom, zero + textExtraction : 'basic', // text extraction method/function - function( node, table, cellIndex ){} + textAttribute : 'data-text',// data-attribute that contains alternate cell text (used in default textExtraction function) + textSorter : null, // choose overall or specific column sorter function( a, b, direction, table, columnIndex ) [alt: ts.sortText] + numberSorter : null, // choose overall numeric sorter function( a, b, direction, maxColumnValue ) + + // *** widget options + widgets: [], // method to add widgets, e.g. widgets: ['zebra'] + widgetOptions : { + zebra : [ 'even', 'odd' ] // zebra widget alternating row class names + }, + initWidgets : true, // apply widgets on tablesorter initialization + widgetClass : 'widget-{name}', // table class name template to match to include a widget + + // *** callbacks + initialized : null, // function( table ){}, + + // *** extra css class names + tableClass : '', + cssAsc : '', + cssDesc : '', + cssNone : '', + cssHeader : '', + cssHeaderRow : '', + cssProcessing : '', // processing icon applied to header during sort/filter + + cssChildRow : 'tablesorter-childRow', // class name indiciating that a row is to be attached to the its parent + cssInfoBlock : 'tablesorter-infoOnly', // don't sort tbody with this class name (only one class name allowed here!) + cssNoSort : 'tablesorter-noSort', // class name added to element inside header; clicking on it won't cause a sort + cssIgnoreRow : 'tablesorter-ignoreRow', // header row to ignore; cells within this row will not be added to c.$headers + + cssIcon : 'tablesorter-icon', // if this class does not exist, the {icon} will not be added from the headerTemplate + cssIconNone : '', // class name added to the icon when there is no column sort + cssIconAsc : '', // class name added to the icon when the column has an ascending sort + cssIconDesc : '', // class name added to the icon when the column has a descending sort + + // *** events + pointerClick : 'click', + pointerDown : 'mousedown', + pointerUp : 'mouseup', + + // *** selectors + selectorHeaders : '> thead th, > thead td', + selectorSort : 'th, td', // jQuery selector of content within selectorHeaders that is clickable to trigger a sort + selectorRemove : '.remove-me', + + // *** advanced + debug : false, + + // *** Internal variables + headerList: [], + empties: {}, + strings: {}, + parsers: [] + + // removed: widgetZebra: { css: ['even', 'odd'] } + + }, + + // internal css classes - these will ALWAYS be added to + // the table and MUST only contain one class name - fixes #381 + css : { + table : 'tablesorter', + cssHasChild: 'tablesorter-hasChildRow', + childRow : 'tablesorter-childRow', + colgroup : 'tablesorter-colgroup', + header : 'tablesorter-header', + headerRow : 'tablesorter-headerRow', + headerIn : 'tablesorter-header-inner', + icon : 'tablesorter-icon', + processing : 'tablesorter-processing', + sortAsc : 'tablesorter-headerAsc', + sortDesc : 'tablesorter-headerDesc', + sortNone : 'tablesorter-headerUnSorted' + }, + + // labels applied to sortable headers for accessibility (aria) support + language : { + sortAsc : 'Ascending sort applied, ', + sortDesc : 'Descending sort applied, ', + sortNone : 'No sort applied, ', + sortDisabled : 'sorting is disabled', + nextAsc : 'activate to apply an ascending sort', + nextDesc : 'activate to apply a descending sort', + nextNone : 'activate to remove the sort' + }, + + regex : { + templateContent : /\{content\}/g, + templateIcon : /\{icon\}/g, + templateName : /\{name\}/i, + spaces : /\s+/g, + nonWord : /\W/g, + formElements : /(input|select|button|textarea)/i, + + // *** sort functions *** + // regex used in natural sort + // chunk/tokenize numbers & letters + chunk : /(^([+\-]?(?:\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi, + // replace chunks @ ends + chunks : /(^\\0|\\0$)/, + hex : /^0x[0-9a-f]+$/i, + + // *** formatFloat *** + comma : /,/g, + digitNonUS : /[\s|\.]/g, + digitNegativeTest : /^\s*\([.\d]+\)/, + digitNegativeReplace : /^\s*\(([.\d]+)\)/, + + // *** isDigit *** + digitTest : /^[\-+(]?\d+[)]?$/, + digitReplace : /[,.'"\s]/g + + }, + + // digit sort text location; keeping max+/- for backwards compatibility + string : { + max : 1, + min : -1, + emptymin : 1, + emptymax : -1, + zero : 0, + none : 0, + 'null' : 0, + top : true, + bottom : false + }, + + // placeholder date parser data (globalize) + dates : {}, + + // These methods can be applied on table.config instance + instanceMethods : {}, + + /* + ▄█████ ██████ ██████ ██ ██ █████▄ + ▀█▄ ██▄▄ ██ ██ ██ ██▄▄██ + ▀█▄ ██▀▀ ██ ██ ██ ██▀▀▀ + █████▀ ██████ ██ ▀████▀ ██ + */ + + setup : function( table, c ) { + // if no thead or tbody, or tablesorter is already present, quit + if ( !table || !table.tHead || table.tBodies.length === 0 || table.hasInitialized === true ) { + if ( c.debug ) { + if ( table.hasInitialized ) { + console.warn( 'Stopping initialization. Tablesorter has already been initialized' ); + } else { + console.error( 'Stopping initialization! No table, thead or tbody' ); + } + } + return; + } + + var tmp = '', + $table = $( table ), + meta = $.metadata; + // initialization flag + table.hasInitialized = false; + // table is being processed flag + table.isProcessing = true; + // make sure to store the config object + table.config = c; + // save the settings where they read + $.data( table, 'tablesorter', c ); + if ( c.debug ) { + console[ console.group ? 'group' : 'log' ]( 'Initializing tablesorter' ); + $.data( table, 'startoveralltimer', new Date() ); + } + + // removing this in version 3 (only supports jQuery 1.7+) + c.supportsDataObject = ( function( version ) { + version[ 0 ] = parseInt( version[ 0 ], 10 ); + return ( version[ 0 ] > 1 ) || ( version[ 0 ] === 1 && parseInt( version[ 1 ], 10 ) >= 4 ); + })( $.fn.jquery.split( '.' ) ); + // ensure case insensitivity + c.emptyTo = c.emptyTo.toLowerCase(); + c.stringTo = c.stringTo.toLowerCase(); + c.last = { sortList : [], clickedIndex : -1 }; + // add table theme class only if there isn't already one there + if ( !/tablesorter\-/.test( $table.attr( 'class' ) ) ) { + tmp = ( c.theme !== '' ? ' tablesorter-' + c.theme : '' ); + } + c.table = table; + c.$table = $table + .addClass( ts.css.table + ' ' + c.tableClass + tmp ) + .attr( 'role', 'grid' ); + c.$headers = $table.find( c.selectorHeaders ); + + // give the table a unique id, which will be used in namespace binding + if ( !c.namespace ) { + c.namespace = '.tablesorter' + Math.random().toString( 16 ).slice( 2 ); + } else { + // make sure namespace starts with a period & doesn't have weird characters + c.namespace = '.' + c.namespace.replace( ts.regex.nonWord, '' ); + } + + c.$table.children().children( 'tr' ).attr( 'role', 'row' ); + c.$tbodies = $table.children( 'tbody:not(.' + c.cssInfoBlock + ')' ).attr({ + 'aria-live' : 'polite', + 'aria-relevant' : 'all' + }); + if ( c.$table.children( 'caption' ).length ) { + tmp = c.$table.children( 'caption' )[ 0 ]; + if ( !tmp.id ) { tmp.id = c.namespace.slice( 1 ) + 'caption'; } + c.$table.attr( 'aria-labelledby', tmp.id ); + } + c.widgetInit = {}; // keep a list of initialized widgets + // change textExtraction via data-attribute + c.textExtraction = c.$table.attr( 'data-text-extraction' ) || c.textExtraction || 'basic'; + // build headers + ts.buildHeaders( c ); + // fixate columns if the users supplies the fixedWidth option + // do this after theme has been applied + ts.fixColumnWidth( table ); + // add widgets from class name + ts.addWidgetFromClass( table ); + // add widget options before parsing (e.g. grouping widget has parser settings) + ts.applyWidgetOptions( table ); + // try to auto detect column type, and store in tables config + ts.setupParsers( c ); + // start total row count at zero + c.totalRows = 0; + // build the cache for the tbody cells + // delayInit will delay building the cache until the user starts a sort + if ( !c.delayInit ) { ts.buildCache( c ); } + // bind all header events and methods + ts.bindEvents( table, c.$headers, true ); + ts.bindMethods( c ); + // get sort list from jQuery data or metadata + // in jQuery < 1.4, an error occurs when calling $table.data() + if ( c.supportsDataObject && typeof $table.data().sortlist !== 'undefined' ) { + c.sortList = $table.data().sortlist; + } else if ( meta && ( $table.metadata() && $table.metadata().sortlist ) ) { + c.sortList = $table.metadata().sortlist; + } + // apply widget init code + ts.applyWidget( table, true ); + // if user has supplied a sort list to constructor + if ( c.sortList.length > 0 ) { + ts.sortOn( c, c.sortList, {}, !c.initWidgets ); + } else { + ts.setHeadersCss( c ); + if ( c.initWidgets ) { + // apply widget format + ts.applyWidget( table, false ); + } + } + + // show processesing icon + if ( c.showProcessing ) { + $table + .unbind( 'sortBegin' + c.namespace + ' sortEnd' + c.namespace ) + .bind( 'sortBegin' + c.namespace + ' sortEnd' + c.namespace, function( e ) { + clearTimeout( c.timerProcessing ); + ts.isProcessing( table ); + if ( e.type === 'sortBegin' ) { + c.timerProcessing = setTimeout( function() { + ts.isProcessing( table, true ); + }, 500 ); + } + }); + } + + // initialized + table.hasInitialized = true; + table.isProcessing = false; + if ( c.debug ) { + console.log( 'Overall initialization time: ' + ts.benchmark( $.data( table, 'startoveralltimer' ) ) ); + if ( c.debug && console.groupEnd ) { console.groupEnd(); } + } + $table.trigger( 'tablesorter-initialized', table ); + if ( typeof c.initialized === 'function' ) { + c.initialized( table ); + } + }, + + bindMethods : function( c ) { + var $table = c.$table, + namespace = c.namespace, + events = ( 'sortReset update updateRows updateAll updateHeaders addRows updateCell updateComplete ' + + 'sorton appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup ' + + 'mouseleave ' ).split( ' ' ) + .join( namespace + ' ' ); + // apply easy methods that trigger bound events + $table + .unbind( events.replace( ts.regex.spaces, ' ' ) ) + .bind( 'sortReset' + namespace, function( e, callback ) { + e.stopPropagation(); + // using this.config to ensure functions are getting a non-cached version of the config + ts.sortReset( this.config, callback ); + }) + .bind( 'updateAll' + namespace, function( e, resort, callback ) { + e.stopPropagation(); + ts.updateAll( this.config, resort, callback ); + }) + .bind( 'update' + namespace + ' updateRows' + namespace, function( e, resort, callback ) { + e.stopPropagation(); + ts.update( this.config, resort, callback ); + }) + .bind( 'updateHeaders' + namespace, function( e, callback ) { + e.stopPropagation(); + ts.updateHeaders( this.config, callback ); + }) + .bind( 'updateCell' + namespace, function( e, cell, resort, callback ) { + e.stopPropagation(); + ts.updateCell( this.config, cell, resort, callback ); + }) + .bind( 'addRows' + namespace, function( e, $row, resort, callback ) { + e.stopPropagation(); + ts.addRows( this.config, $row, resort, callback ); + }) + .bind( 'updateComplete' + namespace, function() { + this.isUpdating = false; + }) + .bind( 'sorton' + namespace, function( e, list, callback, init ) { + e.stopPropagation(); + ts.sortOn( this.config, list, callback, init ); + }) + .bind( 'appendCache' + namespace, function( e, callback, init ) { + e.stopPropagation(); + ts.appendCache( this.config, init ); + if ( $.isFunction( callback ) ) { + callback( this ); + } + }) + // $tbodies variable is used by the tbody sorting widget + .bind( 'updateCache' + namespace, function( e, callback, $tbodies ) { + e.stopPropagation(); + ts.updateCache( this.config, callback, $tbodies ); + }) + .bind( 'applyWidgetId' + namespace, function( e, id ) { + e.stopPropagation(); + ts.getWidgetById( id ).format( this, this.config, this.config.widgetOptions ); + }) + .bind( 'applyWidgets' + namespace, function( e, init ) { + e.stopPropagation(); + // apply widgets + ts.applyWidget( this, init ); + }) + .bind( 'refreshWidgets' + namespace, function( e, all, dontapply ) { + e.stopPropagation(); + ts.refreshWidgets( this, all, dontapply ); + }) + .bind( 'destroy' + namespace, function( e, removeClasses, callback ) { + e.stopPropagation(); + ts.destroy( this, removeClasses, callback ); + }) + .bind( 'resetToLoadState' + namespace, function( e ) { + e.stopPropagation(); + // remove all widgets + ts.removeWidget( this, true, false ); + // restore original settings; this clears out current settings, but does not clear + // values saved to storage. + c = $.extend( true, ts.defaults, c.originalSettings ); + this.hasInitialized = false; + // setup the entire table again + ts.setup( this, c ); + }); + }, + + bindEvents : function( table, $headers, core ) { + table = $( table )[ 0 ]; + var tmp, + c = table.config, + namespace = c.namespace, + downTarget = null; + if ( core !== true ) { + $headers.addClass( namespace.slice( 1 ) + '_extra_headers' ); + tmp = $.fn.closest ? $headers.closest( 'table' )[ 0 ] : $headers.parents( 'table' )[ 0 ]; + if ( tmp && tmp.nodeName === 'TABLE' && tmp !== table ) { + $( tmp ).addClass( namespace.slice( 1 ) + '_extra_table' ); + } + } + tmp = ( c.pointerDown + ' ' + c.pointerUp + ' ' + c.pointerClick + ' sort keyup ' ) + .replace( ts.regex.spaces, ' ' ) + .split( ' ' ) + .join( namespace + ' ' ); + // apply event handling to headers and/or additional headers (stickyheaders, scroller, etc) + $headers + // http://stackoverflow.com/questions/5312849/jquery-find-self; + .find( c.selectorSort ) + .add( $headers.filter( c.selectorSort ) ) + .unbind( tmp ) + .bind( tmp, function( e, external ) { + var $cell, cell, temp, + $target = $( e.target ), + // wrap event type in spaces, so the match doesn't trigger on inner words + type = ' ' + e.type + ' '; + // only recognize left clicks + if ( ( ( e.which || e.button ) !== 1 && !type.match( ' ' + c.pointerClick + ' | sort | keyup ' ) ) || + // allow pressing enter + ( type === ' keyup ' && e.which !== 13 ) || + // allow triggering a click event (e.which is undefined) & ignore physical clicks + ( type.match( ' ' + c.pointerClick + ' ' ) && typeof e.which !== 'undefined' ) ) { + return; + } + // ignore mouseup if mousedown wasn't on the same target + if ( type.match( ' ' + c.pointerUp + ' ' ) && downTarget !== e.target && external !== true ) { + return; + } + // set target on mousedown + if ( type.match( ' ' + c.pointerDown + ' ' ) ) { + downTarget = e.target; + // preventDefault needed or jQuery v1.3.2 and older throws an + // "Uncaught TypeError: handler.apply is not a function" error + temp = $target.jquery.split( '.' ); + if ( temp[ 0 ] === '1' && temp[ 1 ] < 4 ) { e.preventDefault(); } + return; + } + downTarget = null; + // prevent sort being triggered on form elements + if ( ts.regex.formElements.test( e.target.nodeName ) || + // nosort class name, or elements within a nosort container + $target.hasClass( c.cssNoSort ) || $target.parents( '.' + c.cssNoSort ).length > 0 || + // elements within a button + $target.parents( 'button' ).length > 0 ) { + return !c.cancelSelection; + } + if ( c.delayInit && ts.isEmptyObject( c.cache ) ) { + ts.buildCache( c ); + } + // jQuery v1.2.6 doesn't have closest() + $cell = $.fn.closest ? $( this ).closest( 'th, td' ) : + /TH|TD/.test( this.nodeName ) ? $( this ) : $( this ).parents( 'th, td' ); + // reference original table headers and find the same cell + // don't use $headers or IE8 throws an error - see #987 + temp = $headers.index( $cell ); + c.last.clickedIndex = ( temp < 0 ) ? $cell.attr( 'data-column' ) : temp; + // use column index if $headers is undefined + cell = c.$headers[ c.last.clickedIndex ]; + if ( cell && !cell.sortDisabled ) { + ts.initSort( c, cell, e ); + } + }); + if ( c.cancelSelection ) { + // cancel selection + $headers + .attr( 'unselectable', 'on' ) + .bind( 'selectstart', false ) + .css({ + 'user-select' : 'none', + 'MozUserSelect' : 'none' // not needed for jQuery 1.8+ + }); + } + }, + + buildHeaders : function( c ) { + var $temp, icon, timer, indx; + c.headerList = []; + c.headerContent = []; + c.sortVars = []; + if ( c.debug ) { + timer = new Date(); + } + // children tr in tfoot - see issue #196 & #547 + c.columns = ts.computeColumnIndex( c.$table.children( 'thead, tfoot' ).children( 'tr' ) ); + // add icon if cssIcon option exists + icon = c.cssIcon ? + '' : + ''; + // redefine c.$headers here in case of an updateAll that replaces or adds an entire header cell - see #683 + c.$headers = $( $.map( c.$table.find( c.selectorHeaders ), function( elem, index ) { + var configHeaders, header, column, template, tmp, + $elem = $( elem ); + // ignore cell (don't add it to c.$headers) if row has ignoreRow class + if ( $elem.parent().hasClass( c.cssIgnoreRow ) ) { return; } + // make sure to get header cell & not column indexed cell + configHeaders = ts.getColumnData( c.table, c.headers, index, true ); + // save original header content + c.headerContent[ index ] = $elem.html(); + // if headerTemplate is empty, don't reformat the header cell + if ( c.headerTemplate !== '' && !$elem.find( '.' + ts.css.headerIn ).length ) { + // set up header template + template = c.headerTemplate + .replace( ts.regex.templateContent, $elem.html() ) + .replace( ts.regex.templateIcon, $elem.find( '.' + ts.css.icon ).length ? '' : icon ); + if ( c.onRenderTemplate ) { + header = c.onRenderTemplate.apply( $elem, [ index, template ] ); + // only change t if something is returned + if ( header && typeof header === 'string' ) { + template = header; + } + } + $elem.html( '
    ' + template + '
    ' ); // faster than wrapInner + } + if ( c.onRenderHeader ) { + c.onRenderHeader.apply( $elem, [ index, c, c.$table ] ); + } + column = parseInt( $elem.attr( 'data-column' ), 10 ); + elem.column = column; + tmp = ts.getData( $elem, configHeaders, 'sortInitialOrder' ) || c.sortInitialOrder; + // this may get updated numerous times if there are multiple rows + c.sortVars[ column ] = { + count : -1, // set to -1 because clicking on the header automatically adds one + order: ts.formatSortingOrder( tmp ) ? + [ 1, 0, 2 ] : // desc, asc, unsorted + [ 0, 1, 2 ], // asc, desc, unsorted + lockedOrder : false + }; + tmp = ts.getData( $elem, configHeaders, 'lockedOrder' ) || false; + if ( typeof tmp !== 'undefined' && tmp !== false ) { + c.sortVars[ column ].lockedOrder = true; + c.sortVars[ column ].order = ts.formatSortingOrder( tmp ) ? [ 1, 1, 1 ] : [ 0, 0, 0 ]; + } + // add cell to headerList + c.headerList[ index ] = elem; + // add to parent in case there are multiple rows + $elem + .addClass( ts.css.header + ' ' + c.cssHeader ) + .parent() + .addClass( ts.css.headerRow + ' ' + c.cssHeaderRow ) + .attr( 'role', 'row' ); + // allow keyboard cursor to focus on element + if ( c.tabIndex ) { + $elem.attr( 'tabindex', 0 ); + } + return elem; + }) ); + // cache headers per column + c.$headerIndexed = []; + for ( indx = 0; indx < c.columns; indx++ ) { + // colspan in header making a column undefined + if ( ts.isEmptyObject( c.sortVars[ indx ] ) ) { + c.sortVars[ indx ] = {}; + } + $temp = c.$headers.filter( '[data-column="' + indx + '"]' ); + // target sortable column cells, unless there are none, then use non-sortable cells + // .last() added in jQuery 1.4; use .filter(':last') to maintain compatibility with jQuery v1.2.6 + c.$headerIndexed[ indx ] = $temp.length ? + $temp.not( '.sorter-false' ).length ? + $temp.not( '.sorter-false' ).filter( ':last' ) : + $temp.filter( ':last' ) : + $(); + } + c.$table.find( c.selectorHeaders ).attr({ + scope: 'col', + role : 'columnheader' + }); + // enable/disable sorting + ts.updateHeader( c ); + if ( c.debug ) { + console.log( 'Built headers:' + ts.benchmark( timer ) ); + console.log( c.$headers ); + } + }, + + // Use it to add a set of methods to table.config which will be available for all tables. + // This should be done before table initialization + addInstanceMethods : function( methods ) { + $.extend( ts.instanceMethods, methods ); + }, + + /* + █████▄ ▄████▄ █████▄ ▄█████ ██████ █████▄ ▄█████ + ██▄▄██ ██▄▄██ ██▄▄██ ▀█▄ ██▄▄ ██▄▄██ ▀█▄ + ██▀▀▀ ██▀▀██ ██▀██ ▀█▄ ██▀▀ ██▀██ ▀█▄ + ██ ██ ██ ██ ██ █████▀ ██████ ██ ██ █████▀ + */ + setupParsers : function( c, $tbodies ) { + var rows, list, span, max, colIndex, indx, header, configHeaders, + noParser, parser, extractor, time, tbody, len, + table = c.table, + tbodyIndex = 0, + debug = {}; + // update table bodies in case we start with an empty table + c.$tbodies = c.$table.children( 'tbody:not(.' + c.cssInfoBlock + ')' ); + tbody = typeof $tbodies === 'undefined' ? c.$tbodies : $tbodies; + len = tbody.length; + if ( len === 0 ) { + return c.debug ? console.warn( 'Warning: *Empty table!* Not building a parser cache' ) : ''; + } else if ( c.debug ) { + time = new Date(); + console[ console.group ? 'group' : 'log' ]( 'Detecting parsers for each column' ); + } + list = { + extractors: [], + parsers: [] + }; + while ( tbodyIndex < len ) { + rows = tbody[ tbodyIndex ].rows; + if ( rows.length ) { + colIndex = 0; + max = c.columns; + for ( indx = 0; indx < max; indx++ ) { + header = c.$headerIndexed[ colIndex ]; + if ( header && header.length ) { + // get column indexed table cell + configHeaders = ts.getColumnData( table, c.headers, colIndex ); + // get column parser/extractor + extractor = ts.getParserById( ts.getData( header, configHeaders, 'extractor' ) ); + parser = ts.getParserById( ts.getData( header, configHeaders, 'sorter' ) ); + noParser = ts.getData( header, configHeaders, 'parser' ) === 'false'; + // empty cells behaviour - keeping emptyToBottom for backwards compatibility + c.empties[colIndex] = ( + ts.getData( header, configHeaders, 'empty' ) || + c.emptyTo || ( c.emptyToBottom ? 'bottom' : 'top' ) ).toLowerCase(); + // text strings behaviour in numerical sorts + c.strings[colIndex] = ( + ts.getData( header, configHeaders, 'string' ) || + c.stringTo || + 'max' ).toLowerCase(); + if ( noParser ) { + parser = ts.getParserById( 'no-parser' ); + } + if ( !extractor ) { + // For now, maybe detect someday + extractor = false; + } + if ( !parser ) { + parser = ts.detectParserForColumn( c, rows, -1, colIndex ); + } + if ( c.debug ) { + debug[ '(' + colIndex + ') ' + header.text() ] = { + parser : parser.id, + extractor : extractor ? extractor.id : 'none', + string : c.strings[ colIndex ], + empty : c.empties[ colIndex ] + }; + } + list.parsers[ colIndex ] = parser; + list.extractors[ colIndex ] = extractor; + span = header[ 0 ].colSpan - 1; + if ( span > 0 ) { + colIndex += span; + max += span; + } + } + colIndex++; + } + } + tbodyIndex += ( list.parsers.length ) ? len : 1; + } + if ( c.debug ) { + if ( !ts.isEmptyObject( debug ) ) { + console[ console.table ? 'table' : 'log' ]( debug ); + } else { + console.warn( ' No parsers detected!' ); + } + console.log( 'Completed detecting parsers' + ts.benchmark( time ) ); + if ( console.groupEnd ) { console.groupEnd(); } + } + c.parsers = list.parsers; + c.extractors = list.extractors; + }, + + addParser : function( parser ) { + var indx, + len = ts.parsers.length, + add = true; + for ( indx = 0; indx < len; indx++ ) { + if ( ts.parsers[ indx ].id.toLowerCase() === parser.id.toLowerCase() ) { + add = false; + } + } + if ( add ) { + ts.parsers.push( parser ); + } + }, + + getParserById : function( name ) { + /*jshint eqeqeq:false */ + if ( name == 'false' ) { return false; } + var indx, + len = ts.parsers.length; + for ( indx = 0; indx < len; indx++ ) { + if ( ts.parsers[ indx ].id.toLowerCase() === ( name.toString() ).toLowerCase() ) { + return ts.parsers[ indx ]; + } + } + return false; + }, + + detectParserForColumn : function( c, rows, rowIndex, cellIndex ) { + var cur, $node, row, + indx = ts.parsers.length, + node = false, + nodeValue = '', + keepLooking = true; + while ( nodeValue === '' && keepLooking ) { + rowIndex++; + row = rows[ rowIndex ]; + // stop looking after 50 empty rows + if ( row && rowIndex < 50 ) { + if ( row.className.indexOf( ts.cssIgnoreRow ) < 0 ) { + node = rows[ rowIndex ].cells[ cellIndex ]; + nodeValue = ts.getElementText( c, node, cellIndex ); + $node = $( node ); + if ( c.debug ) { + console.log( 'Checking if value was empty on row ' + rowIndex + ', column: ' + + cellIndex + ': "' + nodeValue + '"' ); + } + } + } else { + keepLooking = false; + } + } + while ( --indx >= 0 ) { + cur = ts.parsers[ indx ]; + // ignore the default text parser because it will always be true + if ( cur && cur.id !== 'text' && cur.is && cur.is( nodeValue, c.table, node, $node ) ) { + return cur; + } + } + // nothing found, return the generic parser (text) + return ts.getParserById( 'text' ); + }, + + getElementText : function( c, node, cellIndex ) { + if ( !node ) { return ''; } + var tmp, + extract = c.textExtraction || '', + // node could be a jquery object + // http://jsperf.com/jquery-vs-instanceof-jquery/2 + $node = node.jquery ? node : $( node ); + if ( typeof extract === 'string' ) { + // check data-attribute first when set to 'basic'; don't use node.innerText - it's really slow! + // http://www.kellegous.com/j/2013/02/27/innertext-vs-textcontent/ + if ( extract === 'basic' && typeof ( tmp = $node.attr( c.textAttribute ) ) !== 'undefined' ) { + return $.trim( tmp ); + } + return $.trim( node.textContent || $node.text() ); + } else { + if ( typeof extract === 'function' ) { + return $.trim( extract( $node[ 0 ], c.table, cellIndex ) ); + } else if ( typeof ( tmp = ts.getColumnData( c.table, extract, cellIndex ) ) === 'function' ) { + return $.trim( tmp( $node[ 0 ], c.table, cellIndex ) ); + } + } + // fallback + return $.trim( $node[ 0 ].textContent || $node.text() ); + }, + + // centralized function to extract/parse cell contents + getParsedText : function( c, cell, colIndex, txt ) { + if ( typeof txt === 'undefined' ) { + txt = ts.getElementText( c, cell, colIndex ); + } + // if no parser, make sure to return the txt + var val = '' + txt, + parser = c.parsers[ colIndex ], + extractor = c.extractors[ colIndex ]; + if ( parser ) { + // do extract before parsing, if there is one + if ( extractor && typeof extractor.format === 'function' ) { + txt = extractor.format( txt, c.table, cell, colIndex ); + } + // allow parsing if the string is empty, previously parsing would change it to zero, + // in case the parser needs to extract data from the table cell attributes + val = parser.id === 'no-parser' ? '' : + // make sure txt is a string (extractor may have converted it) + parser.format( '' + txt, c.table, cell, colIndex ); + if ( c.ignoreCase && typeof val === 'string' ) { + val = val.toLowerCase(); + } + } + return val; + }, + + /* + ▄████▄ ▄████▄ ▄████▄ ██ ██ ██████ + ██ ▀▀ ██▄▄██ ██ ▀▀ ██▄▄██ ██▄▄ + ██ ▄▄ ██▀▀██ ██ ▄▄ ██▀▀██ ██▀▀ + ▀████▀ ██ ██ ▀████▀ ██ ██ ██████ + */ + buildCache : function( c, callback, $tbodies ) { + var cache, val, txt, rowIndex, colIndex, tbodyIndex, $tbody, $row, + cols, $cells, cell, cacheTime, totalRows, rowData, prevRowData, + colMax, span, cacheIndex, max, len, + table = c.table, + parsers = c.parsers; + // update tbody variable + c.$tbodies = c.$table.children( 'tbody:not(.' + c.cssInfoBlock + ')' ); + $tbody = typeof $tbodies === 'undefined' ? c.$tbodies : $tbodies, + c.cache = {}; + c.totalRows = 0; + // if no parsers found, return - it's an empty table. + if ( !parsers ) { + return c.debug ? console.warn( 'Warning: *Empty table!* Not building a cache' ) : ''; + } + if ( c.debug ) { + cacheTime = new Date(); + } + // processing icon + if ( c.showProcessing ) { + ts.isProcessing( table, true ); + } + for ( tbodyIndex = 0; tbodyIndex < $tbody.length; tbodyIndex++ ) { + colMax = []; // column max value per tbody + cache = c.cache[ tbodyIndex ] = { + normalized: [] // array of normalized row data; last entry contains 'rowData' above + // colMax: # // added at the end + }; + + totalRows = ( $tbody[ tbodyIndex ] && $tbody[ tbodyIndex ].rows.length ) || 0; + for ( rowIndex = 0; rowIndex < totalRows; ++rowIndex ) { + rowData = { + // order: original row order # + // $row : jQuery Object[] + child: [], // child row text (filter widget) + raw: [] // original row text + }; + /** Add the table data to main data array */ + $row = $( $tbody[ tbodyIndex ].rows[ rowIndex ] ); + cols = []; + // if this is a child row, add it to the last row's children and continue to the next row + // ignore child row class, if it is the first row + if ( $row.hasClass( c.cssChildRow ) && rowIndex !== 0 ) { + len = cache.normalized.length - 1; + prevRowData = cache.normalized[ len ][ c.columns ]; + prevRowData.$row = prevRowData.$row.add( $row ); + // add 'hasChild' class name to parent row + if ( !$row.prev().hasClass( c.cssChildRow ) ) { + $row.prev().addClass( ts.css.cssHasChild ); + } + // save child row content (un-parsed!) + $cells = $row.children( 'th, td' ); + len = prevRowData.child.length; + prevRowData.child[ len ] = []; + // child row content does not account for colspans/rowspans; so indexing may be off + cacheIndex = 0; + max = c.columns; + for ( colIndex = 0; colIndex < max; colIndex++ ) { + cell = $cells[ colIndex ]; + if ( cell ) { + prevRowData.child[ len ][ colIndex ] = ts.getParsedText( c, cell, colIndex ); + span = $cells[ colIndex ].colSpan - 1; + if ( span > 0 ) { + cacheIndex += span; + max += span; + } + } + cacheIndex++; + } + // go to the next for loop + continue; + } + rowData.$row = $row; + rowData.order = rowIndex; // add original row position to rowCache + cacheIndex = 0; + max = c.columns; + for ( colIndex = 0; colIndex < max; ++colIndex ) { + cell = $row[ 0 ].cells[ colIndex ]; + if ( typeof parsers[ cacheIndex ] === 'undefined' ) { + if ( c.debug ) { + console.warn( 'No parser found for column ' + colIndex + '; cell:', cell, 'does it have a header?' ); + } + } else if ( cell ) { + val = ts.getElementText( c, cell, cacheIndex ); + rowData.raw[ cacheIndex ] = val; // save original row text + txt = ts.getParsedText( c, cell, cacheIndex, val ); + cols[ cacheIndex ] = txt; + if ( ( parsers[ cacheIndex ].type || '' ).toLowerCase() === 'numeric' ) { + // determine column max value (ignore sign) + colMax[ cacheIndex ] = Math.max( Math.abs( txt ) || 0, colMax[ cacheIndex ] || 0 ); + } + // allow colSpan in tbody + span = cell.colSpan - 1; + if ( span > 0 ) { + cacheIndex += span; + max += span; + } + } + cacheIndex++; + } + // ensure rowData is always in the same location (after the last column) + cols[ c.columns ] = rowData; + cache.normalized.push( cols ); + } + cache.colMax = colMax; + // total up rows, not including child rows + c.totalRows += cache.normalized.length; + + } + if ( c.showProcessing ) { + ts.isProcessing( table ); // remove processing icon + } + if ( c.debug ) { + console.log( 'Building cache for ' + totalRows + ' rows' + ts.benchmark( cacheTime ) ); + } + if ( $.isFunction( callback ) ) { + callback( table ); + } + }, + + getColumnText : function( table, column, callback, rowFilter ) { + table = $( table )[0]; + var tbodyIndex, rowIndex, cache, row, tbodyLen, rowLen, raw, parsed, $cell, result, + hasCallback = typeof callback === 'function', + allColumns = column === 'all', + data = { raw : [], parsed: [], $cell: [] }, + c = table.config; + if ( ts.isEmptyObject( c ) ) { + if ( c.debug ) { + console.warn( 'No cache found - aborting getColumnText function!' ); + } + } else { + tbodyLen = c.$tbodies.length; + for ( tbodyIndex = 0; tbodyIndex < tbodyLen; tbodyIndex++ ) { + cache = c.cache[ tbodyIndex ].normalized; + rowLen = cache.length; + for ( rowIndex = 0; rowIndex < rowLen; rowIndex++ ) { + row = cache[ rowIndex ]; + if ( rowFilter && !row[ c.columns ].$row.is( rowFilter ) ) { + continue; + } + result = true; + parsed = ( allColumns ) ? row.slice( 0, c.columns ) : row[ column ]; + row = row[ c.columns ]; + raw = ( allColumns ) ? row.raw : row.raw[ column ]; + $cell = ( allColumns ) ? row.$row.children() : row.$row.children().eq( column ); + if ( hasCallback ) { + result = callback({ + tbodyIndex : tbodyIndex, + rowIndex : rowIndex, + parsed : parsed, + raw : raw, + $row : row.$row, + $cell : $cell + }); + } + if ( result !== false ) { + data.parsed.push( parsed ); + data.raw.push( raw ); + data.$cell.push( $cell ); + } + } + } + // return everything + return data; + } + }, + + /* + ██ ██ █████▄ █████▄ ▄████▄ ██████ ██████ + ██ ██ ██▄▄██ ██ ██ ██▄▄██ ██ ██▄▄ + ██ ██ ██▀▀▀ ██ ██ ██▀▀██ ██ ██▀▀ + ▀████▀ ██ █████▀ ██ ██ ██ ██████ + */ + setHeadersCss : function( c ) { + var $sorted, indx, column, + list = c.sortList, + len = list.length, + none = ts.css.sortNone + ' ' + c.cssNone, + css = [ ts.css.sortAsc + ' ' + c.cssAsc, ts.css.sortDesc + ' ' + c.cssDesc ], + cssIcon = [ c.cssIconAsc, c.cssIconDesc, c.cssIconNone ], + aria = [ 'ascending', 'descending' ], + // find the footer + $headers = c.$table + .find( 'tfoot tr' ) + .children() + .add( $( c.namespace + '_extra_headers' ) ) + .removeClass( css.join( ' ' ) ); + // remove all header information + c.$headers + .removeClass( css.join( ' ' ) ) + .addClass( none ) + .attr( 'aria-sort', 'none' ) + .find( '.' + ts.css.icon ) + .removeClass( cssIcon.join( ' ' ) ) + .addClass( cssIcon[ 2 ] ); + for ( indx = 0; indx < len; indx++ ) { + // direction = 2 means reset! + if ( list[ indx ][ 1 ] !== 2 ) { + // multicolumn sorting updating - see #1005 + // .not(function(){}) needs jQuery 1.4 + // filter(function(i, el){}) <- el is undefined in jQuery v1.2.6 + $sorted = c.$headers.filter( function( i ) { + // only include headers that are in the sortList (this includes colspans) + var include = true, + $el = c.$headers.eq( i ), + col = parseInt( $el.attr( 'data-column' ), 10 ), + end = col + c.$headers[ i ].colSpan; + for ( ; col < end; col++ ) { + include = include ? ts.isValueInArray( col, c.sortList ) > -1 : false; + } + return include; + }); + + // choose the :last in case there are nested columns + $sorted = $sorted + .not( '.sorter-false' ) + .filter( '[data-column="' + list[ indx ][ 0 ] + '"]' + ( len === 1 ? ':last' : '' ) ); + if ( $sorted.length ) { + for ( column = 0; column < $sorted.length; column++ ) { + if ( !$sorted[ column ].sortDisabled ) { + $sorted + .eq( column ) + .removeClass( none ) + .addClass( css[ list[ indx ][ 1 ] ] ) + .attr( 'aria-sort', aria[ list[ indx ][ 1 ] ] ) + .find( '.' + ts.css.icon ) + .removeClass( cssIcon[ 2 ] ) + .addClass( cssIcon[ list[ indx ][ 1 ] ] ); + } + } + // add sorted class to footer & extra headers, if they exist + if ( $headers.length ) { + $headers + .filter( '[data-column="' + list[ indx ][ 0 ] + '"]' ) + .removeClass( none ) + .addClass( css[ list[ indx ][ 1 ] ] ); + } + } + } + } + // add verbose aria labels + len = c.$headers.length; + for ( indx = 0; indx < len; indx++ ) { + ts.setColumnAriaLabel( c, c.$headers.eq( indx ) ); + } + }, + + // nextSort (optional), lets you disable next sort text + setColumnAriaLabel : function( c, $header, nextSort ) { + if ( $header.length ) { + var column = parseInt( $header.attr( 'data-column' ), 10 ), + tmp = $header.hasClass( ts.css.sortAsc ) ? + 'sortAsc' : + $header.hasClass( ts.css.sortDesc ) ? 'sortDesc' : 'sortNone', + txt = $.trim( $header.text() ) + ': ' + ts.language[ tmp ]; + if ( $header.hasClass( 'sorter-false' ) || nextSort === false ) { + txt += ts.language.sortDisabled; + } else { + nextSort = c.sortVars[ column ].order[ ( c.sortVars[ column ].count + 1 ) % ( c.sortReset ? 3 : 2 ) ]; + // if nextSort + txt += ts.language[ nextSort === 0 ? 'nextAsc' : nextSort === 1 ? 'nextDesc' : 'nextNone' ]; + } + $header.attr( 'aria-label', txt ); + } + }, + + updateHeader : function( c ) { + var index, isDisabled, $header, col, + table = c.table, + len = c.$headers.length; + for ( index = 0; index < len; index++ ) { + $header = c.$headers.eq( index ); + col = ts.getColumnData( table, c.headers, index, true ); + // add 'sorter-false' class if 'parser-false' is set + isDisabled = ts.getData( $header, col, 'sorter' ) === 'false' || ts.getData( $header, col, 'parser' ) === 'false'; + ts.setColumnSort( c, $header, isDisabled ); + } + }, + + setColumnSort : function( c, $header, isDisabled ) { + var id = c.table.id; + $header[ 0 ].sortDisabled = isDisabled; + $header[ isDisabled ? 'addClass' : 'removeClass' ]( 'sorter-false' ) + .attr( 'aria-disabled', '' + isDisabled ); + // disable tab index on disabled cells + if ( c.tabIndex ) { + if ( isDisabled ) { + $header.removeAttr( 'tabindex' ); + } else { + $header.attr( 'tabindex', '0' ); + } + } + // aria-controls - requires table ID + if ( id ) { + if ( isDisabled ) { + $header.removeAttr( 'aria-controls' ); + } else { + $header.attr( 'aria-controls', id ); + } + } + }, + + updateHeaderSortCount : function( c, list ) { + var col, dir, group, indx, primary, temp, val, order, + sortList = list || c.sortList, + len = sortList.length; + c.sortList = []; + for ( indx = 0; indx < len; indx++ ) { + val = sortList[ indx ]; + // ensure all sortList values are numeric - fixes #127 + col = parseInt( val[ 0 ], 10 ); + // prevents error if sorton array is wrong + if ( col < c.columns ) { + order = c.sortVars[ col ].order; + dir = ( '' + val[ 1 ] ).match( /^(1|d|s|o|n)/ ); + dir = dir ? dir[ 0 ] : ''; + // 0/(a)sc (default), 1/(d)esc, (s)ame, (o)pposite, (n)ext + switch ( dir ) { + case '1' : case 'd' : // descending + dir = 1; + break; + case 's' : // same direction (as primary column) + // if primary sort is set to 's', make it ascending + dir = primary || 0; + break; + case 'o' : + temp = order[ ( primary || 0 ) % ( c.sortReset ? 3 : 2 ) ]; + // opposite of primary column; but resets if primary resets + dir = temp === 0 ? 1 : temp === 1 ? 0 : 2; + break; + case 'n' : + dir = order[ ( ++c.sortVars[ col ].count ) % ( c.sortReset ? 3 : 2 ) ]; + break; + default : // ascending + dir = 0; + break; + } + primary = indx === 0 ? dir : primary; + group = [ col, parseInt( dir, 10 ) || 0 ]; + c.sortList.push( group ); + dir = $.inArray( group[ 1 ], order ); // fixes issue #167 + c.sortVars[ col ].count = dir >= 0 ? dir : group[ 1 ] % ( c.sortReset ? 3 : 2 ); + } + } + }, + + updateAll : function( c, resort, callback ) { + var table = c.table; + table.isUpdating = true; + ts.refreshWidgets( table, true, true ); + ts.buildHeaders( c ); + ts.bindEvents( table, c.$headers, true ); + ts.bindMethods( c ); + ts.commonUpdate( c, resort, callback ); + }, + + update : function( c, resort, callback ) { + var table = c.table; + table.isUpdating = true; + // update sorting (if enabled/disabled) + ts.updateHeader( c ); + ts.commonUpdate( c, resort, callback ); + }, + + // simple header update - see #989 + updateHeaders : function( c, callback ) { + c.table.isUpdating = true; + ts.buildHeaders( c ); + ts.bindEvents( c.table, c.$headers, true ); + ts.resortComplete( c, callback ); + }, + + updateCell : function( c, cell, resort, callback ) { + c.table.isUpdating = true; + c.$table.find( c.selectorRemove ).remove(); + // get position from the dom + var tmp, indx, row, icell, cache, len, + $tbodies = c.$tbodies, + $cell = $( cell ), + // update cache - format: function( s, table, cell, cellIndex ) + // no closest in jQuery v1.2.6 + tbodyIndex = $tbodies + .index( $.fn.closest ? $cell.closest( 'tbody' ) : $cell.parents( 'tbody' ).filter( ':first' ) ), + tbcache = c.cache[ tbodyIndex ], + $row = $.fn.closest ? $cell.closest( 'tr' ) : $cell.parents( 'tr' ).filter( ':first' ); + cell = $cell[ 0 ]; // in case cell is a jQuery object + // tbody may not exist if update is initialized while tbody is removed for processing + if ( $tbodies.length && tbodyIndex >= 0 ) { + row = $tbodies.eq( tbodyIndex ).find( 'tr' ).index( $row ); + cache = tbcache.normalized[ row ]; + len = $row[ 0 ].cells.length; + if ( len !== c.columns ) { + // colspan in here somewhere! + icell = 0; + tmp = false; + for ( indx = 0; indx < len; indx++ ) { + if ( !tmp && $row[ 0 ].cells[ indx ] !== cell ) { + icell += $row[ 0 ].cells[ indx ].colSpan; + } else { + tmp = true; + } + } + } else { + icell = $cell.index(); + } + tmp = ts.getElementText( c, cell, icell ); // raw + cache[ c.columns ].raw[ icell ] = tmp; + tmp = ts.getParsedText( c, cell, icell, tmp ); + cache[ icell ] = tmp; // parsed + cache[ c.columns ].$row = $row; + if ( ( c.parsers[ icell ].type || '' ).toLowerCase() === 'numeric' ) { + // update column max value (ignore sign) + tbcache.colMax[ icell ] = Math.max( Math.abs( tmp ) || 0, tbcache.colMax[ icell ] || 0 ); + } + tmp = resort !== 'undefined' ? resort : c.resort; + if ( tmp !== false ) { + // widgets will be reapplied + ts.checkResort( c, tmp, callback ); + } else { + // don't reapply widgets is resort is false, just in case it causes + // problems with element focus + ts.resortComplete( c, callback ); + } + } + }, + + addRows : function( c, $row, resort, callback ) { + var txt, val, tbodyIndex, rowIndex, rows, cellIndex, len, + cacheIndex, rowData, cells, cell, span, + // allow passing a row string if only one non-info tbody exists in the table + valid = typeof $row === 'string' && c.$tbodies.length === 1 && / 0 ) { + cacheIndex += span; + } + cacheIndex++; + } + // add the row data to the end + cells[ c.columns ] = rowData; + // update cache + c.cache[ tbodyIndex ].normalized.push( cells ); + } + // resort using current settings + ts.checkResort( c, resort, callback ); + } + }, + + updateCache : function( c, callback, $tbodies ) { + // rebuild parsers + if ( !( c.parsers && c.parsers.length ) ) { + ts.setupParsers( c, $tbodies ); + } + // rebuild the cache map + ts.buildCache( c, callback, $tbodies ); + }, + + // init flag (true) used by pager plugin to prevent widget application + // renamed from appendToTable + appendCache : function( c, init ) { + var parsed, totalRows, $tbody, $curTbody, rowIndex, tbodyIndex, appendTime, + table = c.table, + wo = c.widgetOptions, + $tbodies = c.$tbodies, + rows = [], + cache = c.cache; + // empty table - fixes #206/#346 + if ( ts.isEmptyObject( cache ) ) { + // run pager appender in case the table was just emptied + return c.appender ? c.appender( table, rows ) : + table.isUpdating ? c.$table.trigger( 'updateComplete', table ) : ''; // Fixes #532 + } + if ( c.debug ) { + appendTime = new Date(); + } + for ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) { + $tbody = $tbodies.eq( tbodyIndex ); + if ( $tbody.length ) { + // detach tbody for manipulation + $curTbody = ts.processTbody( table, $tbody, true ); + parsed = cache[ tbodyIndex ].normalized; + totalRows = parsed.length; + for ( rowIndex = 0; rowIndex < totalRows; rowIndex++ ) { + rows.push( parsed[ rowIndex ][ c.columns ].$row ); + // removeRows used by the pager plugin; don't render if using ajax - fixes #411 + if ( !c.appender || ( c.pager && ( !c.pager.removeRows || !wo.pager_removeRows ) && !c.pager.ajax ) ) { + $curTbody.append( parsed[ rowIndex ][ c.columns ].$row ); + } + } + // restore tbody + ts.processTbody( table, $curTbody, false ); + } + } + if ( c.appender ) { + c.appender( table, rows ); + } + if ( c.debug ) { + console.log( 'Rebuilt table' + ts.benchmark( appendTime ) ); + } + // apply table widgets; but not before ajax completes + if ( !init && !c.appender ) { + ts.applyWidget( table ); + } + if ( table.isUpdating ) { + c.$table.trigger( 'updateComplete', table ); + } + }, + + commonUpdate : function( c, resort, callback ) { + // remove rows/elements before update + c.$table.find( c.selectorRemove ).remove(); + // rebuild parsers + ts.setupParsers( c ); + // rebuild the cache map + ts.buildCache( c ); + ts.checkResort( c, resort, callback ); + }, + + /* + ▄█████ ▄████▄ █████▄ ██████ ██ █████▄ ▄████▄ + ▀█▄ ██ ██ ██▄▄██ ██ ██ ██ ██ ██ ▄▄▄ + ▀█▄ ██ ██ ██▀██ ██ ██ ██ ██ ██ ▀██ + █████▀ ▀████▀ ██ ██ ██ ██ ██ ██ ▀████▀ + */ + initSort : function( c, cell, event ) { + if ( c.table.isUpdating ) { + // let any updates complete before initializing a sort + return setTimeout( function(){ + ts.initSort( c, cell, event ); + }, 50 ); + } + var arry, indx, headerIndx, dir, temp, tmp, $header, + notMultiSort = !event[ c.sortMultiSortKey ], + table = c.table, + len = c.$headers.length, + // get current column index + col = parseInt( $( cell ).attr( 'data-column' ), 10 ), + order = c.sortVars[ col ].order; + + // Only call sortStart if sorting is enabled + c.$table.trigger( 'sortStart', table ); + // get current column sort order + c.sortVars[ col ].count = + event[ c.sortResetKey ] ? 2 : ( c.sortVars[ col ].count + 1 ) % ( c.sortReset ? 3 : 2 ); + // reset all sorts on non-current column - issue #30 + if ( c.sortRestart ) { + for ( headerIndx = 0; headerIndx < len; headerIndx++ ) { + $header = c.$headers.eq( headerIndx ); + tmp = parseInt( $header.attr( 'data-column' ), 10 ); + // only reset counts on columns that weren't just clicked on and if not included in a multisort + if ( col !== tmp && ( notMultiSort || $header.hasClass( ts.css.sortNone ) ) ) { + c.sortVars[ tmp ].count = -1; + } + } + } + // user only wants to sort on one column + if ( notMultiSort ) { + // flush the sort list + c.sortList = []; + c.last.sortList = []; + if ( c.sortForce !== null ) { + arry = c.sortForce; + for ( indx = 0; indx < arry.length; indx++ ) { + if ( arry[ indx ][ 0 ] !== col ) { + c.sortList.push( arry[ indx ] ); + } + } + } + // add column to sort list + dir = order[ c.sortVars[ col ].count ]; + if ( dir < 2 ) { + c.sortList.push( [ col, dir ] ); + // add other columns if header spans across multiple + if ( cell.colSpan > 1 ) { + for ( indx = 1; indx < cell.colSpan; indx++ ) { + c.sortList.push( [ col + indx, dir ] ); + // update count on columns in colSpan + c.sortVars[ col + indx ].count = $.inArray( dir, order ); + } + } + } + // multi column sorting + } else { + // get rid of the sortAppend before adding more - fixes issue #115 & #523 + c.sortList = $.extend( [], c.last.sortList ); + + // the user has clicked on an already sorted column + if ( ts.isValueInArray( col, c.sortList ) >= 0 ) { + // reverse the sorting direction + for ( indx = 0; indx < c.sortList.length; indx++ ) { + tmp = c.sortList[ indx ]; + if ( tmp[ 0 ] === col ) { + // order.count seems to be incorrect when compared to cell.count + tmp[ 1 ] = order[ c.sortVars[ col ].count ]; + if ( tmp[1] === 2 ) { + c.sortList.splice( indx, 1 ); + c.sortVars[ col ].count = -1; + } + } + } + } else { + // add column to sort list array + dir = order[ c.sortVars[ col ].count ]; + if ( dir < 2 ) { + c.sortList.push( [ col, dir ] ); + // add other columns if header spans across multiple + if ( cell.colSpan > 1 ) { + for ( indx = 1; indx < cell.colSpan; indx++ ) { + c.sortList.push( [ col + indx, dir ] ); + // update count on columns in colSpan + c.sortVars[ col + indx ].count = $.inArray( dir, order ); + } + } + } + } + } + // save sort before applying sortAppend + c.last.sortList = $.extend( [], c.sortList ); + if ( c.sortList.length && c.sortAppend ) { + arry = $.isArray( c.sortAppend ) ? c.sortAppend : c.sortAppend[ c.sortList[ 0 ][ 0 ] ]; + if ( !ts.isEmptyObject( arry ) ) { + for ( indx = 0; indx < arry.length; indx++ ) { + if ( arry[ indx ][ 0 ] !== col && ts.isValueInArray( arry[ indx ][ 0 ], c.sortList ) < 0 ) { + dir = arry[ indx ][ 1 ]; + temp = ( '' + dir ).match( /^(a|d|s|o|n)/ ); + if ( temp ) { + tmp = c.sortList[ 0 ][ 1 ]; + switch ( temp[ 0 ] ) { + case 'd' : + dir = 1; + break; + case 's' : + dir = tmp; + break; + case 'o' : + dir = tmp === 0 ? 1 : 0; + break; + case 'n' : + dir = ( tmp + 1 ) % ( c.sortReset ? 3 : 2 ); + break; + default: + dir = 0; + break; + } + } + c.sortList.push( [ arry[ indx ][ 0 ], dir ] ); + } + } + } + } + // sortBegin event triggered immediately before the sort + c.$table.trigger( 'sortBegin', table ); + // setTimeout needed so the processing icon shows up + setTimeout( function() { + // set css for headers + ts.setHeadersCss( c ); + ts.multisort( c ); + ts.appendCache( c ); + c.$table.trigger( 'sortEnd', table ); + }, 1 ); + }, + + // sort multiple columns + multisort : function( c ) { /*jshint loopfunc:true */ + var tbodyIndex, sortTime, colMax, rows, + table = c.table, + dir = 0, + textSorter = c.textSorter || '', + sortList = c.sortList, + sortLen = sortList.length, + len = c.$tbodies.length; + if ( c.serverSideSorting || ts.isEmptyObject( c.cache ) ) { + // empty table - fixes #206/#346 + return; + } + if ( c.debug ) { sortTime = new Date(); } + for ( tbodyIndex = 0; tbodyIndex < len; tbodyIndex++ ) { + colMax = c.cache[ tbodyIndex ].colMax; + rows = c.cache[ tbodyIndex ].normalized; + + rows.sort( function( a, b ) { + var sortIndex, num, col, order, sort, x, y; + // rows is undefined here in IE, so don't use it! + for ( sortIndex = 0; sortIndex < sortLen; sortIndex++ ) { + col = sortList[ sortIndex ][ 0 ]; + order = sortList[ sortIndex ][ 1 ]; + // sort direction, true = asc, false = desc + dir = order === 0; + + if ( c.sortStable && a[ col ] === b[ col ] && sortLen === 1 ) { + return a[ c.columns ].order - b[ c.columns ].order; + } + + // fallback to natural sort since it is more robust + num = /n/i.test( ts.getSortType( c.parsers, col ) ); + if ( num && c.strings[ col ] ) { + // sort strings in numerical columns + if ( typeof ( ts.string[ c.strings[ col ] ] ) === 'boolean' ) { + num = ( dir ? 1 : -1 ) * ( ts.string[ c.strings[ col ] ] ? -1 : 1 ); + } else { + num = ( c.strings[ col ] ) ? ts.string[ c.strings[ col ] ] || 0 : 0; + } + // fall back to built-in numeric sort + // var sort = $.tablesorter['sort' + s]( a[col], b[col], dir, colMax[col], table ); + sort = c.numberSorter ? c.numberSorter( a[ col ], b[ col ], dir, colMax[ col ], table ) : + ts[ 'sortNumeric' + ( dir ? 'Asc' : 'Desc' ) ]( a[ col ], b[ col ], num, colMax[ col ], col, c ); + } else { + // set a & b depending on sort direction + x = dir ? a : b; + y = dir ? b : a; + // text sort function + if ( typeof textSorter === 'function' ) { + // custom OVERALL text sorter + sort = textSorter( x[ col ], y[ col ], dir, col, table ); + } else if ( typeof textSorter === 'object' && textSorter.hasOwnProperty( col ) ) { + // custom text sorter for a SPECIFIC COLUMN + sort = textSorter[ col ]( x[ col ], y[ col ], dir, col, table ); + } else { + // fall back to natural sort + sort = ts[ 'sortNatural' + ( dir ? 'Asc' : 'Desc' ) ]( a[ col ], b[ col ], col, c ); + } + } + if ( sort ) { return sort; } + } + return a[ c.columns ].order - b[ c.columns ].order; + }); + } + if ( c.debug ) { + console.log( 'Applying sort ' + sortList.toString() + ts.benchmark( sortTime ) ); + } + }, + + resortComplete : function( c, callback ) { + if ( c.table.isUpdating ) { + c.$table.trigger( 'updateComplete', c.table ); + } + if ( $.isFunction( callback ) ) { + callback( c.table ); + } + }, + + checkResort : function( c, resort, callback ) { + var sortList = $.isArray( resort ) ? resort : c.sortList, + // if no resort parameter is passed, fallback to config.resort (true by default) + resrt = typeof resort === 'undefined' ? c.resort : resort; + // don't try to resort if the table is still processing + // this will catch spamming of the updateCell method + if ( resrt !== false && !c.serverSideSorting && !c.table.isProcessing ) { + if ( sortList.length ) { + ts.sortOn( c, sortList, function() { + ts.resortComplete( c, callback ); + }, true ); + } else { + ts.sortReset( c, function() { + ts.resortComplete( c, callback ); + ts.applyWidget( c.table, false ); + } ); + } + } else { + ts.resortComplete( c, callback ); + ts.applyWidget( c.table, false ); + } + }, + + sortOn : function( c, list, callback, init ) { + var table = c.table; + c.$table.trigger( 'sortStart', table ); + // update header count index + ts.updateHeaderSortCount( c, list ); + // set css for headers + ts.setHeadersCss( c ); + // fixes #346 + if ( c.delayInit && ts.isEmptyObject( c.cache ) ) { + ts.buildCache( c ); + } + c.$table.trigger( 'sortBegin', table ); + // sort the table and append it to the dom + ts.multisort( c ); + ts.appendCache( c, init ); + c.$table.trigger( 'sortEnd', table ); + ts.applyWidget( table ); + if ( $.isFunction( callback ) ) { + callback( table ); + } + }, + + sortReset : function( c, callback ) { + c.sortList = []; + ts.setHeadersCss( c ); + ts.multisort( c ); + ts.appendCache( c ); + if ( $.isFunction( callback ) ) { + callback( c.table ); + } + }, + + getSortType : function( parsers, column ) { + return ( parsers && parsers[ column ] ) ? parsers[ column ].type || '' : ''; + }, + + formatSortingOrder : function( val ) { + // look for 'd' in 'desc' order; return true + return ( /^d/i.test( val ) || val === 1 ); + }, + + // Natural sort - https://github.com/overset/javascript-natural-sort (date sorting removed) + // this function will only accept strings, or you'll see 'TypeError: undefined is not a function' + // I could add a = a.toString(); b = b.toString(); but it'll slow down the sort overall + sortNatural : function( a, b ) { + if ( a === b ) { return 0; } + var aNum, bNum, aFloat, bFloat, indx, max, + regex = ts.regex; + // first try and sort Hex codes + if ( regex.hex.test( b ) ) { + aNum = parseInt( a.match( regex.hex ), 16 ); + bNum = parseInt( b.match( regex.hex ), 16 ); + if ( aNum < bNum ) { return -1; } + if ( aNum > bNum ) { return 1; } + } + // chunk/tokenize + aNum = a.replace( regex.chunk, '\\0$1\\0' ).replace( regex.chunks, '' ).split( '\\0' ); + bNum = b.replace( regex.chunk, '\\0$1\\0' ).replace( regex.chunks, '' ).split( '\\0' ); + max = Math.max( aNum.length, bNum.length ); + // natural sorting through split numeric strings and default strings + for ( indx = 0; indx < max; indx++ ) { + // find floats not starting with '0', string or 0 if not defined + aFloat = isNaN( aNum[ indx ] ) ? aNum[ indx ] || 0 : parseFloat( aNum[ indx ] ) || 0; + bFloat = isNaN( bNum[ indx ] ) ? bNum[ indx ] || 0 : parseFloat( bNum[ indx ] ) || 0; + // handle numeric vs string comparison - number < string - (Kyle Adams) + if ( isNaN( aFloat ) !== isNaN( bFloat ) ) { return isNaN( aFloat ) ? 1 : -1; } + // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' + if ( typeof aFloat !== typeof bFloat ) { + aFloat += ''; + bFloat += ''; + } + if ( aFloat < bFloat ) { return -1; } + if ( aFloat > bFloat ) { return 1; } + } + return 0; + }, + + sortNaturalAsc : function( a, b, col, c ) { + if ( a === b ) { return 0; } + var empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ]; + if ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : -empty || -1; } + if ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : empty || 1; } + return ts.sortNatural( a, b ); + }, + + sortNaturalDesc : function( a, b, col, c ) { + if ( a === b ) { return 0; } + var empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ]; + if ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : empty || 1; } + if ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : -empty || -1; } + return ts.sortNatural( b, a ); + }, + + // basic alphabetical sort + sortText : function( a, b ) { + return a > b ? 1 : ( a < b ? -1 : 0 ); + }, + + // return text string value by adding up ascii value + // so the text is somewhat sorted when using a digital sort + // this is NOT an alphanumeric sort + getTextValue : function( val, num, max ) { + if ( max ) { + // make sure the text value is greater than the max numerical value (max) + var indx, + len = val ? val.length : 0, + n = max + num; + for ( indx = 0; indx < len; indx++ ) { + n += val.charCodeAt( indx ); + } + return num * n; + } + return 0; + }, + + sortNumericAsc : function( a, b, num, max, col, c ) { + if ( a === b ) { return 0; } + var empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ]; + if ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : -empty || -1; } + if ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : empty || 1; } + if ( isNaN( a ) ) { a = ts.getTextValue( a, num, max ); } + if ( isNaN( b ) ) { b = ts.getTextValue( b, num, max ); } + return a - b; + }, + + sortNumericDesc : function( a, b, num, max, col, c ) { + if ( a === b ) { return 0; } + var empty = ts.string[ ( c.empties[ col ] || c.emptyTo ) ]; + if ( a === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? -1 : 1 ) : empty || 1; } + if ( b === '' && empty !== 0 ) { return typeof empty === 'boolean' ? ( empty ? 1 : -1 ) : -empty || -1; } + if ( isNaN( a ) ) { a = ts.getTextValue( a, num, max ); } + if ( isNaN( b ) ) { b = ts.getTextValue( b, num, max ); } + return b - a; + }, + + sortNumeric : function( a, b ) { + return a - b; + }, + + /* + ██ ██ ██ ██ █████▄ ▄████▄ ██████ ██████ ▄█████ + ██ ██ ██ ██ ██ ██ ██ ▄▄▄ ██▄▄ ██ ▀█▄ + ██ ██ ██ ██ ██ ██ ██ ▀██ ██▀▀ ██ ▀█▄ + ███████▀ ██ █████▀ ▀████▀ ██████ ██ █████▀ + */ + addWidget : function( widget ) { + ts.widgets.push( widget ); + }, + + hasWidget : function( $table, name ) { + $table = $( $table ); + return $table.length && $table[ 0 ].config && $table[ 0 ].config.widgetInit[ name ] || false; + }, + + getWidgetById : function( name ) { + var indx, widget, + len = ts.widgets.length; + for ( indx = 0; indx < len; indx++ ) { + widget = ts.widgets[ indx ]; + if ( widget && widget.id && widget.id.toLowerCase() === name.toLowerCase() ) { + return widget; + } + } + }, + + applyWidgetOptions : function( table ) { + var indx, widget, + c = table.config, + len = c.widgets.length; + if ( len ) { + for ( indx = 0; indx < len; indx++ ) { + widget = ts.getWidgetById( c.widgets[ indx ] ); + if ( widget && widget.options ) { + c.widgetOptions = $.extend( true, {}, widget.options, c.widgetOptions ); + } + } + } + }, + + addWidgetFromClass : function( table ) { + var len, indx, + c = table.config, + // look for widgets to apply from table class + // stop using \b otherwise this matches 'ui-widget-content' & adds 'content' widget + regex = '\\s' + c.widgetClass.replace( ts.regex.templateName, '([\\w-]+)' ) + '\\s', + widgetClass = new RegExp( regex, 'g' ), + // extract out the widget id from the table class (widget id's can include dashes) + widget = ( ' ' + c.table.className + ' ' ).match( widgetClass ); + if ( widget ) { + len = widget.length; + for ( indx = 0; indx < len; indx++ ) { + c.widgets.push( widget[ indx ].replace( widgetClass, '$1' ) ); + } + } + }, + + applyWidget : function( table, init, callback ) { + table = $( table )[ 0 ]; // in case this is called externally + var indx, len, names, widget, name, applied, time, time2, + c = table.config, + widgets = []; + // prevent numerous consecutive widget applications + if ( init !== false && table.hasInitialized && ( table.isApplyingWidgets || table.isUpdating ) ) { + return; + } + if ( c.debug ) { time = new Date(); } + ts.addWidgetFromClass( table ); + // prevent "tablesorter-ready" from firing multiple times in a row + clearTimeout( c.timerReady ); + if ( c.widgets.length ) { + table.isApplyingWidgets = true; + // ensure unique widget ids + c.widgets = $.grep( c.widgets, function( val, index ) { + return $.inArray( val, c.widgets ) === index; + }); + names = c.widgets || []; + len = names.length; + // build widget array & add priority as needed + for ( indx = 0; indx < len; indx++ ) { + widget = ts.getWidgetById( names[ indx ] ); + if ( widget && widget.id ) { + // set priority to 10 if not defined + if ( !widget.priority ) { widget.priority = 10; } + widgets[ indx ] = widget; + } + } + // sort widgets by priority + widgets.sort( function( a, b ) { + return a.priority < b.priority ? -1 : a.priority === b.priority ? 0 : 1; + }); + // add/update selected widgets + len = widgets.length; + if ( c.debug ) { + console[ console.group ? 'group' : 'log' ]( 'Start ' + ( init ? 'initializing' : 'applying' ) + ' widgets' ); + } + for ( indx = 0; indx < len; indx++ ) { + widget = widgets[ indx ]; + if ( widget ) { + name = widget.id; + applied = false; + if ( c.debug ) { time2 = new Date(); } + + if ( init || !( c.widgetInit[ name ] ) ) { + // set init flag first to prevent calling init more than once (e.g. pager) + c.widgetInit[ name ] = true; + if ( table.hasInitialized ) { + // don't reapply widget options on tablesorter init + ts.applyWidgetOptions( table ); + } + if ( typeof widget.init === 'function' ) { + applied = true; + if ( c.debug ) { + console[ console.group ? 'group' : 'log' ]( 'Initializing ' + name + ' widget' ); + } + widget.init( table, widget, table.config, table.config.widgetOptions ); + } + } + if ( !init && typeof widget.format === 'function' ) { + applied = true; + if ( c.debug ) { + console[ console.group ? 'group' : 'log' ]( 'Updating ' + name + ' widget' ); + } + widget.format( table, table.config, table.config.widgetOptions, false ); + } + if ( c.debug ) { + if ( applied ) { + console.log( 'Completed ' + ( init ? 'initializing ' : 'applying ' ) + name + ' widget' + ts.benchmark( time2 ) ); + if ( console.groupEnd ) { console.groupEnd(); } + } + } + } + } + if ( c.debug && console.groupEnd ) { console.groupEnd(); } + // callback executed on init only + if ( !init && typeof callback === 'function' ) { + callback( table ); + } + } + c.timerReady = setTimeout( function() { + table.isApplyingWidgets = false; + $.data( table, 'lastWidgetApplication', new Date() ); + c.$table.trigger( 'tablesorter-ready' ); + }, 10 ); + if ( c.debug ) { + widget = c.widgets.length; + console.log( 'Completed ' + + ( init === true ? 'initializing ' : 'applying ' ) + widget + + ' widget' + ( widget !== 1 ? 's' : '' ) + ts.benchmark( time ) ); + } + }, + + removeWidget : function( table, name, refreshing ) { + table = $( table )[ 0 ]; + var index, widget, indx, len, + c = table.config; + // if name === true, add all widgets from $.tablesorter.widgets + if ( name === true ) { + name = []; + len = ts.widgets.length; + for ( indx = 0; indx < len; indx++ ) { + widget = ts.widgets[ indx ]; + if ( widget && widget.id ) { + name.push( widget.id ); + } + } + } else { + // name can be either an array of widgets names, + // or a space/comma separated list of widget names + name = ( $.isArray( name ) ? name.join( ',' ) : name || '' ).toLowerCase().split( /[\s,]+/ ); + } + len = name.length; + for ( index = 0; index < len; index++ ) { + widget = ts.getWidgetById( name[ index ] ); + indx = $.inArray( name[ index ], c.widgets ); + if ( widget && widget.remove ) { + if ( c.debug ) { + console.log( ( refreshing ? 'Refreshing' : 'Removing' ) + ' "' + name[ index ] + '" widget' ); + } + widget.remove( table, c, c.widgetOptions, refreshing ); + c.widgetInit[ name[ index ] ] = false; + } + // don't remove the widget from config.widget if refreshing + if ( indx >= 0 && refreshing !== true ) { + c.widgets.splice( indx, 1 ); + } + } + }, + + refreshWidgets : function( table, doAll, dontapply ) { + table = $( table )[ 0 ]; // see issue #243 + var indx, widget, + c = table.config, + curWidgets = c.widgets, + widgets = ts.widgets, + len = widgets.length, + list = [], + callback = function( table ) { + $( table ).trigger( 'refreshComplete' ); + }; + // remove widgets not defined in config.widgets, unless doAll is true + for ( indx = 0; indx < len; indx++ ) { + widget = widgets[ indx ]; + if ( widget && widget.id && ( doAll || $.inArray( widget.id, curWidgets ) < 0 ) ) { + list.push( widget.id ); + } + } + ts.removeWidget( table, list.join( ',' ), true ); + if ( dontapply !== true ) { + // call widget init if + ts.applyWidget( table, doAll || false, callback ); + if ( doAll ) { + // apply widget format + ts.applyWidget( table, false, callback ); + } + } else { + callback( table ); + } + }, + + /* + ██ ██ ██████ ██ ██ ██ ██████ ██ ██████ ▄█████ + ██ ██ ██ ██ ██ ██ ██ ██ ██▄▄ ▀█▄ + ██ ██ ██ ██ ██ ██ ██ ██ ██▀▀ ▀█▄ + ▀████▀ ██ ██ ██████ ██ ██ ██ ██████ █████▀ + */ + benchmark : function( diff ) { + return ( ' ( ' + ( new Date().getTime() - diff.getTime() ) + 'ms )' ); + }, + // deprecated ts.log + log : function() { + console.log( arguments ); + }, + + // $.isEmptyObject from jQuery v1.4 + isEmptyObject : function( obj ) { + /*jshint forin: false */ + for ( var name in obj ) { + return false; + } + return true; + }, + + isValueInArray : function( column, arry ) { + var indx, + len = arry && arry.length || 0; + for ( indx = 0; indx < len; indx++ ) { + if ( arry[ indx ][ 0 ] === column ) { + return indx; + } + } + return -1; + }, + + formatFloat : function( str, table ) { + if ( typeof str !== 'string' || str === '' ) { return str; } + // allow using formatFloat without a table; defaults to US number format + var num, + usFormat = table && table.config ? table.config.usNumberFormat !== false : + typeof table !== 'undefined' ? table : true; + if ( usFormat ) { + // US Format - 1,234,567.89 -> 1234567.89 + str = str.replace( ts.regex.comma, '' ); + } else { + // German Format = 1.234.567,89 -> 1234567.89 + // French Format = 1 234 567,89 -> 1234567.89 + str = str.replace( ts.regex.digitNonUS, '' ).replace( ts.regex.comma, '.' ); + } + if ( ts.regex.digitNegativeTest.test( str ) ) { + // make (#) into a negative number -> (10) = -10 + str = str.replace( ts.regex.digitNegativeReplace, '-$1' ); + } + num = parseFloat( str ); + // return the text instead of zero + return isNaN( num ) ? $.trim( str ) : num; + }, + + isDigit : function( str ) { + // replace all unwanted chars and match + return isNaN( str ) ? + ts.regex.digitTest.test( str.toString().replace( ts.regex.digitReplace, '' ) ) : + str !== ''; + }, + + // computeTableHeaderCellIndexes from: + // http://www.javascripttoolbox.com/lib/table/examples.php + // http://www.javascripttoolbox.com/temp/table_cellindex.html + computeColumnIndex : function( $rows ) { + var i, j, k, l, $cell, cell, cells, rowIndex, cellId, rowSpan, colSpan, firstAvailCol, + matrix = [], + matrixrow = []; + for ( i = 0; i < $rows.length; i++ ) { + cells = $rows[ i ].cells; + for ( j = 0; j < cells.length; j++ ) { + cell = cells[ j ]; + $cell = $( cell ); + rowIndex = cell.parentNode.rowIndex; + cellId = rowIndex + '-' + $cell.index(); + rowSpan = cell.rowSpan || 1; + colSpan = cell.colSpan || 1; + if ( typeof matrix[ rowIndex ] === 'undefined' ) { + matrix[ rowIndex ] = []; + } + // Find first available column in the first row + for ( k = 0; k < matrix[ rowIndex ].length + 1; k++ ) { + if ( typeof matrix[ rowIndex ][ k ] === 'undefined' ) { + firstAvailCol = k; + break; + } + } + // add data-column (setAttribute = IE8+) + if ( cell.setAttribute ) { + cell.setAttribute( 'data-column', firstAvailCol ); + } else { + $cell.attr( 'data-column', firstAvailCol ); + } + for ( k = rowIndex; k < rowIndex + rowSpan; k++ ) { + if ( typeof matrix[ k ] === 'undefined' ) { + matrix[ k ] = []; + } + matrixrow = matrix[ k ]; + for ( l = firstAvailCol; l < firstAvailCol + colSpan; l++ ) { + matrixrow[ l ] = 'x'; + } + } + } + } + return matrixrow.length; + }, + + // automatically add a colgroup with col elements set to a percentage width + fixColumnWidth : function( table ) { + table = $( table )[ 0 ]; + var overallWidth, percent, $tbodies, len, index, + c = table.config, + $colgroup = c.$table.children( 'colgroup' ); + // remove plugin-added colgroup, in case we need to refresh the widths + if ( $colgroup.length && $colgroup.hasClass( ts.css.colgroup ) ) { + $colgroup.remove(); + } + if ( c.widthFixed && c.$table.children( 'colgroup' ).length === 0 ) { + $colgroup = $( '' ); + overallWidth = c.$table.width(); + // only add col for visible columns - fixes #371 + $tbodies = c.$tbodies.find( 'tr:first' ).children( ':visible' ); + len = $tbodies.length; + for ( index = 0; index < len; index++ ) { + percent = parseInt( ( $tbodies.eq( index ).width() / overallWidth ) * 1000, 10 ) / 10 + '%'; + $colgroup.append( $( '' ).css( 'width', percent ) ); + } + c.$table.prepend( $colgroup ); + } + }, + + // get sorter, string, empty, etc options for each column from + // jQuery data, metadata, header option or header class name ('sorter-false') + // priority = jQuery data > meta > headers option > header class name + getData : function( header, configHeader, key ) { + var meta, cl4ss, + val = '', + $header = $( header ); + if ( !$header.length ) { return ''; } + meta = $.metadata ? $header.metadata() : false; + cl4ss = ' ' + ( $header.attr( 'class' ) || '' ); + if ( typeof $header.data( key ) !== 'undefined' || + typeof $header.data( key.toLowerCase() ) !== 'undefined' ) { + // 'data-lockedOrder' is assigned to 'lockedorder'; but 'data-locked-order' is assigned to 'lockedOrder' + // 'data-sort-initial-order' is assigned to 'sortInitialOrder' + val += $header.data( key ) || $header.data( key.toLowerCase() ); + } else if ( meta && typeof meta[ key ] !== 'undefined' ) { + val += meta[ key ]; + } else if ( configHeader && typeof configHeader[ key ] !== 'undefined' ) { + val += configHeader[ key ]; + } else if ( cl4ss !== ' ' && cl4ss.match( ' ' + key + '-' ) ) { + // include sorter class name 'sorter-text', etc; now works with 'sorter-my-custom-parser' + val = cl4ss.match( new RegExp( '\\s' + key + '-([\\w-]+)' ) )[ 1 ] || ''; + } + return $.trim( val ); + }, + + getColumnData : function( table, obj, indx, getCell, $headers ) { + if ( typeof obj === 'undefined' || obj === null ) { return; } + table = $( table )[ 0 ]; + var $header, key, + c = table.config, + $cells = ( $headers || c.$headers ), + // c.$headerIndexed is not defined initially + $cell = c.$headerIndexed && c.$headerIndexed[ indx ] || + $cells.filter( '[data-column="' + indx + '"]:last' ); + if ( obj[ indx ] ) { + return getCell ? obj[ indx ] : obj[ $cells.index( $cell ) ]; + } + for ( key in obj ) { + if ( typeof key === 'string' ) { + $header = $cell + // header cell with class/id + .filter( key ) + // find elements within the header cell with cell/id + .add( $cell.find( key ) ); + if ( $header.length ) { + return obj[ key ]; + } + } + } + return; + }, + + // *** Process table *** + // add processing indicator + isProcessing : function( $table, toggle, $headers ) { + $table = $( $table ); + var c = $table[ 0 ].config, + // default to all headers + $header = $headers || $table.find( '.' + ts.css.header ); + if ( toggle ) { + // don't use sortList if custom $headers used + if ( typeof $headers !== 'undefined' && c.sortList.length > 0 ) { + // get headers from the sortList + $header = $header.filter( function() { + // get data-column from attr to keep compatibility with jQuery 1.2.6 + return this.sortDisabled ? + false : + ts.isValueInArray( parseFloat( $( this ).attr( 'data-column' ) ), c.sortList ) >= 0; + }); + } + $table.add( $header ).addClass( ts.css.processing + ' ' + c.cssProcessing ); + } else { + $table.add( $header ).removeClass( ts.css.processing + ' ' + c.cssProcessing ); + } + }, + + // detach tbody but save the position + // don't use tbody because there are portions that look for a tbody index (updateCell) + processTbody : function( table, $tb, getIt ) { + table = $( table )[ 0 ]; + if ( getIt ) { + table.isProcessing = true; + $tb.before( '' ); + return $.fn.detach ? $tb.detach() : $tb.remove(); + } + var holdr = $( table ).find( 'colgroup.tablesorter-savemyplace' ); + $tb.insertAfter( holdr ); + holdr.remove(); + table.isProcessing = false; + }, + + clearTableBody : function( table ) { + $( table )[ 0 ].config.$tbodies.children().detach(); + }, + + // used when replacing accented characters during sorting + characterEquivalents : { + 'a' : '\u00e1\u00e0\u00e2\u00e3\u00e4\u0105\u00e5', // áàâãäąå + 'A' : '\u00c1\u00c0\u00c2\u00c3\u00c4\u0104\u00c5', // ÁÀÂÃÄĄÅ + 'c' : '\u00e7\u0107\u010d', // çćč + 'C' : '\u00c7\u0106\u010c', // ÇĆČ + 'e' : '\u00e9\u00e8\u00ea\u00eb\u011b\u0119', // éèêëěę + 'E' : '\u00c9\u00c8\u00ca\u00cb\u011a\u0118', // ÉÈÊËĚĘ + 'i' : '\u00ed\u00ec\u0130\u00ee\u00ef\u0131', // íìİîïı + 'I' : '\u00cd\u00cc\u0130\u00ce\u00cf', // ÍÌİÎÏ + 'o' : '\u00f3\u00f2\u00f4\u00f5\u00f6\u014d', // óòôõöō + 'O' : '\u00d3\u00d2\u00d4\u00d5\u00d6\u014c', // ÓÒÔÕÖŌ + 'ss': '\u00df', // ß (s sharp) + 'SS': '\u1e9e', // ẞ (Capital sharp s) + 'u' : '\u00fa\u00f9\u00fb\u00fc\u016f', // úùûüů + 'U' : '\u00da\u00d9\u00db\u00dc\u016e' // ÚÙÛÜŮ + }, + + replaceAccents : function( str ) { + var chr, + acc = '[', + eq = ts.characterEquivalents; + if ( !ts.characterRegex ) { + ts.characterRegexArray = {}; + for ( chr in eq ) { + if ( typeof chr === 'string' ) { + acc += eq[ chr ]; + ts.characterRegexArray[ chr ] = new RegExp( '[' + eq[ chr ] + ']', 'g' ); + } + } + ts.characterRegex = new RegExp( acc + ']' ); + } + if ( ts.characterRegex.test( str ) ) { + for ( chr in eq ) { + if ( typeof chr === 'string' ) { + str = str.replace( ts.characterRegexArray[ chr ], chr ); + } + } + } + return str; + }, + + // restore headers + restoreHeaders : function( table ) { + var index, $cell, + c = $( table )[ 0 ].config, + $headers = c.$table.find( c.selectorHeaders ), + len = $headers.length; + // don't use c.$headers here in case header cells were swapped + for ( index = 0; index < len; index++ ) { + $cell = $headers.eq( index ); + // only restore header cells if it is wrapped + // because this is also used by the updateAll method + if ( $cell.find( '.' + ts.css.headerIn ).length ) { + $cell.html( c.headerContent[ index ] ); + } + } + }, + + destroy : function( table, removeClasses, callback ) { + table = $( table )[ 0 ]; + if ( !table.hasInitialized ) { return; } + // remove all widgets + ts.removeWidget( table, true, false ); + var events, + $t = $( table ), + c = table.config, + debug = c.debug, + $h = $t.find( 'thead:first' ), + $r = $h.find( 'tr.' + ts.css.headerRow ).removeClass( ts.css.headerRow + ' ' + c.cssHeaderRow ), + $f = $t.find( 'tfoot:first > tr' ).children( 'th, td' ); + if ( removeClasses === false && $.inArray( 'uitheme', c.widgets ) >= 0 ) { + // reapply uitheme classes, in case we want to maintain appearance + $t.trigger( 'applyWidgetId', [ 'uitheme' ] ); + $t.trigger( 'applyWidgetId', [ 'zebra' ] ); + } + // remove widget added rows, just in case + $h.find( 'tr' ).not( $r ).remove(); + // disable tablesorter + events = 'sortReset update updateRows updateAll updateHeaders updateCell addRows updateComplete sorton ' + + 'appendCache updateCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave keypress ' + + 'sortBegin sortEnd resetToLoadState '.split( ' ' ) + .join( c.namespace + ' ' ); + $t + .removeData( 'tablesorter' ) + .unbind( events.replace( ts.regex.spaces, ' ' ) ); + c.$headers + .add( $f ) + .removeClass( [ ts.css.header, c.cssHeader, c.cssAsc, c.cssDesc, ts.css.sortAsc, ts.css.sortDesc, ts.css.sortNone ].join( ' ' ) ) + .removeAttr( 'data-column' ) + .removeAttr( 'aria-label' ) + .attr( 'aria-disabled', 'true' ); + $r + .find( c.selectorSort ) + .unbind( ( 'mousedown mouseup keypress '.split( ' ' ).join( c.namespace + ' ' ) ).replace( ts.regex.spaces, ' ' ) ); + ts.restoreHeaders( table ); + $t.toggleClass( ts.css.table + ' ' + c.tableClass + ' tablesorter-' + c.theme, removeClasses === false ); + // clear flag in case the plugin is initialized again + table.hasInitialized = false; + delete table.config.cache; + if ( typeof callback === 'function' ) { + callback( table ); + } + if ( debug ) { + console.log( 'tablesorter has been removed' ); + } + } + + }; + + $.fn.tablesorter = function( settings ) { + return this.each( function() { + var table = this, + // merge & extend config options + c = $.extend( true, {}, ts.defaults, settings, ts.instanceMethods ); + // save initial settings + c.originalSettings = settings; + // create a table from data (build table widget) + if ( !table.hasInitialized && ts.buildTable && this.nodeName !== 'TABLE' ) { + // return the table (in case the original target is the table's container) + ts.buildTable( table, c ); + } else { + ts.setup( table, c ); + } + }); + }; + + // set up debug logs + if ( !( window.console && window.console.log ) ) { + // access $.tablesorter.logs for browsers that don't have a console... + ts.logs = []; + /*jshint -W020 */ + console = {}; + console.log = console.warn = console.error = console.table = function() { + var arg = arguments.length > 1 ? arguments : arguments[0]; + ts.logs.push({ date: Date.now(), log: arg }); + }; + } + + // add default parsers + ts.addParser({ + id : 'no-parser', + is : function() { + return false; + }, + format : function() { + return ''; + }, + type : 'text' + }); + + ts.addParser({ + id : 'text', + is : function() { + return true; + }, + format : function( str, table ) { + var c = table.config; + if ( str ) { + str = $.trim( c.ignoreCase ? str.toLocaleLowerCase() : str ); + str = c.sortLocaleCompare ? ts.replaceAccents( str ) : str; + } + return str; + }, + type : 'text' + }); + + ts.regex.nondigit = /[^\w,. \-()]/g; + ts.addParser({ + id : 'digit', + is : function( str ) { + return ts.isDigit( str ); + }, + format : function( str, table ) { + var num = ts.formatFloat( ( str || '' ).replace( ts.regex.nondigit, '' ), table ); + return str && typeof num === 'number' ? num : + str ? $.trim( str && table.config.ignoreCase ? str.toLocaleLowerCase() : str ) : str; + }, + type : 'numeric' + }); + + ts.regex.currencyReplace = /[+\-,. ]/g; + ts.regex.currencyTest = /^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/; + ts.addParser({ + id : 'currency', + is : function( str ) { + str = ( str || '' ).replace( ts.regex.currencyReplace, '' ); + // test for £$€¤¥¢ + return ts.regex.currencyTest.test( str ); + }, + format : function( str, table ) { + var num = ts.formatFloat( ( str || '' ).replace( ts.regex.nondigit, '' ), table ); + return str && typeof num === 'number' ? num : + str ? $.trim( str && table.config.ignoreCase ? str.toLocaleLowerCase() : str ) : str; + }, + type : 'numeric' + }); + + // too many protocols to add them all https://en.wikipedia.org/wiki/URI_scheme + // now, this regex can be updated before initialization + ts.regex.urlProtocolTest = /^(https?|ftp|file):\/\//; + ts.regex.urlProtocolReplace = /(https?|ftp|file):\/\//; + ts.addParser({ + id : 'url', + is : function( str ) { + return ts.regex.urlProtocolTest.test( str ); + }, + format : function( str ) { + return str ? $.trim( str.replace( ts.regex.urlProtocolReplace, '' ) ) : str; + }, + parsed : true, // filter widget flag + type : 'text' + }); + + ts.regex.dash = /-/g; + ts.regex.isoDate = /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/; + ts.addParser({ + id : 'isoDate', + is : function( str ) { + return ts.regex.isoDate.test( str ); + }, + format : function( str, table ) { + var date = str ? new Date( str.replace( ts.regex.dash, '/' ) ) : str; + return date instanceof Date && isFinite( date ) ? date.getTime() : str; + }, + type : 'numeric' + }); + + ts.regex.percent = /%/g; + ts.regex.percentTest = /(\d\s*?%|%\s*?\d)/; + ts.addParser({ + id : 'percent', + is : function( str ) { + return ts.regex.percentTest.test( str ) && str.length < 15; + }, + format : function( str, table ) { + return str ? ts.formatFloat( str.replace( ts.regex.percent, '' ), table ) : str; + }, + type : 'numeric' + }); + + // added image parser to core v2.17.9 + ts.addParser({ + id : 'image', + is : function( str, table, node, $node ) { + return $node.find( 'img' ).length > 0; + }, + format : function( str, table, cell ) { + return $( cell ).find( 'img' ).attr( table.config.imgAttr || 'alt' ) || str; + }, + parsed : true, // filter widget flag + type : 'text' + }); + + ts.regex.dateReplace = /(\S)([AP]M)$/i; // used by usLongDate & time parser + ts.regex.usLongDateTest1 = /^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i; + ts.regex.usLongDateTest2 = /^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i; + ts.addParser({ + id : 'usLongDate', + is : function( str ) { + // two digit years are not allowed cross-browser + // Jan 01, 2013 12:34:56 PM or 01 Jan 2013 + return ts.regex.usLongDateTest1.test( str ) || ts.regex.usLongDateTest2.test( str ); + }, + format : function( str, table ) { + var date = str ? new Date( str.replace( ts.regex.dateReplace, '$1 $2' ) ) : str; + return date instanceof Date && isFinite( date ) ? date.getTime() : str; + }, + type : 'numeric' + }); + + // testing for ##-##-#### or ####-##-##, so it's not perfect; time can be included + ts.regex.shortDateTest = /(^\d{1,2}[\/\s]\d{1,2}[\/\s]\d{4})|(^\d{4}[\/\s]\d{1,2}[\/\s]\d{1,2})/; + // escaped "-" because JSHint in Firefox was showing it as an error + ts.regex.shortDateReplace = /[\-.,]/g; + // XXY covers MDY & DMY formats + ts.regex.shortDateXXY = /(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/; + ts.regex.shortDateYMD = /(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/; + ts.convertFormat = function( dateString, format ) { + dateString = ( dateString || '' ) + .replace( ts.regex.spaces, ' ' ) + .replace( ts.regex.shortDateReplace, '/' ); + if ( format === 'mmddyyyy' ) { + dateString = dateString.replace( ts.regex.shortDateXXY, '$3/$1/$2' ); + } else if ( format === 'ddmmyyyy' ) { + dateString = dateString.replace( ts.regex.shortDateXXY, '$3/$2/$1' ); + } else if ( format === 'yyyymmdd' ) { + dateString = dateString.replace( ts.regex.shortDateYMD, '$1/$2/$3' ); + } + var date = new Date( dateString ); + return date instanceof Date && isFinite( date ) ? date.getTime() : ''; + }; + + ts.addParser({ + id : 'shortDate', // 'mmddyyyy', 'ddmmyyyy' or 'yyyymmdd' + is : function( str ) { + str = ( str || '' ).replace( ts.regex.spaces, ' ' ).replace( ts.regex.shortDateReplace, '/' ); + return ts.regex.shortDateTest.test( str ); + }, + format : function( str, table, cell, cellIndex ) { + if ( str ) { + var c = table.config, + $header = c.$headerIndexed[ cellIndex ], + format = $header.length && $header.data( 'dateFormat' ) || + ts.getData( $header, ts.getColumnData( table, c.headers, cellIndex ), 'dateFormat' ) || + c.dateFormat; + // save format because getData can be slow... + if ( $header.length ) { + $header.data( 'dateFormat', format ); + } + return ts.convertFormat( str, format ) || str; + } + return str; + }, + type : 'numeric' + }); + + // match 24 hour time & 12 hours time + am/pm - see http://regexr.com/3c3tk + ts.regex.timeTest = /^([1-9]|1[0-2]):([0-5]\d)(\s[AP]M)|((?:[01]\d|[2][0-4]):[0-5]\d)$/i; + ts.regex.timeMatch = /([1-9]|1[0-2]):([0-5]\d)(\s[AP]M)|((?:[01]\d|[2][0-4]):[0-5]\d)/i; + ts.addParser({ + id : 'time', + is : function( str ) { + return ts.regex.timeTest.test( str ); + }, + format : function( str, table ) { + // isolate time... ignore month, day and year + var temp, + timePart = ( str || '' ).match( ts.regex.timeMatch ), + orig = new Date( str ), + // no time component? default to 00:00 by leaving it out, but only if str is defined + time = str && ( timePart !== null ? timePart[ 0 ] : '00:00 AM' ), + date = time ? new Date( '2000/01/01 ' + time.replace( ts.regex.dateReplace, '$1 $2' ) ) : time; + if ( date instanceof Date && isFinite( date ) ) { + temp = orig instanceof Date && isFinite( orig ) ? orig.getTime() : 0; + // if original string was a valid date, add it to the decimal so the column sorts in some kind of order + // luckily new Date() ignores the decimals + return temp ? parseFloat( date.getTime() + '.' + orig.getTime() ) : date.getTime(); + } + return str; + }, + type : 'numeric' + }); + + ts.addParser({ + id : 'metadata', + is : function() { + return false; + }, + format : function( str, table, cell ) { + var c = table.config, + p = ( !c.parserMetadataName ) ? 'sortValue' : c.parserMetadataName; + return $( cell ).metadata()[ p ]; + }, + type : 'numeric' + }); + + /* + ██████ ██████ █████▄ █████▄ ▄████▄ + ▄█▀ ██▄▄ ██▄▄██ ██▄▄██ ██▄▄██ + ▄█▀ ██▀▀ ██▀▀██ ██▀▀█ ██▀▀██ + ██████ ██████ █████▀ ██ ██ ██ ██ + */ + // add default widgets + ts.addWidget({ + id : 'zebra', + priority : 90, + format : function( table, c, wo ) { + var $visibleRows, $row, count, isEven, tbodyIndex, rowIndex, len, + child = new RegExp( c.cssChildRow, 'i' ), + $tbodies = c.$tbodies.add( $( c.namespace + '_extra_table' ).children( 'tbody:not(.' + c.cssInfoBlock + ')' ) ); + for ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) { + // loop through the visible rows + count = 0; + $visibleRows = $tbodies.eq( tbodyIndex ).children( 'tr:visible' ).not( c.selectorRemove ); + len = $visibleRows.length; + for ( rowIndex = 0; rowIndex < len; rowIndex++ ) { + $row = $visibleRows.eq( rowIndex ); + // style child rows the same way the parent row was styled + if ( !child.test( $row[ 0 ].className ) ) { count++; } + isEven = ( count % 2 === 0 ); + $row + .removeClass( wo.zebra[ isEven ? 1 : 0 ] ) + .addClass( wo.zebra[ isEven ? 0 : 1 ] ); + } + } + }, + remove : function( table, c, wo, refreshing ) { + if ( refreshing ) { return; } + var tbodyIndex, $tbody, + $tbodies = c.$tbodies, + toRemove = ( wo.zebra || [ 'even', 'odd' ] ).join( ' ' ); + for ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ){ + $tbody = ts.processTbody( table, $tbodies.eq( tbodyIndex ), true ); // remove tbody + $tbody.children().removeClass( toRemove ); + ts.processTbody( table, $tbody, false ); // restore tbody + } + } + }); + +})( jQuery ); + +/*! Widget: storage - updated 3/26/2015 (v2.21.3) */ +/*global JSON:false */ +;(function ($, window, document) { + 'use strict'; + + var ts = $.tablesorter || {}; + // *** Store data in local storage, with a cookie fallback *** + /* IE7 needs JSON library for JSON.stringify - (http://caniuse.com/#search=json) + if you need it, then include https://github.com/douglascrockford/JSON-js + + $.parseJSON is not available is jQuery versions older than 1.4.1, using older + versions will only allow storing information for one page at a time + + // *** Save data (JSON format only) *** + // val must be valid JSON... use http://jsonlint.com/ to ensure it is valid + var val = { "mywidget" : "data1" }; // valid JSON uses double quotes + // $.tablesorter.storage(table, key, val); + $.tablesorter.storage(table, 'tablesorter-mywidget', val); + + // *** Get data: $.tablesorter.storage(table, key); *** + v = $.tablesorter.storage(table, 'tablesorter-mywidget'); + // val may be empty, so also check for your data + val = (v && v.hasOwnProperty('mywidget')) ? v.mywidget : ''; + alert(val); // 'data1' if saved, or '' if not + */ + ts.storage = function(table, key, value, options) { + table = $(table)[0]; + var cookieIndex, cookies, date, + hasStorage = false, + values = {}, + c = table.config, + wo = c && c.widgetOptions, + storageType = ( options && options.useSessionStorage ) || ( wo && wo.storage_useSessionStorage ) ? + 'sessionStorage' : 'localStorage', + $table = $(table), + // id from (1) options ID, (2) table 'data-table-group' attribute, (3) widgetOptions.storage_tableId, + // (4) table ID, then (5) table index + id = options && options.id || + $table.attr( options && options.group || wo && wo.storage_group || 'data-table-group') || + wo && wo.storage_tableId || table.id || $('.tablesorter').index( $table ), + // url from (1) options url, (2) table 'data-table-page' attribute, (3) widgetOptions.storage_fixedUrl, + // (4) table.config.fixedUrl (deprecated), then (5) window location path + url = options && options.url || + $table.attr(options && options.page || wo && wo.storage_page || 'data-table-page') || + wo && wo.storage_fixedUrl || c && c.fixedUrl || window.location.pathname; + // https://gist.github.com/paulirish/5558557 + if (storageType in window) { + try { + window[storageType].setItem('_tmptest', 'temp'); + hasStorage = true; + window[storageType].removeItem('_tmptest'); + } catch (error) { + if (c && c.debug) { + console.warn( storageType + ' is not supported in this browser' ); + } + } + } + // *** get value *** + if ($.parseJSON) { + if (hasStorage) { + values = $.parseJSON( window[storageType][key] || 'null' ) || {}; + } else { + // old browser, using cookies + cookies = document.cookie.split(/[;\s|=]/); + // add one to get from the key to the value + cookieIndex = $.inArray(key, cookies) + 1; + values = (cookieIndex !== 0) ? $.parseJSON(cookies[cookieIndex] || 'null') || {} : {}; + } + } + // allow value to be an empty string too + if ((value || value === '') && window.JSON && JSON.hasOwnProperty('stringify')) { + // add unique identifiers = url pathname > table ID/index on page > data + if (!values[url]) { + values[url] = {}; + } + values[url][id] = value; + // *** set value *** + if (hasStorage) { + window[storageType][key] = JSON.stringify(values); + } else { + date = new Date(); + date.setTime(date.getTime() + (31536e+6)); // 365 days + document.cookie = key + '=' + (JSON.stringify(values)).replace(/\"/g, '\"') + '; expires=' + date.toGMTString() + '; path=/'; + } + } else { + return values && values[url] ? values[url][id] : ''; + } + }; + +})(jQuery, window, document); + +/*! Widget: uitheme - updated 3/26/2015 (v2.21.3) */ +;(function ($) { + 'use strict'; + var ts = $.tablesorter || {}; + + ts.themes = { + 'bootstrap' : { + table : 'table table-bordered table-striped', + caption : 'caption', + // header class names + header : 'bootstrap-header', // give the header a gradient background (theme.bootstrap_2.css) + sortNone : '', + sortAsc : '', + sortDesc : '', + active : '', // applied when column is sorted + hover : '', // custom css required - a defined bootstrap style may not override other classes + // icon class names + icons : '', // add 'icon-white' to make them white; this icon class is added to the in the header + iconSortNone : 'bootstrap-icon-unsorted', // class name added to icon when column is not sorted + iconSortAsc : 'icon-chevron-up glyphicon glyphicon-chevron-up', // class name added to icon when column has ascending sort + iconSortDesc : 'icon-chevron-down glyphicon glyphicon-chevron-down', // class name added to icon when column has descending sort + filterRow : '', // filter row class + footerRow : '', + footerCells : '', + even : '', // even row zebra striping + odd : '' // odd row zebra striping + }, + 'jui' : { + table : 'ui-widget ui-widget-content ui-corner-all', // table classes + caption : 'ui-widget-content', + // header class names + header : 'ui-widget-header ui-corner-all ui-state-default', // header classes + sortNone : '', + sortAsc : '', + sortDesc : '', + active : 'ui-state-active', // applied when column is sorted + hover : 'ui-state-hover', // hover class + // icon class names + icons : 'ui-icon', // icon class added to the in the header + iconSortNone : 'ui-icon-carat-2-n-s', // class name added to icon when column is not sorted + iconSortAsc : 'ui-icon-carat-1-n', // class name added to icon when column has ascending sort + iconSortDesc : 'ui-icon-carat-1-s', // class name added to icon when column has descending sort + filterRow : '', + footerRow : '', + footerCells : '', + even : 'ui-widget-content', // even row zebra striping + odd : 'ui-state-default' // odd row zebra striping + } + }; + + $.extend(ts.css, { + wrapper : 'tablesorter-wrapper' // ui theme & resizable + }); + + ts.addWidget({ + id: 'uitheme', + priority: 10, + format: function(table, c, wo) { + var i, hdr, icon, time, $header, $icon, $tfoot, $h, oldtheme, oldremove, oldIconRmv, hasOldTheme, + themesAll = ts.themes, + $table = c.$table.add( $( c.namespace + '_extra_table' ) ), + $headers = c.$headers.add( $( c.namespace + '_extra_headers' ) ), + theme = c.theme || 'jui', + themes = themesAll[theme] || {}, + remove = $.trim( [ themes.sortNone, themes.sortDesc, themes.sortAsc, themes.active ].join( ' ' ) ), + iconRmv = $.trim( [ themes.iconSortNone, themes.iconSortDesc, themes.iconSortAsc ].join( ' ' ) ); + if (c.debug) { time = new Date(); } + // initialization code - run once + if (!$table.hasClass('tablesorter-' + theme) || c.theme !== c.appliedTheme || !wo.uitheme_applied) { + wo.uitheme_applied = true; + oldtheme = themesAll[c.appliedTheme] || {}; + hasOldTheme = !$.isEmptyObject(oldtheme); + oldremove = hasOldTheme ? [ oldtheme.sortNone, oldtheme.sortDesc, oldtheme.sortAsc, oldtheme.active ].join( ' ' ) : ''; + oldIconRmv = hasOldTheme ? [ oldtheme.iconSortNone, oldtheme.iconSortDesc, oldtheme.iconSortAsc ].join( ' ' ) : ''; + if (hasOldTheme) { + wo.zebra[0] = $.trim( ' ' + wo.zebra[0].replace(' ' + oldtheme.even, '') ); + wo.zebra[1] = $.trim( ' ' + wo.zebra[1].replace(' ' + oldtheme.odd, '') ); + c.$tbodies.children().removeClass( [ oldtheme.even, oldtheme.odd ].join(' ') ); + } + // update zebra stripes + if (themes.even) { wo.zebra[0] += ' ' + themes.even; } + if (themes.odd) { wo.zebra[1] += ' ' + themes.odd; } + // add caption style + $table.children('caption') + .removeClass(oldtheme.caption || '') + .addClass(themes.caption); + // add table/footer class names + $tfoot = $table + // remove other selected themes + .removeClass( (c.appliedTheme ? 'tablesorter-' + (c.appliedTheme || '') : '') + ' ' + (oldtheme.table || '') ) + .addClass('tablesorter-' + theme + ' ' + (themes.table || '')) // add theme widget class name + .children('tfoot'); + c.appliedTheme = c.theme; + + if ($tfoot.length) { + $tfoot + // if oldtheme.footerRow or oldtheme.footerCells are undefined, all class names are removed + .children('tr').removeClass(oldtheme.footerRow || '').addClass(themes.footerRow) + .children('th, td').removeClass(oldtheme.footerCells || '').addClass(themes.footerCells); + } + // update header classes + $headers + .removeClass( (hasOldTheme ? [ oldtheme.header, oldtheme.hover, oldremove ].join(' ') : '') || '' ) + .addClass(themes.header) + .not('.sorter-false') + .unbind('mouseenter.tsuitheme mouseleave.tsuitheme') + .bind('mouseenter.tsuitheme mouseleave.tsuitheme', function(event) { + // toggleClass with switch added in jQuery 1.3 + $(this)[ event.type === 'mouseenter' ? 'addClass' : 'removeClass' ](themes.hover || ''); + }); + + $headers.each(function(){ + var $this = $(this); + if (!$this.find('.' + ts.css.wrapper).length) { + // Firefox needs this inner div to position the icon & resizer correctly + $this.wrapInner('
    '); + } + }); + if (c.cssIcon) { + // if c.cssIcon is '', then no is added to the header + $headers + .find('.' + ts.css.icon) + .removeClass(hasOldTheme ? [ oldtheme.icons, oldIconRmv ].join(' ') : '') + .addClass(themes.icons || ''); + } + if ($table.hasClass('hasFilters')) { + $table.children('thead').children('.' + ts.css.filterRow) + .removeClass(hasOldTheme ? oldtheme.filterRow || '' : '') + .addClass(themes.filterRow || ''); + } + } + for (i = 0; i < c.columns; i++) { + $header = c.$headers + .add($(c.namespace + '_extra_headers')) + .not('.sorter-false') + .filter('[data-column="' + i + '"]'); + $icon = (ts.css.icon) ? $header.find('.' + ts.css.icon) : $(); + $h = $headers.not('.sorter-false').filter('[data-column="' + i + '"]:last'); + if ($h.length) { + $header.removeClass(remove); + $icon.removeClass(iconRmv); + if ($h[0].sortDisabled) { + // no sort arrows for disabled columns! + $icon.removeClass(themes.icons || ''); + } else { + hdr = themes.sortNone; + icon = themes.iconSortNone; + if ($h.hasClass(ts.css.sortAsc)) { + hdr = [ themes.sortAsc, themes.active ].join(' '); + icon = themes.iconSortAsc; + } else if ($h.hasClass(ts.css.sortDesc)) { + hdr = [ themes.sortDesc, themes.active ].join(' '); + icon = themes.iconSortDesc; + } + $header.addClass(hdr); + $icon.addClass(icon || ''); + } + } + } + if (c.debug) { + console.log('Applying ' + theme + ' theme' + ts.benchmark(time)); + } + }, + remove: function(table, c, wo, refreshing) { + if (!wo.uitheme_applied) { return; } + var $table = c.$table, + theme = c.appliedTheme || 'jui', + themes = ts.themes[ theme ] || ts.themes.jui, + $headers = $table.children('thead').children(), + remove = themes.sortNone + ' ' + themes.sortDesc + ' ' + themes.sortAsc, + iconRmv = themes.iconSortNone + ' ' + themes.iconSortDesc + ' ' + themes.iconSortAsc; + $table.removeClass('tablesorter-' + theme + ' ' + themes.table); + wo.uitheme_applied = false; + if (refreshing) { return; } + $table.find(ts.css.header).removeClass(themes.header); + $headers + .unbind('mouseenter.tsuitheme mouseleave.tsuitheme') // remove hover + .removeClass(themes.hover + ' ' + remove + ' ' + themes.active) + .filter('.' + ts.css.filterRow) + .removeClass(themes.filterRow); + $headers.find('.' + ts.css.icon).removeClass(themes.icons + ' ' + iconRmv); + } + }); + +})(jQuery); + +/*! Widget: columns */ +;(function ($) { + 'use strict'; + var ts = $.tablesorter || {}; + + ts.addWidget({ + id: 'columns', + priority: 30, + options : { + columns : [ 'primary', 'secondary', 'tertiary' ] + }, + format: function(table, c, wo) { + var $tbody, tbodyIndex, $rows, rows, $row, $cells, remove, indx, + $table = c.$table, + $tbodies = c.$tbodies, + sortList = c.sortList, + len = sortList.length, + // removed c.widgetColumns support + css = wo && wo.columns || [ 'primary', 'secondary', 'tertiary' ], + last = css.length - 1; + remove = css.join(' '); + // check if there is a sort (on initialization there may not be one) + for (tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) { + $tbody = ts.processTbody(table, $tbodies.eq(tbodyIndex), true); // detach tbody + $rows = $tbody.children('tr'); + // loop through the visible rows + $rows.each(function() { + $row = $(this); + if (this.style.display !== 'none') { + // remove all columns class names + $cells = $row.children().removeClass(remove); + // add appropriate column class names + if (sortList && sortList[0]) { + // primary sort column class + $cells.eq(sortList[0][0]).addClass(css[0]); + if (len > 1) { + for (indx = 1; indx < len; indx++) { + // secondary, tertiary, etc sort column classes + $cells.eq(sortList[indx][0]).addClass( css[indx] || css[last] ); + } + } + } + } + }); + ts.processTbody(table, $tbody, false); + } + // add classes to thead and tfoot + rows = wo.columns_thead !== false ? [ 'thead tr' ] : []; + if (wo.columns_tfoot !== false) { + rows.push('tfoot tr'); + } + if (rows.length) { + $rows = $table.find( rows.join(',') ).children().removeClass(remove); + if (len) { + for (indx = 0; indx < len; indx++) { + // add primary. secondary, tertiary, etc sort column classes + $rows.filter('[data-column="' + sortList[indx][0] + '"]').addClass(css[indx] || css[last]); + } + } + } + }, + remove: function(table, c, wo) { + var tbodyIndex, $tbody, + $tbodies = c.$tbodies, + remove = (wo.columns || [ 'primary', 'secondary', 'tertiary' ]).join(' '); + c.$headers.removeClass(remove); + c.$table.children('tfoot').children('tr').children('th, td').removeClass(remove); + for (tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) { + $tbody = ts.processTbody(table, $tbodies.eq(tbodyIndex), true); // remove tbody + $tbody.children('tr').each(function() { + $(this).children().removeClass(remove); + }); + ts.processTbody(table, $tbody, false); // restore tbody + } + } + }); + +})(jQuery); + +/*! Widget: filter - updated 11/10/2015 (v2.24.4) *//* + * Requires tablesorter v2.8+ and jQuery 1.7+ + * by Rob Garrison + */ +;( function ( $ ) { + 'use strict'; + var tsf, tsfRegex, + ts = $.tablesorter || {}, + tscss = ts.css; + + $.extend( tscss, { + filterRow : 'tablesorter-filter-row', + filter : 'tablesorter-filter', + filterDisabled : 'disabled', + filterRowHide : 'hideme' + }); + + ts.addWidget({ + id: 'filter', + priority: 50, + options : { + filter_childRows : false, // if true, filter includes child row content in the search + filter_childByColumn : false, // ( filter_childRows must be true ) if true = search child rows by column; false = search all child row text grouped + filter_childWithSibs : true, // if true, include matching child row siblings + filter_columnFilters : true, // if true, a filter will be added to the top of each table column + filter_columnAnyMatch: true, // if true, allows using '#:{query}' in AnyMatch searches ( column:query ) + filter_cellFilter : '', // css class name added to the filter cell ( string or array ) + filter_cssFilter : '', // css class name added to the filter row & each input in the row ( tablesorter-filter is ALWAYS added ) + filter_defaultFilter : {}, // add a default column filter type '~{query}' to make fuzzy searches default; '{q1} AND {q2}' to make all searches use a logical AND. + filter_excludeFilter : {}, // filters to exclude, per column + filter_external : '', // jQuery selector string ( or jQuery object ) of external filters + filter_filteredRow : 'filtered', // class added to filtered rows; needed by pager plugin + filter_formatter : null, // add custom filter elements to the filter row + filter_functions : null, // add custom filter functions using this option + filter_hideEmpty : true, // hide filter row when table is empty + filter_hideFilters : false, // collapse filter row when mouse leaves the area + filter_ignoreCase : true, // if true, make all searches case-insensitive + filter_liveSearch : true, // if true, search column content while the user types ( with a delay ) + filter_onlyAvail : 'filter-onlyAvail', // a header with a select dropdown & this class name will only show available ( visible ) options within the drop down + filter_placeholder : { search : '', select : '' }, // default placeholder text ( overridden by any header 'data-placeholder' setting ) + filter_reset : null, // jQuery selector string of an element used to reset the filters + filter_saveFilters : false, // Use the $.tablesorter.storage utility to save the most recent filters + filter_searchDelay : 300, // typing delay in milliseconds before starting a search + filter_searchFiltered: true, // allow searching through already filtered rows in special circumstances; will speed up searching in large tables if true + filter_selectSource : null, // include a function to return an array of values to be added to the column filter select + filter_startsWith : false, // if true, filter start from the beginning of the cell contents + filter_useParsedData : false, // filter all data using parsed content + filter_serversideFiltering : false, // if true, must perform server-side filtering b/c client-side filtering is disabled, but the ui and events will still be used. + filter_defaultAttrib : 'data-value', // data attribute in the header cell that contains the default filter value + filter_selectSourceSeparator : '|' // filter_selectSource array text left of the separator is added to the option value, right into the option text + }, + format: function( table, c, wo ) { + if ( !c.$table.hasClass( 'hasFilters' ) ) { + tsf.init( table, c, wo ); + } + }, + remove: function( table, c, wo, refreshing ) { + var tbodyIndex, $tbody, + $table = c.$table, + $tbodies = c.$tbodies, + events = 'addRows updateCell update updateRows updateComplete appendCache filterReset filterEnd search ' + .split( ' ' ).join( c.namespace + 'filter ' ); + $table + .removeClass( 'hasFilters' ) + // add filter namespace to all BUT search + .unbind( events.replace( ts.regex.spaces, ' ' ) ) + // remove the filter row even if refreshing, because the column might have been moved + .find( '.' + tscss.filterRow ).remove(); + if ( refreshing ) { return; } + for ( tbodyIndex = 0; tbodyIndex < $tbodies.length; tbodyIndex++ ) { + $tbody = ts.processTbody( table, $tbodies.eq( tbodyIndex ), true ); // remove tbody + $tbody.children().removeClass( wo.filter_filteredRow ).show(); + ts.processTbody( table, $tbody, false ); // restore tbody + } + if ( wo.filter_reset ) { + $( document ).undelegate( wo.filter_reset, 'click' + c.namespace + 'filter' ); + } + } + }); + + tsf = ts.filter = { + + // regex used in filter 'check' functions - not for general use and not documented + regex: { + regex : /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})?$/, // regex to test for regex + child : /tablesorter-childRow/, // child row class name; this gets updated in the script + filtered : /filtered/, // filtered (hidden) row class name; updated in the script + type : /undefined|number/, // check type + exact : /(^[\"\'=]+)|([\"\'=]+$)/g, // exact match (allow '==') + operators : /[<>=]/g, // replace operators + query : '(q|query)', // replace filter queries + wild01 : /\?/g, // wild card match 0 or 1 + wild0More : /\*/g, // wild care match 0 or more + quote : /\"/g, + isNeg1 : /(>=?\s*-\d)/, + isNeg2 : /(<=?\s*\d)/ + }, + // function( c, data ) { } + // c = table.config + // data.$row = jQuery object of the row currently being processed + // data.$cells = jQuery object of all cells within the current row + // data.filters = array of filters for all columns ( some may be undefined ) + // data.filter = filter for the current column + // data.iFilter = same as data.filter, except lowercase ( if wo.filter_ignoreCase is true ) + // data.exact = table cell text ( or parsed data if column parser enabled; may be a number & not a string ) + // data.iExact = same as data.exact, except lowercase ( if wo.filter_ignoreCase is true; may be a number & not a string ) + // data.cache = table cell text from cache, so it has been parsed ( & in all lower case if c.ignoreCase is true ) + // data.cacheArray = An array of parsed content from each table cell in the row being processed + // data.index = column index; table = table element ( DOM ) + // data.parsed = array ( by column ) of boolean values ( from filter_useParsedData or 'filter-parsed' class ) + types: { + or : function( c, data, vars ) { + // look for "|", but not if it is inside of a regular expression + if ( ( tsfRegex.orTest.test( data.iFilter ) || tsfRegex.orSplit.test( data.filter ) ) && + // this test for regex has potential to slow down the overall search + !tsfRegex.regex.test( data.filter ) ) { + var indx, filterMatched, query, regex, + // duplicate data but split filter + data2 = $.extend( {}, data ), + filter = data.filter.split( tsfRegex.orSplit ), + iFilter = data.iFilter.split( tsfRegex.orSplit ), + len = filter.length; + for ( indx = 0; indx < len; indx++ ) { + data2.nestedFilters = true; + data2.filter = '' + ( tsf.parseFilter( c, filter[ indx ], data ) || '' ); + data2.iFilter = '' + ( tsf.parseFilter( c, iFilter[ indx ], data ) || '' ); + query = '(' + ( tsf.parseFilter( c, data2.filter, data ) || '' ) + ')'; + try { + // use try/catch, because query may not be a valid regex if "|" is contained within a partial regex search, + // e.g "/(Alex|Aar" -> Uncaught SyntaxError: Invalid regular expression: /(/(Alex)/: Unterminated group + regex = new RegExp( data.isMatch ? query : '^' + query + '$', c.widgetOptions.filter_ignoreCase ? 'i' : '' ); + // filterMatched = data2.filter === '' && indx > 0 ? true + // look for an exact match with the 'or' unless the 'filter-match' class is found + filterMatched = regex.test( data2.exact ) || tsf.processTypes( c, data2, vars ); + if ( filterMatched ) { + return filterMatched; + } + } catch ( error ) { + return null; + } + } + // may be null from processing types + return filterMatched || false; + } + return null; + }, + // Look for an AND or && operator ( logical and ) + and : function( c, data, vars ) { + if ( tsfRegex.andTest.test( data.filter ) ) { + var indx, filterMatched, result, query, regex, + // duplicate data but split filter + data2 = $.extend( {}, data ), + filter = data.filter.split( tsfRegex.andSplit ), + iFilter = data.iFilter.split( tsfRegex.andSplit ), + len = filter.length; + for ( indx = 0; indx < len; indx++ ) { + data2.nestedFilters = true; + data2.filter = '' + ( tsf.parseFilter( c, filter[ indx ], data ) || '' ); + data2.iFilter = '' + ( tsf.parseFilter( c, iFilter[ indx ], data ) || '' ); + query = ( '(' + ( tsf.parseFilter( c, data2.filter, data ) || '' ) + ')' ) + // replace wild cards since /(a*)/i will match anything + .replace( tsfRegex.wild01, '\\S{1}' ).replace( tsfRegex.wild0More, '\\S*' ); + try { + // use try/catch just in case RegExp is invalid + regex = new RegExp( data.isMatch ? query : '^' + query + '$', c.widgetOptions.filter_ignoreCase ? 'i' : '' ); + // look for an exact match with the 'and' unless the 'filter-match' class is found + result = ( regex.test( data2.exact ) || tsf.processTypes( c, data2, vars ) ); + if ( indx === 0 ) { + filterMatched = result; + } else { + filterMatched = filterMatched && result; + } + } catch ( error ) { + return null; + } + } + // may be null from processing types + return filterMatched || false; + } + return null; + }, + // Look for regex + regex: function( c, data ) { + if ( tsfRegex.regex.test( data.filter ) ) { + var matches, + // cache regex per column for optimal speed + regex = data.filter_regexCache[ data.index ] || tsfRegex.regex.exec( data.filter ), + isRegex = regex instanceof RegExp; + try { + if ( !isRegex ) { + // force case insensitive search if ignoreCase option set? + // if ( c.ignoreCase && !regex[2] ) { regex[2] = 'i'; } + data.filter_regexCache[ data.index ] = regex = new RegExp( regex[1], regex[2] ); + } + matches = regex.test( data.exact ); + } catch ( error ) { + matches = false; + } + return matches; + } + return null; + }, + // Look for operators >, >=, < or <= + operators: function( c, data ) { + // ignore empty strings... because '' < 10 is true + if ( tsfRegex.operTest.test( data.iFilter ) && data.iExact !== '' ) { + var cachedValue, result, txt, + table = c.table, + parsed = data.parsed[ data.index ], + query = ts.formatFloat( data.iFilter.replace( tsfRegex.operators, '' ), table ), + parser = c.parsers[ data.index ], + savedSearch = query; + // parse filter value in case we're comparing numbers ( dates ) + if ( parsed || parser.type === 'numeric' ) { + txt = $.trim( '' + data.iFilter.replace( tsfRegex.operators, '' ) ); + result = tsf.parseFilter( c, txt, data, true ); + query = ( typeof result === 'number' && result !== '' && !isNaN( result ) ) ? result : query; + } + // iExact may be numeric - see issue #149; + // check if cached is defined, because sometimes j goes out of range? ( numeric columns ) + if ( ( parsed || parser.type === 'numeric' ) && !isNaN( query ) && + typeof data.cache !== 'undefined' ) { + cachedValue = data.cache; + } else { + txt = isNaN( data.iExact ) ? data.iExact.replace( ts.regex.nondigit, '' ) : data.iExact; + cachedValue = ts.formatFloat( txt, table ); + } + if ( tsfRegex.gtTest.test( data.iFilter ) ) { + result = tsfRegex.gteTest.test( data.iFilter ) ? cachedValue >= query : cachedValue > query; + } else if ( tsfRegex.ltTest.test( data.iFilter ) ) { + result = tsfRegex.lteTest.test( data.iFilter ) ? cachedValue <= query : cachedValue < query; + } + // keep showing all rows if nothing follows the operator + if ( !result && savedSearch === '' ) { + result = true; + } + return result; + } + return null; + }, + // Look for a not match + notMatch: function( c, data ) { + if ( tsfRegex.notTest.test( data.iFilter ) ) { + var indx, + txt = data.iFilter.replace( '!', '' ), + filter = tsf.parseFilter( c, txt, data ) || ''; + if ( tsfRegex.exact.test( filter ) ) { + // look for exact not matches - see #628 + filter = filter.replace( tsfRegex.exact, '' ); + return filter === '' ? true : $.trim( filter ) !== data.iExact; + } else { + indx = data.iExact.search( $.trim( filter ) ); + return filter === '' ? true : !( c.widgetOptions.filter_startsWith ? indx === 0 : indx >= 0 ); + } + } + return null; + }, + // Look for quotes or equals to get an exact match; ignore type since iExact could be numeric + exact: function( c, data ) { + /*jshint eqeqeq:false */ + if ( tsfRegex.exact.test( data.iFilter ) ) { + var txt = data.iFilter.replace( tsfRegex.exact, '' ), + filter = tsf.parseFilter( c, txt, data ) || ''; + return data.anyMatch ? $.inArray( filter, data.rowArray ) >= 0 : filter == data.iExact; + } + return null; + }, + // Look for a range ( using ' to ' or ' - ' ) - see issue #166; thanks matzhu! + range : function( c, data ) { + if ( tsfRegex.toTest.test( data.iFilter ) ) { + var result, tmp, range1, range2, + table = c.table, + index = data.index, + parsed = data.parsed[index], + // make sure the dash is for a range and not indicating a negative number + query = data.iFilter.split( tsfRegex.toSplit ); + + tmp = query[0].replace( ts.regex.nondigit, '' ) || ''; + range1 = ts.formatFloat( tsf.parseFilter( c, tmp, data ), table ); + tmp = query[1].replace( ts.regex.nondigit, '' ) || ''; + range2 = ts.formatFloat( tsf.parseFilter( c, tmp, data ), table ); + // parse filter value in case we're comparing numbers ( dates ) + if ( parsed || c.parsers[ index ].type === 'numeric' ) { + result = c.parsers[ index ].format( '' + query[0], table, c.$headers.eq( index ), index ); + range1 = ( result !== '' && !isNaN( result ) ) ? result : range1; + result = c.parsers[ index ].format( '' + query[1], table, c.$headers.eq( index ), index ); + range2 = ( result !== '' && !isNaN( result ) ) ? result : range2; + } + if ( ( parsed || c.parsers[ index ].type === 'numeric' ) && !isNaN( range1 ) && !isNaN( range2 ) ) { + result = data.cache; + } else { + tmp = isNaN( data.iExact ) ? data.iExact.replace( ts.regex.nondigit, '' ) : data.iExact; + result = ts.formatFloat( tmp, table ); + } + if ( range1 > range2 ) { + tmp = range1; range1 = range2; range2 = tmp; // swap + } + return ( result >= range1 && result <= range2 ) || ( range1 === '' || range2 === '' ); + } + return null; + }, + // Look for wild card: ? = single, * = multiple, or | = logical OR + wild : function( c, data ) { + if ( tsfRegex.wildOrTest.test( data.iFilter ) ) { + var query = '' + ( tsf.parseFilter( c, data.iFilter, data ) || '' ); + // look for an exact match with the 'or' unless the 'filter-match' class is found + if ( !tsfRegex.wildTest.test( query ) && data.nestedFilters ) { + query = data.isMatch ? query : '^(' + query + ')$'; + } + // parsing the filter may not work properly when using wildcards =/ + try { + return new RegExp( + query.replace( tsfRegex.wild01, '\\S{1}' ).replace( tsfRegex.wild0More, '\\S*' ), + c.widgetOptions.filter_ignoreCase ? 'i' : '' + ) + .test( data.exact ); + } catch ( error ) { + return null; + } + } + return null; + }, + // fuzzy text search; modified from https://github.com/mattyork/fuzzy ( MIT license ) + fuzzy: function( c, data ) { + if ( tsfRegex.fuzzyTest.test( data.iFilter ) ) { + var indx, + patternIndx = 0, + len = data.iExact.length, + txt = data.iFilter.slice( 1 ), + pattern = tsf.parseFilter( c, txt, data ) || ''; + for ( indx = 0; indx < len; indx++ ) { + if ( data.iExact[ indx ] === pattern[ patternIndx ] ) { + patternIndx += 1; + } + } + return patternIndx === pattern.length; + } + return null; + } + }, + init: function( table, c, wo ) { + // filter language options + ts.language = $.extend( true, {}, { + to : 'to', + or : 'or', + and : 'and' + }, ts.language ); + + var options, string, txt, $header, column, filters, val, fxn, noSelect; + c.$table.addClass( 'hasFilters' ); + + // define timers so using clearTimeout won't cause an undefined error + wo.filter_searchTimer = null; + wo.filter_initTimer = null; + wo.filter_formatterCount = 0; + wo.filter_formatterInit = []; + wo.filter_anyColumnSelector = '[data-column="all"],[data-column="any"]'; + wo.filter_multipleColumnSelector = '[data-column*="-"],[data-column*=","]'; + + val = '\\{' + tsfRegex.query + '\\}'; + $.extend( tsfRegex, { + child : new RegExp( c.cssChildRow ), + filtered : new RegExp( wo.filter_filteredRow ), + alreadyFiltered : new RegExp( '(\\s+(' + ts.language.or + '|-|' + ts.language.to + ')\\s+)', 'i' ), + toTest : new RegExp( '\\s+(-|' + ts.language.to + ')\\s+', 'i' ), + toSplit : new RegExp( '(?:\\s+(?:-|' + ts.language.to + ')\\s+)', 'gi' ), + andTest : new RegExp( '\\s+(' + ts.language.and + '|&&)\\s+', 'i' ), + andSplit : new RegExp( '(?:\\s+(?:' + ts.language.and + '|&&)\\s+)', 'gi' ), + orTest : /\|/, + orSplit : new RegExp( '(?:\\s+(?:' + ts.language.or + ')\\s+|\\|)', 'gi' ), + iQuery : new RegExp( val, 'i' ), + igQuery : new RegExp( val, 'ig' ), + operTest : /^[<>]=?/, + gtTest : />/, + gteTest : />=/, + ltTest : /' + + ( $header.data( 'placeholder' ) || + $header.attr( 'data-placeholder' ) || + wo.filter_placeholder.select || + '' + ) + + '' : ''; + val = string; + txt = string; + if ( string.indexOf( wo.filter_selectSourceSeparator ) >= 0 ) { + val = string.split( wo.filter_selectSourceSeparator ); + txt = val[1]; + val = val[0]; + } + options += ''; + } + } + c.$table + .find( 'thead' ) + .find( 'select.' + tscss.filter + '[data-column="' + column + '"]' ) + .append( options ); + txt = wo.filter_selectSource; + fxn = typeof txt === 'function' ? true : ts.getColumnData( table, txt, column ); + if ( fxn ) { + // updating so the extra options are appended + tsf.buildSelect( c.table, column, '', true, $header.hasClass( wo.filter_onlyAvail ) ); + } + } + } + } + } + // not really updating, but if the column has both the 'filter-select' class & + // filter_functions set to true, it would append the same options twice. + tsf.buildDefault( table, true ); + + tsf.bindSearch( table, c.$table.find( '.' + tscss.filter ), true ); + if ( wo.filter_external ) { + tsf.bindSearch( table, wo.filter_external ); + } + + if ( wo.filter_hideFilters ) { + tsf.hideFilters( c ); + } + + // show processing icon + if ( c.showProcessing ) { + txt = 'filterStart filterEnd '.split( ' ' ).join( c.namespace + 'filter ' ); + c.$table + .unbind( txt.replace( ts.regex.spaces, ' ' ) ) + .bind( txt, function( event, columns ) { + // only add processing to certain columns to all columns + $header = ( columns ) ? + c.$table + .find( '.' + tscss.header ) + .filter( '[data-column]' ) + .filter( function() { + return columns[ $( this ).data( 'column' ) ] !== ''; + }) : ''; + ts.isProcessing( table, event.type === 'filterStart', columns ? $header : '' ); + }); + } + + // set filtered rows count ( intially unfiltered ) + c.filteredRows = c.totalRows; + + // add default values + txt = 'tablesorter-initialized pagerBeforeInitialized '.split( ' ' ).join( c.namespace + 'filter ' ); + c.$table + .unbind( txt.replace( ts.regex.spaces, ' ' ) ) + .bind( txt, function() { + // redefine 'wo' as it does not update properly inside this callback + var wo = this.config.widgetOptions; + filters = tsf.setDefaults( table, c, wo ) || []; + if ( filters.length ) { + // prevent delayInit from triggering a cache build if filters are empty + if ( !( c.delayInit && filters.join( '' ) === '' ) ) { + ts.setFilters( table, filters, true ); + } + } + c.$table.trigger( 'filterFomatterUpdate' ); + // trigger init after setTimeout to prevent multiple filterStart/End/Init triggers + setTimeout( function() { + if ( !wo.filter_initialized ) { + tsf.filterInitComplete( c ); + } + }, 100 ); + }); + // if filter widget is added after pager has initialized; then set filter init flag + if ( c.pager && c.pager.initialized && !wo.filter_initialized ) { + c.$table.trigger( 'filterFomatterUpdate' ); + setTimeout( function() { + tsf.filterInitComplete( c ); + }, 100 ); + } + }, + // $cell parameter, but not the config, is passed to the filter_formatters, + // so we have to work with it instead + formatterUpdated: function( $cell, column ) { + // prevent error if $cell is undefined - see #1056 + var wo = $cell && $cell.closest( 'table' )[0].config.widgetOptions; + if ( wo && !wo.filter_initialized ) { + // add updates by column since this function + // may be called numerous times before initialization + wo.filter_formatterInit[ column ] = 1; + } + }, + filterInitComplete: function( c ) { + var indx, len, + wo = c.widgetOptions, + count = 0, + completed = function() { + wo.filter_initialized = true; + c.$table.trigger( 'filterInit', c ); + tsf.findRows( c.table, c.$table.data( 'lastSearch' ) || [] ); + }; + if ( $.isEmptyObject( wo.filter_formatter ) ) { + completed(); + } else { + len = wo.filter_formatterInit.length; + for ( indx = 0; indx < len; indx++ ) { + if ( wo.filter_formatterInit[ indx ] === 1 ) { + count++; + } + } + clearTimeout( wo.filter_initTimer ); + if ( !wo.filter_initialized && count === wo.filter_formatterCount ) { + // filter widget initialized + completed(); + } else if ( !wo.filter_initialized ) { + // fall back in case a filter_formatter doesn't call + // $.tablesorter.filter.formatterUpdated( $cell, column ), and the count is off + wo.filter_initTimer = setTimeout( function() { + completed(); + }, 500 ); + } + } + }, + // encode or decode filters for storage; see #1026 + processFilters: function( filters, encode ) { + var indx, + mode = encode ? encodeURIComponent : decodeURIComponent, + len = filters.length; + for ( indx = 0; indx < len; indx++ ) { + filters[ indx ] = mode( filters[ indx ] ); + } + return filters; + }, + setDefaults: function( table, c, wo ) { + var isArray, saved, indx, col, $filters, + // get current ( default ) filters + filters = ts.getFilters( table ) || []; + if ( wo.filter_saveFilters && ts.storage ) { + saved = ts.storage( table, 'tablesorter-filters' ) || []; + isArray = $.isArray( saved ); + // make sure we're not just getting an empty array + if ( !( isArray && saved.join( '' ) === '' || !isArray ) ) { + filters = tsf.processFilters( saved ); + } + } + // if no filters saved, then check default settings + if ( filters.join( '' ) === '' ) { + // allow adding default setting to external filters + $filters = c.$headers.add( wo.filter_$externalFilters ) + .filter( '[' + wo.filter_defaultAttrib + ']' ); + for ( indx = 0; indx <= c.columns; indx++ ) { + // include data-column='all' external filters + col = indx === c.columns ? 'all' : indx; + filters[indx] = $filters + .filter( '[data-column="' + col + '"]' ) + .attr( wo.filter_defaultAttrib ) || filters[indx] || ''; + } + } + c.$table.data( 'lastSearch', filters ); + return filters; + }, + parseFilter: function( c, filter, data, parsed ) { + return parsed || data.parsed[ data.index ] ? + c.parsers[ data.index ].format( filter, c.table, [], data.index ) : + filter; + }, + buildRow: function( table, c, wo ) { + var $filter, col, column, $header, makeSelect, disabled, name, ffxn, tmp, + // c.columns defined in computeThIndexes() + cellFilter = wo.filter_cellFilter, + columns = c.columns, + arry = $.isArray( cellFilter ), + buildFilter = ''; + for ( column = 0; column < columns; column++ ) { + if ( c.$headerIndexed[ column ].length ) { + buildFilter += ' 1 ) { + buildFilter += ' colspan="' + tmp + '"'; + } + if ( arry ) { + buildFilter += ( cellFilter[ column ] ? ' class="' + cellFilter[ column ] + '"' : '' ); + } else { + buildFilter += ( cellFilter !== '' ? ' class="' + cellFilter + '"' : '' ); + } + buildFilter += '>'; + } + } + c.$filters = $( buildFilter += '' ) + .appendTo( c.$table.children( 'thead' ).eq( 0 ) ) + .children( 'td' ); + // build each filter input + for ( column = 0; column < columns; column++ ) { + disabled = false; + // assuming last cell of a column is the main column + $header = c.$headerIndexed[ column ]; + if ( $header && $header.length ) { + $filter = c.$filters.filter( '[data-column="' + column + '"]' ); + ffxn = ts.getColumnData( table, wo.filter_functions, column ); + makeSelect = ( wo.filter_functions && ffxn && typeof ffxn !== 'function' ) || + $header.hasClass( 'filter-select' ); + // get data from jQuery data, metadata, headers option or header class name + col = ts.getColumnData( table, c.headers, column ); + disabled = ts.getData( $header[0], col, 'filter' ) === 'false' || + ts.getData( $header[0], col, 'parser' ) === 'false'; + + if ( makeSelect ) { + buildFilter = $( '' ).appendTo( $filter ); + } + if ( buildFilter ) { + tmp = $header.data( 'placeholder' ) || + $header.attr( 'data-placeholder' ) || + wo.filter_placeholder.search || ''; + buildFilter.attr( 'placeholder', tmp ); + } + } + if ( buildFilter ) { + // add filter class name + name = ( $.isArray( wo.filter_cssFilter ) ? + ( typeof wo.filter_cssFilter[column] !== 'undefined' ? wo.filter_cssFilter[column] || '' : '' ) : + wo.filter_cssFilter ) || ''; + buildFilter.addClass( tscss.filter + ' ' + name ).attr( 'data-column', column ); + if ( disabled ) { + buildFilter.attr( 'placeholder', '' ).addClass( tscss.filterDisabled )[0].disabled = true; + } + } + } + } + }, + bindSearch: function( table, $el, internal ) { + table = $( table )[0]; + $el = $( $el ); // allow passing a selector string + if ( !$el.length ) { return; } + var tmp, + c = table.config, + wo = c.widgetOptions, + namespace = c.namespace + 'filter', + $ext = wo.filter_$externalFilters; + if ( internal !== true ) { + // save anyMatch element + tmp = wo.filter_anyColumnSelector + ',' + wo.filter_multipleColumnSelector; + wo.filter_$anyMatch = $el.filter( tmp ); + if ( $ext && $ext.length ) { + wo.filter_$externalFilters = wo.filter_$externalFilters.add( $el ); + } else { + wo.filter_$externalFilters = $el; + } + // update values ( external filters added after table initialization ) + ts.setFilters( table, c.$table.data( 'lastSearch' ) || [], internal === false ); + } + // unbind events + tmp = ( 'keypress keyup search change '.split( ' ' ).join( namespace + ' ' ) ); + $el + // use data attribute instead of jQuery data since the head is cloned without including + // the data/binding + .attr( 'data-lastSearchTime', new Date().getTime() ) + .unbind( tmp.replace( ts.regex.spaces, ' ' ) ) + // include change for select - fixes #473 + .bind( 'keyup' + namespace, function( event ) { + $( this ).attr( 'data-lastSearchTime', new Date().getTime() ); + // emulate what webkit does.... escape clears the filter + if ( event.which === 27 ) { + this.value = ''; + // live search + } else if ( wo.filter_liveSearch === false ) { + return; + // don't return if the search value is empty ( all rows need to be revealed ) + } else if ( this.value !== '' && ( + // liveSearch can contain a min value length; ignore arrow and meta keys, but allow backspace + ( typeof wo.filter_liveSearch === 'number' && this.value.length < wo.filter_liveSearch ) || + // let return & backspace continue on, but ignore arrows & non-valid characters + ( event.which !== 13 && event.which !== 8 && + ( event.which < 32 || ( event.which >= 37 && event.which <= 40 ) ) ) ) ) { + return; + } + // change event = no delay; last true flag tells getFilters to skip newest timed input + tsf.searching( table, true, true ); + }) + .bind( 'search change keypress '.split( ' ' ).join( namespace + ' ' ), function( event ) { + // don't get cached data, in case data-column changes dynamically + var column = parseInt( $( this ).attr( 'data-column' ), 10 ); + // don't allow 'change' event to process if the input value is the same - fixes #685 + if ( wo.filter_initialized && ( event.which === 13 || event.type === 'search' || + event.type === 'change' && this.value !== c.lastSearch[column] ) ) { + event.preventDefault(); + // init search with no delay + $( this ).attr( 'data-lastSearchTime', new Date().getTime() ); + tsf.searching( table, false, true ); + } + }); + }, + searching: function( table, filter, skipFirst ) { + var wo = table.config.widgetOptions; + clearTimeout( wo.filter_searchTimer ); + if ( typeof filter === 'undefined' || filter === true ) { + // delay filtering + wo.filter_searchTimer = setTimeout( function() { + tsf.checkFilters( table, filter, skipFirst ); + }, wo.filter_liveSearch ? wo.filter_searchDelay : 10 ); + } else { + // skip delay + tsf.checkFilters( table, filter, skipFirst ); + } + }, + checkFilters: function( table, filter, skipFirst ) { + var c = table.config, + wo = c.widgetOptions, + filterArray = $.isArray( filter ), + filters = ( filterArray ) ? filter : ts.getFilters( table, true ), + combinedFilters = ( filters || [] ).join( '' ); // combined filter values + // prevent errors if delay init is set + if ( $.isEmptyObject( c.cache ) ) { + // update cache if delayInit set & pager has initialized ( after user initiates a search ) + if ( c.delayInit && c.pager && c.pager.initialized ) { + ts.updateCache( c, function() { + tsf.checkFilters( table, false, skipFirst ); + }); + } + return; + } + // add filter array back into inputs + if ( filterArray ) { + ts.setFilters( table, filters, false, skipFirst !== true ); + if ( !wo.filter_initialized ) { c.lastCombinedFilter = ''; } + } + if ( wo.filter_hideFilters ) { + // show/hide filter row as needed + c.$table + .find( '.' + tscss.filterRow ) + .trigger( combinedFilters === '' ? 'mouseleave' : 'mouseenter' ); + } + // return if the last search is the same; but filter === false when updating the search + // see example-widget-filter.html filter toggle buttons + if ( c.lastCombinedFilter === combinedFilters && filter !== false ) { + return; + } else if ( filter === false ) { + // force filter refresh + c.lastCombinedFilter = null; + c.lastSearch = []; + } + // convert filters to strings - see #1070 + filters = Array.prototype.map ? + filters.map( String ) : + // for IE8 & older browsers - maybe not the best method + filters.join( '\u0000' ).split( '\u0000' ); + + if ( wo.filter_initialized ) { + c.$table.trigger( 'filterStart', [ filters ] ); + } + if ( c.showProcessing ) { + // give it time for the processing icon to kick in + setTimeout( function() { + tsf.findRows( table, filters, combinedFilters ); + return false; + }, 30 ); + } else { + tsf.findRows( table, filters, combinedFilters ); + return false; + } + }, + hideFilters: function( c, $table ) { + var timer, + $row = ( $table || c.$table ).find( '.' + tscss.filterRow ).addClass( tscss.filterRowHide ); + $row + .bind( 'mouseenter mouseleave', function( e ) { + // save event object - http://bugs.jquery.com/ticket/12140 + var event = e, + $filterRow = $( this ); + clearTimeout( timer ); + timer = setTimeout( function() { + if ( /enter|over/.test( event.type ) ) { + $filterRow.removeClass( tscss.filterRowHide ); + } else { + // don't hide if input has focus + // $( ':focus' ) needs jQuery 1.6+ + if ( $( document.activeElement ).closest( 'tr' )[0] !== $filterRow[0] ) { + // don't hide row if any filter has a value + if ( c.lastCombinedFilter === '' ) { + $filterRow.addClass( tscss.filterRowHide ); + } + } + } + }, 200 ); + }) + .find( 'input, select' ).bind( 'focus blur', function( e ) { + var event = e, + $row = $( this ).closest( 'tr' ); + clearTimeout( timer ); + timer = setTimeout( function() { + clearTimeout( timer ); + // don't hide row if any filter has a value + if ( ts.getFilters( c.$table ).join( '' ) === '' ) { + $row.toggleClass( tscss.filterRowHide, event.type !== 'focus' ); + } + }, 200 ); + }); + }, + defaultFilter: function( filter, mask ) { + if ( filter === '' ) { return filter; } + var regex = tsfRegex.iQuery, + maskLen = mask.match( tsfRegex.igQuery ).length, + query = maskLen > 1 ? $.trim( filter ).split( /\s/ ) : [ $.trim( filter ) ], + len = query.length - 1, + indx = 0, + val = mask; + if ( len < 1 && maskLen > 1 ) { + // only one 'word' in query but mask has >1 slots + query[1] = query[0]; + } + // replace all {query} with query words... + // if query = 'Bob', then convert mask from '!{query}' to '!Bob' + // if query = 'Bob Joe Frank', then convert mask '{q} OR {q}' to 'Bob OR Joe OR Frank' + while ( regex.test( val ) ) { + val = val.replace( regex, query[indx++] || '' ); + if ( regex.test( val ) && indx < len && ( query[indx] || '' ) !== '' ) { + val = mask.replace( regex, val ); + } + } + return val; + }, + getLatestSearch: function( $input ) { + if ( $input ) { + return $input.sort( function( a, b ) { + return $( b ).attr( 'data-lastSearchTime' ) - $( a ).attr( 'data-lastSearchTime' ); + }); + } + return $input || $(); + }, + multipleColumns: function( c, $input ) { + // look for multiple columns '1-3,4-6,8' in data-column + var temp, ranges, range, start, end, singles, i, indx, len, + wo = c.widgetOptions, + // only target 'all' column inputs on initialization + // & don't target 'all' column inputs if they don't exist + targets = wo.filter_initialized || !$input.filter( wo.filter_anyColumnSelector ).length, + columns = [], + val = $.trim( tsf.getLatestSearch( $input ).attr( 'data-column' ) || '' ); + if ( /^[0-9]+$/.test(val)) { + return parseInt( val, 10 ); + } + // process column range + if ( targets && /-/.test( val ) ) { + ranges = val.match( /(\d+)\s*-\s*(\d+)/g ); + len = ranges.length; + for ( indx = 0; indx < len; indx++ ) { + range = ranges[indx].split( /\s*-\s*/ ); + start = parseInt( range[0], 10 ) || 0; + end = parseInt( range[1], 10 ) || ( c.columns - 1 ); + if ( start > end ) { + temp = start; start = end; end = temp; // swap + } + if ( end >= c.columns ) { + end = c.columns - 1; + } + for ( ; start <= end; start++ ) { + columns.push( start ); + } + // remove processed range from val + val = val.replace( ranges[ indx ], '' ); + } + } + // process single columns + if ( targets && /,/.test( val ) ) { + singles = val.split( /\s*,\s*/ ); + len = singles.length; + for ( i = 0; i < len; i++ ) { + if ( singles[ i ] !== '' ) { + indx = parseInt( singles[ i ], 10 ); + if ( indx < c.columns ) { + columns.push( indx ); + } + } + } + } + // return all columns + if ( !columns.length ) { + for ( indx = 0; indx < c.columns; indx++ ) { + columns.push( indx ); + } + } + return columns; + }, + processTypes: function( c, data, vars ) { + var ffxn, + filterMatched = null, + matches = null; + for ( ffxn in tsf.types ) { + if ( $.inArray( ffxn, vars.excludeMatch ) < 0 && matches === null ) { + matches = tsf.types[ffxn]( c, data, vars ); + if ( matches !== null ) { + filterMatched = matches; + } + } + } + return filterMatched; + }, + processRow: function( c, data, vars ) { + var result, filterMatched, + fxn, ffxn, txt, + wo = c.widgetOptions, + showRow = true, + + // if wo.filter_$anyMatch data-column attribute is changed dynamically + // we don't want to do an "anyMatch" search on one column using data + // for the entire row - see #998 + columnIndex = wo.filter_$anyMatch && wo.filter_$anyMatch.length ? + // look for multiple columns '1-3,4-6,8' + tsf.multipleColumns( c, wo.filter_$anyMatch ) : + []; + + data.$cells = data.$row.children(); + + if ( data.anyMatchFlag && columnIndex.length > 1 ) { + data.anyMatch = true; + data.isMatch = true; + data.rowArray = data.$cells.map( function( i ) { + if ( $.inArray( i, columnIndex ) > -1 ) { + if ( data.parsed[ i ] ) { + txt = data.cacheArray[ i ]; + } else { + txt = data.rawArray[ i ]; + txt = $.trim( wo.filter_ignoreCase ? txt.toLowerCase() : txt ); + if ( c.sortLocaleCompare ) { + txt = ts.replaceAccents( txt ); + } + } + return txt; + } + }).get(); + data.filter = data.anyMatchFilter; + data.iFilter = data.iAnyMatchFilter; + data.exact = data.rowArray.join( ' ' ); + data.iExact = wo.filter_ignoreCase ? data.exact.toLowerCase() : data.exact; + data.cache = data.cacheArray.slice( 0, -1 ).join( ' ' ); + + vars.excludeMatch = vars.noAnyMatch; + filterMatched = tsf.processTypes( c, data, vars ); + + if ( filterMatched !== null ) { + showRow = filterMatched; + } else { + if ( wo.filter_startsWith ) { + showRow = false; + // data.rowArray may not contain all columns + columnIndex = Math.min( c.columns, data.rowArray.length ); + while ( !showRow && columnIndex > 0 ) { + columnIndex--; + showRow = showRow || data.rowArray[ columnIndex ].indexOf( data.iFilter ) === 0; + } + } else { + showRow = ( data.iExact + data.childRowText ).indexOf( data.iFilter ) >= 0; + } + } + data.anyMatch = false; + // no other filters to process + if ( data.filters.join( '' ) === data.filter ) { + return showRow; + } + } + + for ( columnIndex = 0; columnIndex < c.columns; columnIndex++ ) { + data.filter = data.filters[ columnIndex ]; + data.index = columnIndex; + + // filter types to exclude, per column + vars.excludeMatch = vars.excludeFilter[ columnIndex ]; + + // ignore if filter is empty or disabled + if ( data.filter ) { + data.cache = data.cacheArray[ columnIndex ]; + // check if column data should be from the cell or from parsed data + if ( wo.filter_useParsedData || data.parsed[ columnIndex ] ) { + data.exact = data.cache; + } else { + result = data.rawArray[ columnIndex ] || ''; + data.exact = c.sortLocaleCompare ? ts.replaceAccents( result ) : result; // issue #405 + } + data.iExact = !tsfRegex.type.test( typeof data.exact ) && wo.filter_ignoreCase ? + data.exact.toLowerCase() : data.exact; + + data.isMatch = c.$headerIndexed[ data.index ].hasClass( 'filter-match' ); + + result = showRow; // if showRow is true, show that row + + // in case select filter option has a different value vs text 'a - z|A through Z' + ffxn = wo.filter_columnFilters ? + c.$filters.add( c.$externalFilters ) + .filter( '[data-column="' + columnIndex + '"]' ) + .find( 'select option:selected' ) + .attr( 'data-function-name' ) || '' : ''; + // replace accents - see #357 + if ( c.sortLocaleCompare ) { + data.filter = ts.replaceAccents( data.filter ); + } + + // data.iFilter = case insensitive ( if wo.filter_ignoreCase is true ), + // data.filter = case sensitive + data.iFilter = wo.filter_ignoreCase ? ( data.filter || '' ).toLowerCase() : data.filter; + fxn = vars.functions[ columnIndex ]; + filterMatched = null; + if ( fxn ) { + if ( fxn === true ) { + // default selector uses exact match unless 'filter-match' class is found + filterMatched = data.isMatch ? + // data.iExact may be a number + ( '' + data.iExact ).search( data.iFilter ) >= 0 : + data.filter === data.exact; + } else if ( typeof fxn === 'function' ) { + // filter callback( exact cell content, parser normalized content, + // filter input value, column index, jQuery row object ) + filterMatched = fxn( data.exact, data.cache, data.filter, columnIndex, data.$row, c, data ); + } else if ( typeof fxn[ ffxn || data.filter ] === 'function' ) { + // selector option function + txt = ffxn || data.filter; + filterMatched = + fxn[ txt ]( data.exact, data.cache, data.filter, columnIndex, data.$row, c, data ); + } + } + if ( filterMatched === null ) { + // cycle through the different filters + // filters return a boolean or null if nothing matches + filterMatched = tsf.processTypes( c, data, vars ); + if ( filterMatched !== null ) { + result = filterMatched; + // Look for match, and add child row data for matching + } else { + txt = ( data.iExact + data.childRowText ) + .indexOf( tsf.parseFilter( c, data.iFilter, data ) ); + result = ( ( !wo.filter_startsWith && txt >= 0 ) || ( wo.filter_startsWith && txt === 0 ) ); + } + } else { + result = filterMatched; + } + showRow = ( result ) ? showRow : false; + } + } + return showRow; + }, + findRows: function( table, filters, combinedFilters ) { + if ( table.config.lastCombinedFilter === combinedFilters || + !table.config.widgetOptions.filter_initialized ) { + return; + } + var len, norm_rows, rowData, $rows, $row, rowIndex, tbodyIndex, $tbody, columnIndex, + isChild, childRow, lastSearch, showRow, showParent, time, val, indx, + notFiltered, searchFiltered, query, injected, res, id, txt, + storedFilters = $.extend( [], filters ), + c = table.config, + wo = c.widgetOptions, + // data object passed to filters; anyMatch is a flag for the filters + data = { + anyMatch: false, + filters: filters, + // regex filter type cache + filter_regexCache : [] + }, + vars = { + // anyMatch really screws up with these types of filters + noAnyMatch: [ 'range', 'notMatch', 'operators' ], + // cache filter variables that use ts.getColumnData in the main loop + functions : [], + excludeFilter : [], + defaultColFilter : [], + defaultAnyFilter : ts.getColumnData( table, wo.filter_defaultFilter, c.columns, true ) || '' + }; + + // parse columns after formatter, in case the class is added at that point + data.parsed = c.$headers.map( function( columnIndex ) { + return c.parsers && c.parsers[ columnIndex ] && + // force parsing if parser type is numeric + c.parsers[ columnIndex ].parsed || + // getData won't return 'parsed' if other 'filter-' class names exist + // ( e.g. ) + ts.getData && ts.getData( c.$headerIndexed[ columnIndex ], + ts.getColumnData( table, c.headers, columnIndex ), 'filter' ) === 'parsed' || + $( this ).hasClass( 'filter-parsed' ); + }).get(); + + for ( columnIndex = 0; columnIndex < c.columns; columnIndex++ ) { + vars.functions[ columnIndex ] = + ts.getColumnData( table, wo.filter_functions, columnIndex ); + vars.defaultColFilter[ columnIndex ] = + ts.getColumnData( table, wo.filter_defaultFilter, columnIndex ) || ''; + vars.excludeFilter[ columnIndex ] = + ( ts.getColumnData( table, wo.filter_excludeFilter, columnIndex, true ) || '' ).split( /\s+/ ); + } + + if ( c.debug ) { + console.log( 'Filter: Starting filter widget search', filters ); + time = new Date(); + } + // filtered rows count + c.filteredRows = 0; + c.totalRows = 0; + // combindedFilters are undefined on init + combinedFilters = ( storedFilters || [] ).join( '' ); + + for ( tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++ ) { + $tbody = ts.processTbody( table, c.$tbodies.eq( tbodyIndex ), true ); + // skip child rows & widget added ( removable ) rows - fixes #448 thanks to @hempel! + // $rows = $tbody.children( 'tr' ).not( c.selectorRemove ); + columnIndex = c.columns; + // convert stored rows into a jQuery object + norm_rows = c.cache[ tbodyIndex ].normalized; + $rows = $( $.map( norm_rows, function( el ) { + return el[ columnIndex ].$row.get(); + }) ); + + if ( combinedFilters === '' || wo.filter_serversideFiltering ) { + $rows + .removeClass( wo.filter_filteredRow ) + .not( '.' + c.cssChildRow ) + .css( 'display', '' ); + } else { + // filter out child rows + $rows = $rows.not( '.' + c.cssChildRow ); + len = $rows.length; + + if ( ( wo.filter_$anyMatch && wo.filter_$anyMatch.length ) || + typeof filters[c.columns] !== 'undefined' ) { + data.anyMatchFlag = true; + data.anyMatchFilter = '' + ( + filters[ c.columns ] || + wo.filter_$anyMatch && tsf.getLatestSearch( wo.filter_$anyMatch ).val() || + '' + ); + if ( wo.filter_columnAnyMatch ) { + // specific columns search + query = data.anyMatchFilter.split( tsfRegex.andSplit ); + injected = false; + for ( indx = 0; indx < query.length; indx++ ) { + res = query[ indx ].split( ':' ); + if ( res.length > 1 ) { + // make the column a one-based index ( non-developers start counting from one :P ) + id = parseInt( res[0], 10 ) - 1; + if ( id >= 0 && id < c.columns ) { // if id is an integer + filters[ id ] = res[1]; + query.splice( indx, 1 ); + indx--; + injected = true; + } + } + } + if ( injected ) { + data.anyMatchFilter = query.join( ' && ' ); + } + } + } + + // optimize searching only through already filtered rows - see #313 + searchFiltered = wo.filter_searchFiltered; + lastSearch = c.lastSearch || c.$table.data( 'lastSearch' ) || []; + if ( searchFiltered ) { + // cycle through all filters; include last ( columnIndex + 1 = match any column ). Fixes #669 + for ( indx = 0; indx < columnIndex + 1; indx++ ) { + val = filters[indx] || ''; + // break out of loop if we've already determined not to search filtered rows + if ( !searchFiltered ) { indx = columnIndex; } + // search already filtered rows if... + searchFiltered = searchFiltered && lastSearch.length && + // there are no changes from beginning of filter + val.indexOf( lastSearch[indx] || '' ) === 0 && + // if there is NOT a logical 'or', or range ( 'to' or '-' ) in the string + !tsfRegex.alreadyFiltered.test( val ) && + // if we are not doing exact matches, using '|' ( logical or ) or not '!' + !tsfRegex.exactTest.test( val ) && + // don't search only filtered if the value is negative + // ( '> -10' => '> -100' will ignore hidden rows ) + !( tsfRegex.isNeg1.test( val ) || tsfRegex.isNeg2.test( val ) ) && + // if filtering using a select without a 'filter-match' class ( exact match ) - fixes #593 + !( val !== '' && c.$filters && c.$filters.filter( '[data-column="' + indx + '"]' ).find( 'select' ).length && + !c.$headerIndexed[indx].hasClass( 'filter-match' ) ); + } + } + notFiltered = $rows.not( '.' + wo.filter_filteredRow ).length; + // can't search when all rows are hidden - this happens when looking for exact matches + if ( searchFiltered && notFiltered === 0 ) { searchFiltered = false; } + if ( c.debug ) { + console.log( 'Filter: Searching through ' + + ( searchFiltered && notFiltered < len ? notFiltered : 'all' ) + ' rows' ); + } + if ( data.anyMatchFlag ) { + if ( c.sortLocaleCompare ) { + // replace accents + data.anyMatchFilter = ts.replaceAccents( data.anyMatchFilter ); + } + if ( wo.filter_defaultFilter && tsfRegex.iQuery.test( vars.defaultAnyFilter ) ) { + data.anyMatchFilter = tsf.defaultFilter( data.anyMatchFilter, vars.defaultAnyFilter ); + // clear search filtered flag because default filters are not saved to the last search + searchFiltered = false; + } + // make iAnyMatchFilter lowercase unless both filter widget & core ignoreCase options are true + // when c.ignoreCase is true, the cache contains all lower case data + data.iAnyMatchFilter = !( wo.filter_ignoreCase && c.ignoreCase ) ? + data.anyMatchFilter : + data.anyMatchFilter.toLowerCase(); + } + + // loop through the rows + for ( rowIndex = 0; rowIndex < len; rowIndex++ ) { + + txt = $rows[ rowIndex ].className; + // the first row can never be a child row + isChild = rowIndex && tsfRegex.child.test( txt ); + // skip child rows & already filtered rows + if ( isChild || ( searchFiltered && tsfRegex.filtered.test( txt ) ) ) { + continue; + } + + data.$row = $rows.eq( rowIndex ); + data.cacheArray = norm_rows[ rowIndex ]; + rowData = data.cacheArray[ c.columns ]; + data.rawArray = rowData.raw; + data.childRowText = ''; + + if ( !wo.filter_childByColumn ) { + txt = ''; + // child row cached text + childRow = rowData.child; + // so, if 'table.config.widgetOptions.filter_childRows' is true and there is + // a match anywhere in the child row, then it will make the row visible + // checked here so the option can be changed dynamically + for ( indx = 0; indx < childRow.length; indx++ ) { + txt += ' ' + childRow[indx].join( ' ' ) || ''; + } + data.childRowText = wo.filter_childRows ? + ( wo.filter_ignoreCase ? txt.toLowerCase() : txt ) : + ''; + } + + showRow = false; + showParent = tsf.processRow( c, data, vars ); + $row = rowData.$row; + + // don't pass reference to val + val = showParent ? true : false; + childRow = rowData.$row.filter( ':gt( 0 )' ); + if ( wo.filter_childRows && childRow.length ) { + if ( wo.filter_childByColumn ) { + if ( !wo.filter_childWithSibs ) { + // hide all child rows + childRow.addClass( wo.filter_filteredRow ); + // if only showing resulting child row, only include parent + $row = $row.eq( 0 ); + } + // cycle through each child row + for ( indx = 0; indx < childRow.length; indx++ ) { + data.$row = childRow.eq( indx ); + data.cacheArray = rowData.child[ indx ]; + data.rawArray = data.cacheArray; + val = tsf.processRow( c, data, vars ); + // use OR comparison on child rows + showRow = showRow || val; + if ( !wo.filter_childWithSibs && val ) { + childRow.eq( indx ).removeClass( wo.filter_filteredRow ); + } + } + } + // keep parent row match even if no child matches... see #1020 + showRow = showRow || showParent; + } else { + showRow = val; + } + $row + .toggleClass( wo.filter_filteredRow, !showRow )[0] + .display = showRow ? '' : 'none'; + } + } + c.filteredRows += $rows.not( '.' + wo.filter_filteredRow ).length; + c.totalRows += $rows.length; + ts.processTbody( table, $tbody, false ); + } + c.lastCombinedFilter = combinedFilters; // save last search + // don't save 'filters' directly since it may have altered ( AnyMatch column searches ) + c.lastSearch = storedFilters; + c.$table.data( 'lastSearch', storedFilters ); + if ( wo.filter_saveFilters && ts.storage ) { + ts.storage( table, 'tablesorter-filters', tsf.processFilters( storedFilters, true ) ); + } + if ( c.debug ) { + console.log( 'Completed filter widget search' + ts.benchmark(time) ); + } + if ( wo.filter_initialized ) { + c.$table.trigger( 'filterEnd', c ); + } + setTimeout( function() { + ts.applyWidget( c.table ); // make sure zebra widget is applied + }, 0 ); + }, + getOptionSource: function( table, column, onlyAvail ) { + table = $( table )[0]; + var c = table.config, + wo = c.widgetOptions, + arry = false, + source = wo.filter_selectSource, + last = c.$table.data( 'lastSearch' ) || [], + fxn = typeof source === 'function' ? true : ts.getColumnData( table, source, column ); + + if ( onlyAvail && last[column] !== '' ) { + onlyAvail = false; + } + + // filter select source option + if ( fxn === true ) { + // OVERALL source + arry = source( table, column, onlyAvail ); + } else if ( fxn instanceof $ || ( $.type( fxn ) === 'string' && fxn.indexOf( '' ) >= 0 ) ) { + // selectSource is a jQuery object or string of options + return fxn; + } else if ( $.isArray( fxn ) ) { + arry = fxn; + } else if ( $.type( source ) === 'object' && fxn ) { + // custom select source function for a SPECIFIC COLUMN + arry = fxn( table, column, onlyAvail ); + } + if ( arry === false ) { + // fall back to original method + arry = tsf.getOptions( table, column, onlyAvail ); + } + + return tsf.processOptions( table, column, arry ); + + }, + processOptions: function( table, column, arry ) { + if ( !$.isArray( arry ) ) { + return false; + } + table = $( table )[0]; + var cts, txt, indx, len, parsedTxt, str, + c = table.config, + validColumn = typeof column !== 'undefined' && column !== null && column >= 0 && column < c.columns, + parsed = []; + // get unique elements and sort the list + // if $.tablesorter.sortText exists ( not in the original tablesorter ), + // then natural sort the list otherwise use a basic sort + arry = $.grep( arry, function( value, indx ) { + if ( value.text ) { + return true; + } + return $.inArray( value, arry ) === indx; + }); + if ( validColumn && c.$headerIndexed[ column ].hasClass( 'filter-select-nosort' ) ) { + // unsorted select options + return arry; + } else { + len = arry.length; + // parse select option values + for ( indx = 0; indx < len; indx++ ) { + txt = arry[ indx ]; + // check for object + str = txt.text ? txt.text : txt; + // sortNatural breaks if you don't pass it strings + parsedTxt = ( validColumn && c.parsers && c.parsers.length && + c.parsers[ column ].format( str, table, [], column ) || str ).toString(); + parsedTxt = c.widgetOptions.filter_ignoreCase ? parsedTxt.toLowerCase() : parsedTxt; + // parse array data using set column parser; this DOES NOT pass the original + // table cell to the parser format function + if ( txt.text ) { + txt.parsed = parsedTxt; + parsed.push( txt ); + } else { + parsed.push({ + text : txt, + // check parser length - fixes #934 + parsed : parsedTxt + }); + } + } + // sort parsed select options + cts = c.textSorter || ''; + parsed.sort( function( a, b ) { + var x = a.parsed, + y = b.parsed; + if ( validColumn && typeof cts === 'function' ) { + // custom OVERALL text sorter + return cts( x, y, true, column, table ); + } else if ( validColumn && typeof cts === 'object' && cts.hasOwnProperty( column ) ) { + // custom text sorter for a SPECIFIC COLUMN + return cts[column]( x, y, true, column, table ); + } else if ( ts.sortNatural ) { + // fall back to natural sort + return ts.sortNatural( x, y ); + } + // using an older version! do a basic sort + return true; + }); + // rebuild arry from sorted parsed data + arry = []; + len = parsed.length; + for ( indx = 0; indx < len; indx++ ) { + arry.push( parsed[indx] ); + } + return arry; + } + }, + getOptions: function( table, column, onlyAvail ) { + table = $( table )[0]; + var rowIndex, tbodyIndex, len, row, cache, indx, child, childLen, + c = table.config, + wo = c.widgetOptions, + arry = []; + for ( tbodyIndex = 0; tbodyIndex < c.$tbodies.length; tbodyIndex++ ) { + cache = c.cache[tbodyIndex]; + len = c.cache[tbodyIndex].normalized.length; + // loop through the rows + for ( rowIndex = 0; rowIndex < len; rowIndex++ ) { + // get cached row from cache.row ( old ) or row data object + // ( new; last item in normalized array ) + row = cache.row ? + cache.row[ rowIndex ] : + cache.normalized[ rowIndex ][ c.columns ].$row[0]; + // check if has class filtered + if ( onlyAvail && row.className.match( wo.filter_filteredRow ) ) { + continue; + } + // get non-normalized cell content + if ( wo.filter_useParsedData || + c.parsers[column].parsed || + c.$headerIndexed[column].hasClass( 'filter-parsed' ) ) { + arry.push( '' + cache.normalized[ rowIndex ][ column ] ); + // child row parsed data + if ( wo.filter_childRows && wo.filter_childByColumn ) { + childLen = cache.normalized[ rowIndex ][ c.columns ].$row.length - 1; + for ( indx = 0; indx < childLen; indx++ ) { + arry.push( '' + cache.normalized[ rowIndex ][ c.columns ].child[ indx ][ column ] ); + } + } + } else { + // get raw cached data instead of content directly from the cells + arry.push( cache.normalized[ rowIndex ][ c.columns ].raw[ column ] ); + // child row unparsed data + if ( wo.filter_childRows && wo.filter_childByColumn ) { + childLen = cache.normalized[ rowIndex ][ c.columns ].$row.length; + for ( indx = 1; indx < childLen; indx++ ) { + child = cache.normalized[ rowIndex ][ c.columns ].$row.eq( indx ).children().eq( column ); + arry.push( '' + ts.getElementText( c, child, column ) ); + } + } + } + } + } + return arry; + }, + buildSelect: function( table, column, arry, updating, onlyAvail ) { + table = $( table )[0]; + column = parseInt( column, 10 ); + if ( !table.config.cache || $.isEmptyObject( table.config.cache ) ) { + return; + } + + var indx, val, txt, t, $filters, $filter, option, + c = table.config, + wo = c.widgetOptions, + node = c.$headerIndexed[ column ], + // t.data( 'placeholder' ) won't work in jQuery older than 1.4.3 + options = '', + // Get curent filter value + currentValue = c.$table + .find( 'thead' ) + .find( 'select.' + tscss.filter + '[data-column="' + column + '"]' ) + .val(); + + // nothing included in arry ( external source ), so get the options from + // filter_selectSource or column data + if ( typeof arry === 'undefined' || arry === '' ) { + arry = tsf.getOptionSource( table, column, onlyAvail ); + } + + if ( $.isArray( arry ) ) { + // build option list + for ( indx = 0; indx < arry.length; indx++ ) { + option = arry[ indx ]; + if ( option.text ) { + // OBJECT!! add data-function-name in case the value is set in filter_functions + option['data-function-name'] = typeof option.value === 'undefined' ? option.text : option.value; + + // support jQuery < v1.8, otherwise the below code could be shortened to + // options += $( '