From 1e15271eaa953981a7b5cde7385558ec4f42d530 Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Sat, 5 May 2018 12:14:59 -0600 Subject: [PATCH] Add contact form handling and message management (close #18) --- action.php | 7 + database.mwb | Bin 13276 -> 14249 bytes lang/en_us.php | 4 + lang/messages.php | 4 + pages.php | 13 ++ pages/messages.php | 83 +++++++++++ public/contact.php | 24 +++- static/css/datatables.min.css | 21 +++ static/css/tables.css | 120 ++++++++++++++++ static/img/minus-square.svg | 1 + static/img/search-plus.svg | 1 + static/js/datatables.min.js | 257 ++++++++++++++++++++++++++++++++++ static/js/messages.js | 41 ++++++ 13 files changed, 574 insertions(+), 2 deletions(-) create mode 100644 pages/messages.php create mode 100644 static/css/datatables.min.css create mode 100644 static/css/tables.css create mode 100644 static/img/minus-square.svg create mode 100644 static/img/search-plus.svg create mode 100644 static/js/datatables.min.js create mode 100644 static/js/messages.js diff --git a/action.php b/action.php index 8b6b1ab..36788f4 100644 --- a/action.php +++ b/action.php @@ -180,6 +180,13 @@ switch ($VARS['action']) { } exit(json_encode(["status" => "OK"])); break; + case "deletemessage": + if ($database->count('messages', ["mid" => $VARS['id']]) !== 1) { + returnToSender("invalid_parameters"); + } + $database->delete('messages', ["mid" => $VARS['id']]); + returnToSender("message_deleted"); + break; case "signout": session_destroy(); header('Location: index.php'); diff --git a/database.mwb b/database.mwb index 2a5e2a59953fd06a38470d8669932eb2b846b8b5..a37c3792219fb3cb36135a97d4a88c7c8ef8ed3f 100644 GIT binary patch literal 14249 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 literal 13276 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 av(PykTbSA!I&%{_Te_IKJAFNz;QlYvG~S{B diff --git a/lang/en_us.php b/lang/en_us.php index 993b9d7..85adebf 100644 --- a/lang/en_us.php +++ b/lang/en_us.php @@ -96,4 +96,8 @@ define("STRINGS", [ "site info" => "Site Info", "loading" => "Loading...", "current" => "Current", + "messages" => "Messages", + "message" => "Message", + "date" => "Date", + "message deleted" => "Message deleted.", ]); \ No newline at end of file diff --git a/lang/messages.php b/lang/messages.php index a03be41..01a574f 100644 --- a/lang/messages.php +++ b/lang/messages.php @@ -29,4 +29,8 @@ define("MESSAGES", [ "string" => "template missing", "type" => "danger" ], + "message_deleted" => [ + "string" => "message deleted", + "type" => "success" + ], ]); diff --git a/pages.php b/pages.php index 67f0908..6d1b47c 100644 --- a/pages.php +++ b/pages.php @@ -56,6 +56,19 @@ define("PAGES", [ "static/js/analy_reports.js" ] ], + "messages" => [ + "title" => "messages", + "navbar" => true, + "icon" => "fas fa-envelope", + "styles" => [ + "static/css/datatables.min.css", + "static/css/tables.css", + ], + "scripts" => [ + "static/js/datatables.min.js", + "static/js/messages.js" + ] + ], "404" => [ "title" => "404 error" ] diff --git a/pages/messages.php b/pages/messages.php new file mode 100644 index 0000000..ef8c82b --- /dev/null +++ b/pages/messages.php @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + select('messages', ["[>]sites" => ["siteid"]], [ + 'mid', + 'messages.siteid', + 'sites.sitename', + 'name', + 'email', + 'message', + 'date' + ]); + foreach ($messages as $m) { + $mailto = "mailto:" + . urlencode($m['name']) + . "<" . $m['email'] . ">" + . "?subject=" . rawurlencode(htmlspecialchars_decode($m['sitename'] . " contact form reply")) + . "&body=" + . rawurlencode( + htmlspecialchars_decode( + "\n\n----------\nOriginal message:\n" + . $m['message'] + ) + ); + ?> + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +
\ No newline at end of file diff --git a/public/contact.php b/public/contact.php index 30f7b29..b01611e 100644 --- a/public/contact.php +++ b/public/contact.php @@ -1,9 +1,29 @@ + + + + Contact Form +

Whoops! You didn't fill out the contact form properly. Go back and try again.

+ insert("messages", [ + "siteid" => getsiteid(), + "name" => htmlspecialchars($_POST['name']), + "email" => htmlspecialchars($_POST['email']), + "message" => htmlspecialchars($_POST['message']), + "date" => date("Y-m-d H:i:s") +]); + +header('Location: ./'); diff --git a/static/css/datatables.min.css b/static/css/datatables.min.css new file mode 100644 index 0000000..e280947 --- /dev/null +++ b/static/css/datatables.min.css @@ -0,0 +1,21 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs4/dt-1.10.16/r-2.2.1/sc-1.4.4 + * + * Included libraries: + * DataTables 1.10.16, Responsive 2.2.1, Scroller 1.4.4 + */ + +table.dataTable{clear:both;margin-top:6px !important;margin-bottom:6px !important;max-width:none !important;border-collapse:separate !important}table.dataTable td,table.dataTable th{-webkit-box-sizing:content-box;box-sizing:content-box}table.dataTable td.dataTables_empty,table.dataTable th.dataTables_empty{text-align:center}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}div.dataTables_wrapper div.dataTables_length label{font-weight:normal;text-align:left;white-space:nowrap}div.dataTables_wrapper div.dataTables_length select{width:75px;display:inline-block}div.dataTables_wrapper div.dataTables_filter{text-align:right}div.dataTables_wrapper div.dataTables_filter label{font-weight:normal;white-space:nowrap;text-align:left}div.dataTables_wrapper div.dataTables_filter input{margin-left:0.5em;display:inline-block;width:auto}div.dataTables_wrapper div.dataTables_info{padding-top:0.85em;white-space:nowrap}div.dataTables_wrapper div.dataTables_paginate{margin:0;white-space:nowrap;text-align:right}div.dataTables_wrapper div.dataTables_paginate ul.pagination{margin:2px 0;white-space:nowrap;justify-content:flex-end}div.dataTables_wrapper div.dataTables_processing{position:absolute;top:50%;left:50%;width:200px;margin-left:-100px;margin-top:-26px;text-align:center;padding:1em 0}table.dataTable thead>tr>th.sorting_asc,table.dataTable thead>tr>th.sorting_desc,table.dataTable thead>tr>th.sorting,table.dataTable thead>tr>td.sorting_asc,table.dataTable thead>tr>td.sorting_desc,table.dataTable thead>tr>td.sorting{padding-right:30px}table.dataTable thead>tr>th:active,table.dataTable thead>tr>td:active{outline:none}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;position:relative}table.dataTable thead .sorting:before,table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{position:absolute;bottom:0.9em;display:block;opacity:0.3}table.dataTable thead .sorting:before,table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:before,table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:before{right:1em;content:"\2191"}table.dataTable thead .sorting:after,table.dataTable thead .sorting_asc:after,table.dataTable thead .sorting_desc:after,table.dataTable thead .sorting_asc_disabled:after,table.dataTable thead .sorting_desc_disabled:after{right:0.5em;content:"\2193"}table.dataTable thead .sorting_asc:before,table.dataTable thead .sorting_desc:after{opacity:1}table.dataTable thead .sorting_asc_disabled:before,table.dataTable thead .sorting_desc_disabled:after{opacity:0}div.dataTables_scrollHead table.dataTable{margin-bottom:0 !important}div.dataTables_scrollBody table{border-top:none;margin-top:0 !important;margin-bottom:0 !important}div.dataTables_scrollBody table thead .sorting:after,div.dataTables_scrollBody table thead .sorting_asc:after,div.dataTables_scrollBody table thead .sorting_desc:after{display:none}div.dataTables_scrollBody table tbody tr:first-child th,div.dataTables_scrollBody table tbody tr:first-child td{border-top:none}div.dataTables_scrollFoot>.dataTables_scrollFootInner{box-sizing:content-box}div.dataTables_scrollFoot>.dataTables_scrollFootInner>table{margin-top:0 !important;border-top:none}@media screen and (max-width: 767px){div.dataTables_wrapper div.dataTables_length,div.dataTables_wrapper div.dataTables_filter,div.dataTables_wrapper div.dataTables_info,div.dataTables_wrapper div.dataTables_paginate{text-align:center}}table.dataTable.table-sm>thead>tr>th{padding-right:20px}table.dataTable.table-sm .sorting:before,table.dataTable.table-sm .sorting_asc:before,table.dataTable.table-sm .sorting_desc:before{top:5px;right:0.85em}table.dataTable.table-sm .sorting:after,table.dataTable.table-sm .sorting_asc:after,table.dataTable.table-sm .sorting_desc:after{top:5px}table.table-bordered.dataTable th,table.table-bordered.dataTable td{border-left-width:0}table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable th:last-child,table.table-bordered.dataTable td:last-child,table.table-bordered.dataTable td:last-child{border-right-width:0}table.table-bordered.dataTable tbody th,table.table-bordered.dataTable tbody td{border-bottom-width:0}div.dataTables_scrollHead table.table-bordered{border-bottom-width:0}div.table-responsive>div.dataTables_wrapper>div.row{margin:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:first-child{padding-left:0}div.table-responsive>div.dataTables_wrapper>div.row>div[class^="col-"]:last-child{padding-right:0} + + +table.dataTable.dtr-inline.collapsed>tbody>tr>td.child,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty{cursor:default !important}table.dataTable.dtr-inline.collapsed>tbody>tr>td.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>th.child:before,table.dataTable.dtr-inline.collapsed>tbody>tr>td.dataTables_empty:before{display:none !important}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child{position:relative;padding-left:30px;cursor:pointer}table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr[role="row"]>th:first-child:before{top:12px;left:4px;height:14px;width:14px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#0275d8}table.dataTable.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{content:'-';background-color:#d33333}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child{padding-left:27px}table.dataTable.dtr-inline.collapsed.compact>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.compact>tbody>tr>th:first-child:before{top:5px;left:4px;height:14px;width:14px;border-radius:14px;line-height:14px;text-indent:3px}table.dataTable.dtr-column>tbody>tr>td.control,table.dataTable.dtr-column>tbody>tr>th.control{position:relative;cursor:pointer}table.dataTable.dtr-column>tbody>tr>td.control:before,table.dataTable.dtr-column>tbody>tr>th.control:before{top:50%;left:50%;height:16px;width:16px;margin-top:-10px;margin-left:-10px;display:block;position:absolute;color:white;border:2px solid white;border-radius:14px;box-shadow:0 0 3px #444;box-sizing:content-box;text-align:center;text-indent:0 !important;font-family:'Courier New', Courier, monospace;line-height:14px;content:'+';background-color:#0275d8}table.dataTable.dtr-column>tbody>tr.parent td.control:before,table.dataTable.dtr-column>tbody>tr.parent th.control:before{content:'-';background-color:#d33333}table.dataTable>tbody>tr.child{padding:0.5em 1em}table.dataTable>tbody>tr.child:hover{background:transparent !important}table.dataTable>tbody>tr.child ul.dtr-details{display:inline-block;list-style-type:none;margin:0;padding:0}table.dataTable>tbody>tr.child ul.dtr-details>li{border-bottom:1px solid #efefef;padding:0.5em 0}table.dataTable>tbody>tr.child ul.dtr-details>li:first-child{padding-top:0}table.dataTable>tbody>tr.child ul.dtr-details>li:last-child{border-bottom:none}table.dataTable>tbody>tr.child span.dtr-title{display:inline-block;min-width:75px;font-weight:bold}div.dtr-modal{position:fixed;box-sizing:border-box;top:0;left:0;height:100%;width:100%;z-index:100;padding:10em 1em}div.dtr-modal div.dtr-modal-display{position:absolute;top:0;left:0;bottom:0;right:0;width:50%;height:50%;overflow:auto;margin:auto;z-index:102;overflow:auto;background-color:#f5f5f7;border:1px solid black;border-radius:0.5em;box-shadow:0 12px 30px rgba(0,0,0,0.6)}div.dtr-modal div.dtr-modal-content{position:relative;padding:1em}div.dtr-modal div.dtr-modal-close{position:absolute;top:6px;right:6px;width:22px;height:22px;border:1px solid #eaeaea;background-color:#f9f9f9;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dtr-modal div.dtr-modal-close:hover{background-color:#eaeaea}div.dtr-modal div.dtr-modal-background{position:fixed;top:0;left:0;right:0;bottom:0;z-index:101;background:rgba(0,0,0,0.6)}@media screen and (max-width: 767px){div.dtr-modal div.dtr-modal-display{width:95%}}div.dtr-bs-modal table.table tr:first-child td{border-top:none} + + +div.DTS{display:block !important}div.DTS tbody th,div.DTS tbody td{white-space:nowrap}div.DTS div.DTS_Loading{z-index:1}div.DTS div.dataTables_scrollBody{background:repeating-linear-gradient(45deg, #edeeff, #edeeff 10px, #fff 10px, #fff 20px)}div.DTS div.dataTables_scrollBody table{z-index:2}div.DTS div.dataTables_paginate,div.DTS div.dataTables_length{display:none}div.DTS div.dataTables_scrollBody table{background-color:white} + + diff --git a/static/css/tables.css b/static/css/tables.css new file mode 100644 index 0000000..abae78e --- /dev/null +++ b/static/css/tables.css @@ -0,0 +1,120 @@ +table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child, +table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child { + position: relative; + padding-left: 30px; + cursor: pointer; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child:before { + top: 10px; + left: initial; + right: 15px; + height: 16px; + width: 16px; + color: initial; + border: initial; + border-radius: initial; + text-align: initial; + line-height: initial; + box-shadow: initial; + box-sizing: initial; + background-color: initial; + display: block; + position: absolute; + background-image: url(../img/search-plus.svg); + background-repeat: no-repeat; + background-size: 16px 16px; + content: ''; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child.dataTables_empty:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child.dataTables_empty:before { + display: none; +} +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before { + background-color: initial; + background-image: url(../img/minus-square.svg); + background-repeat: no-repeat; + background-size: 16px 16px; + content: ''; +} +table.dataTable.dtr-inline.collapsed > tbody > tr.child td:before { + display: none; +} +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child, +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child { + padding-left: 27px; +} +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before, +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before { + top: 5px; + left: 4px; + height: 14px; + width: 14px; + border-radius: 14px; + line-height: 12px; +} +table.dataTable.dtr-column > tbody > tr > td.control, +table.dataTable.dtr-column > tbody > tr > th.control { + position: relative; + cursor: pointer; + width: 15px; +} +table.dataTable.dtr-column > tbody > tr > td.control:before, +table.dataTable.dtr-column > tbody > tr > th.control:before { + top: initial; + left: initial; + height: 16px; + width: 16px; + margin-top: auto; + margin-left: auto; + display: block; + position: absolute; + background-image: url(../img/search-plus.svg); + background-repeat: no-repeat; + background-size: 16px 16px; + content: ''; + color: initial; + border: initial; + border-radius: initial; + text-align: initial; + line-height: initial; + box-shadow: initial; + box-sizing: initial; + background-color: initial; +} +table.dataTable.dtr-column > tbody > tr.parent td.control:before, +table.dataTable.dtr-column > tbody > tr.parent th.control:before { + background-color: initial; + background-image: url(../img/minus-square.svg); + background-repeat: no-repeat; + background-size: 16px 16px; + content: ''; +} +table.dataTable > tbody > tr.child { + padding: 0.5em 1em; +} +table.dataTable > tbody > tr.child:hover { + background: transparent !important; +} +table.dataTable > tbody > tr.child ul { + display: inline-block; + list-style-type: none; + margin: 0; + padding: 0; +} +table.dataTable > tbody > tr.child ul li { + border-bottom: 1px solid #efefef; + padding: 0.5em 0; +} +table.dataTable > tbody > tr.child ul li:first-child { + padding-top: 0; +} +table.dataTable > tbody > tr.child ul li:last-child { + border-bottom: none; +} +table.dataTable > tbody > tr.child span.dtr-title { + display: inline-block; + min-width: 75px; + font-weight: bold; +} \ No newline at end of file diff --git a/static/img/minus-square.svg b/static/img/minus-square.svg new file mode 100644 index 0000000..30fcd62 --- /dev/null +++ b/static/img/minus-square.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/img/search-plus.svg b/static/img/search-plus.svg new file mode 100644 index 0000000..d7fc4b7 --- /dev/null +++ b/static/img/search-plus.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/js/datatables.min.js b/static/js/datatables.min.js new file mode 100644 index 0000000..77cf219 --- /dev/null +++ b/static/js/datatables.min.js @@ -0,0 +1,257 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs4/dt-1.10.16/r-2.2.1/sc-1.4.4 + * + * Included libraries: + * DataTables 1.10.16, Responsive 2.2.1, Scroller 1.4.4 + */ + +/*! + DataTables 1.10.16 + ©2008-2017 SpryMedia Ltd - datatables.net/license +*/ +(function(h){"function"===typeof define&&define.amd?define(["jquery"],function(E){return h(E,window,document)}):"object"===typeof exports?module.exports=function(E,G){E||(E=window);G||(G="undefined"!==typeof window?require("jquery"):require("jquery")(E));return h(G,E,E.document)}:h(jQuery,window,document)})(function(h,E,G,k){function X(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()), +d[c]=e,"o"===b[1]&&X(a[e])});a._hungarianMap=d}function I(a,b,c){a._hungarianMap||X(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),I(a[d],b[d],c)):b[d]=b[e]})}function Ca(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&F(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&F(a,a,"sZeroRecords","sLoadingRecords"); +a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&cb(a)}function db(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");"boolean"===typeof a.scrollX&&(a.scrollX= +a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b").css({position:"fixed",top:0,left:-1*h(E).scrollLeft(),height:1,width:1,overflow:"hidden"}).append(h("
").css({position:"absolute", +top:1,left:1,width:100,overflow:"scroll"}).append(h("
").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function gb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!== +e;)a.hasOwnProperty(d)&&(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Da(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:G.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);ja(a,d,h(b).data())}function ja(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig= +e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(eb(c),I(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),h.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));var g=b.mData,j=Q(g),i=b.mRender?Q(b.mRender):null,c=function(a){return"string"=== +typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=j(a,b,k,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return R(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass= +d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function Y(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ea(a);for(var c=0,d=b.length;cq[f])d(l.length+q[f],n);else if("string"===typeof q[f]){j=0;for(i=l.length;j< +i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&d(j,n)}}if(c){e=0;for(a=c.length;eb&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ca(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild); +c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ha(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c").appendTo(g));b=0;for(c=l.length;btr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);h(j).find(">tr>th, >tr>td").addClass(n.sFooterTH); +if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart= +-1);var g=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!kb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:n;for(j=j?0:g;j",{"class":e?d[0]:""}).append(h("",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];r(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ja(a),g,n,i]);r(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ja(a),g,n,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));r(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function S(a,b){var c=a.oFeatures,d=c.bFilter; +c.bSort&&lb(a);d?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;N(a);a._drawHold=!1}function mb(a){var b=a.oClasses,c=h(a.nTable),c=h("
").insertBefore(c),d=a.oFeatures,e=h("
",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,n,l,q,k=0;k")[0]; +n=f[k+1];if("'"==n||'"'==n){l="";for(q=2;f[k+q]!=n;)l+=f[k+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),i.id=n[0].substr(1,n[0].length-1),i.className=n[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;k+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=nb(a);else if("f"==j&&d.bFilter)g=ob(a);else if("r"==j&&d.bProcessing)g=pb(a);else if("t"==j)g=qb(a);else if("i"==j&&d.bInfo)g=rb(a);else if("p"== +j&&d.bPaginate)g=sb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(n=i.length;q',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("
",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("
").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).on("change.DT",function(){Qa(a,h(this).val());N(a)});h(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function sb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){N(a)}, +b=h("
").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),k,l=0;for(k=f.p.length;lf&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display", +b?"block":"none");r(a,null,"processing",[a,b])}function qb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),l=b.children("tfoot");l.length||(l=null);i=h("
",{"class":f.sScrollWrapper}).append(h("
",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:v(d):"100%"}).append(h("
", +{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("
",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:v(d)}).append(b));l&&i.append(h("
",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:v(d):"100%"}).append(h("
",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left", +0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=i.children(),k=b[0],f=b[1],t=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(t.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=t;a.aoDrawCallback.push({fn:ka,sName:"scrolling"});return i[0]}function ka(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style,n=j.children("table"), +j=a.nScrollBody,l=h(j),q=j.style,t=h(a.nScrollFoot).children("div"),m=t.children("table"),o=h(a.nTHead),p=h(a.nTable),s=p[0],r=s.style,u=a.nTFoot?h(a.nTFoot):null,x=a.oBrowser,T=x.bScrollOversize,Xb=D(a.aoColumns,"nTh"),O,K,P,w,Ta=[],y=[],z=[],A=[],B,C=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};K=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==K&&a.scrollBarVis!==k)a.scrollBarVis=K,Y(a);else{a.scrollBarVis=K;p.children("thead, tfoot").remove(); +u&&(P=u.clone().prependTo(p),O=u.find("tr"),P=P.find("tr"));w=o.clone().prependTo(p);o=o.find("tr");K=w.find("tr");w.find("th, td").removeAttr("tabindex");c||(q.width="100%",f[0].style.width="100%");h.each(ra(a,w),function(b,c){B=Z(a,b);c.style.width=a.aoColumns[B].sWidth});u&&H(function(a){a.style.width=""},P);f=p.outerWidth();if(""===c){r.width="100%";if(T&&(p.find("tbody").height()>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=v(p.outerWidth()-b);f=p.outerWidth()}else""!==d&&(r.width= +v(d),f=p.outerWidth());H(C,K);H(function(a){z.push(a.innerHTML);Ta.push(v(h(a).css("width")))},K);H(function(a,b){if(h.inArray(a,Xb)!==-1)a.style.width=Ta[b]},o);h(K).height(0);u&&(H(C,P),H(function(a){A.push(a.innerHTML);y.push(v(h(a).css("width")))},P),H(function(a,b){a.style.width=y[b]},O),h(P).height(0));H(function(a,b){a.innerHTML='
'+z[b]+"
";a.style.width=Ta[b]},K);u&&H(function(a,b){a.innerHTML='
'+ +A[b]+"
";a.style.width=y[b]},P);if(p.outerWidth()j.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(T&&(j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=v(O-b);(""===c||""!==d)&&J(a,1,"Possible column misalignment",6)}else O="100%";q.width=v(O);g.width=v(O);u&&(a.nScrollFoot.style.width=v(O));!e&&T&&(q.height=v(s.offsetHeight+b));c=p.outerWidth();n[0].style.width=v(c);i.width=v(c);d=p.height()>j.clientHeight||"scroll"==l.css("overflow-y");e="padding"+ +(x.bScrollbarLeft?"Left":"Right");i[e]=d?b+"px":"0px";u&&(m[0].style.width=v(c),t[0].style.width=v(c),t[0].style[e]=d?b+"px":"0px");p.children("colgroup").insertBefore(p.children("thead"));l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}}function H(a,b,c){for(var d=0,e=0,f=b.length,g,j;e").appendTo(j.find("tbody")); +j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");n=ra(a,j.find("thead")[0]);for(m=0;m").css({width:o.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(m=0;m").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()").css("width",v(a)).appendTo(b||G.body),d=c[0].offsetWidth;c.remove();return d}function Eb(a,b){var c=Fb(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?h("").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Fb(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;fd&&(d=c.length,e=f);return e}function v(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function V(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!h.isArray(a[0])?n.push(a):h.merge(n,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;ae?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return ce?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,o=f[b]._aSortData;for(j=0;jg?1:0})}a.bSorted=!0}function Hb(a){for(var b,c,d=a.aoColumns,e=V(a),a=a.oLanguage.oAria,f=0,g=d.length;f/g, +"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0e?e+1:3));e=0;for(f=d.length;ee?e+1:3))}a.aLastSort=d}function Gb(a,b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j=f.length?[0,c[1]]:c)}));b.search!== +k&&h.extend(a.oPreviousSearch,Ab(b.search));if(b.columns){d=0;for(e=b.columns.length;d=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Ma(a,b){var c=a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function y(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ha(a,b){var c=[],c=Kb.numbers_length,d=Math.floor(c/2);b<=c?c=W(0,b):a<=d?(c=W(0, +c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=W(b-(c-2),b):(c=W(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function cb(a){h.each({num:function(b){return za(b,a)},"num-fmt":function(b){return za(b,a,Wa)},"html-num":function(b){return za(b,a,Aa)},"html-num-fmt":function(b){return za(b,a,Aa,Wa)}},function(b,c){x.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(x.type.search[b+a]=x.type.search.html)})}function Lb(a){return function(){var b= +[ya(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new s(ya(this[x.iApiIndex])):new s(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing= +function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&ka(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)}; +this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase(); +return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return ya(this[x.iApiIndex])}; +this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=x.fnVersionCheck;var b=this,c=a===k,d=this.length;c&&(a={});this.oApi=this.internal=x.internal;for(var e in m.ext.internal)e&&(this[e]=Lb(e));this.each(function(){var e={},g=1").appendTo(q));p.nTHead=b[0];b=q.children("tbody");b.length===0&&(b=h("").appendTo(q));p.nTBody=b[0];b=q.children("tfoot");if(b.length===0&&a.length>0&&(p.oScroll.sX!==""||p.oScroll.sY!==""))b=h("").appendTo(q);if(b.length===0||b.children().length===0)q.addClass(u.sNoFooter); +else if(b.length>0){p.nTFoot=b[0];da(p.aoFooter,p.nTFoot)}if(g.aaData)for(j=0;j/g,Zb=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,$b=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)", +"g"),Wa=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,L=function(a){return!a||!0===a||"-"===a?!0:!1},Nb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Ob=function(a,b){Xa[b]||(Xa[b]=RegExp(Pa(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Xa[b],"."):a},Ya=function(a,b,c){var d="string"===typeof a;if(L(a))return!0;b&&d&&(a=Ob(a,b));c&&d&&(a=a.replace(Wa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Pb=function(a,b,c){return L(a)?!0:!(L(a)||"string"=== +typeof a)?null:Ya(a.replace(Aa,""),b,c)?!0:null},D=function(a,b,c){var d=[],e=0,f=a.length;if(c!==k)for(;ea.length)){b=a.slice().sort();for(var c=b[0],d=1,e=b.length;d")[0],Wb=va.textContent!==k,Yb=/<.*?>/g,Na=m.util.throttle,Rb=[],w=Array.prototype,ac=function(a){var b,c,d=m.settings,e=h.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,e),-1!==b?[d[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof +h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return-1!==b?d[b]:null}).toArray()};s=function(a,b){if(!(this instanceof s))return new s(a,b);var c=[],d=function(a){(a=ac(a))&&(c=c.concat(a))};if(h.isArray(a))for(var e=0,f=a.length;ea?new s(b[a],this[a]):null},filter:function(a){var b=[];if(w.filter)b=w.filter.call(this,a,this);else for(var c=0,d=this.length;c").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=aa(d),e.push(c[0]))};f(a,b);c._details&&c._details.detach();c._details=h(e);c._detailsShow&& +c._details.insertAfter(c.nTr)}return this});o(["row().child.show()","row().child().show()"],function(){Tb(this,!0);return this});o(["row().child.hide()","row().child().hide()"],function(){Tb(this,!1);return this});o(["row().child.remove()","row().child().remove()"],function(){bb(this);return this});o("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var bc=/^([^:]+):(name|visIdx|visible)$/,Ub=function(a,b,c,d,e){for(var c= +[],d=0,f=e.length;d=0?b:g.length+b];if(typeof a==="function"){var e=Ba(c,f);return h.map(g,function(b,f){return a(f,Ub(c,f,0,0,e),i[f])?f:null})}var k=typeof a==="string"?a.match(bc):"";if(k)switch(k[2]){case "visIdx":case "visible":b= +parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[Z(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null});default:return[]}if(a.nodeName&&a._DT_CellIndex)return[a._DT_CellIndex.column];b=h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray();if(b.length||!a.nodeName)return b;b=h(a).closest("*[data-dt-column]");return b.length?[b.data("dt-column")]:[]},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});u("columns().header()", +"column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});u("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});u("columns().data()","column().data()",function(){return this.iterator("column-rows",Ub,1)});u("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});u("columns().cache()","column().cache()", +function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});u("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ia(a.aoData,e,"anCells",b)},1)});u("columns().visible()","column().visible()",function(a,b){var c=this.iterator("column",function(b,c){if(a===k)return b.aoColumns[c].bVisible;var f=b.aoColumns,g=f[c],j=b.aoData,i,n,l;if(a!==k&&g.bVisible!==a){if(a){var m= +h.inArray(!0,D(f,"bVisible"),c+1);i=0;for(n=j.length;id;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;if(a instanceof m.Api)return!0;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot? +h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});return b?new s(c):c};m.camelToHungarian=I;o("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){o(b+"()",function(){var a=Array.prototype.slice.call(arguments); +a[0]=h.map(a[0].split(/\s/),function(a){return!a.match(/\.dt\b/)?a+".dt":a}).join(" ");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});o("clear()",function(){return this.iterator("table",function(a){na(a)})});o("settings()",function(){return new s(this.context,this.context)});o("init()",function(){var a=this.context;return a.length?a[0].oInit:null});o("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});o("destroy()",function(a){a=a|| +!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),o;b.bDestroying=!0;r(b,"aoDestroyCallback","destroy",[b]);a||(new s(b)).columns().visible(!0);k.off(".DT").find(":not(tbody *)").off(".DT");h(E).off(".DT-"+b.sInstance);e!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&e!=j.parentNode&&(i.children("tfoot").detach(),i.append(j)); +b.aaSorting=[];b.aaSortingFixed=[];wa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);f.children().detach();f.append(l);g=a?"remove":"detach";i[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),i.css("width",b.sDestroyWidth).removeClass(d.sTable),(o=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%o])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c, +1)})});h.each(["column","row","cell"],function(a,b){o(b+"s().every()",function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,n){a.call(e[b](g,"cell"===b?h:d,"cell"===b?d:k),g,h,i,n)})})});o("i18n()",function(a,b,c){var d=this.context[0],a=Q(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.16";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow= +{nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null, +sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g, +this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+ +"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries", +sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"}; +X(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};X(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null, +bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[], +aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null, +aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==y(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength, +b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=x={buttons:{},classes:{},build:"bs4/dt-1.10.16/r-2.2.1/sc-1.4.4",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}}, +order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(x,{afnFiltering:x.search,aTypes:x.type.detect,ofnSearch:x.type.search,oSort:x.type.order,afnSortData:x.order,aoFeatures:x.feature,oApi:x.internal,oStdClasses:x.classes,oPagination:x.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd", +sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead", +sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Kb=m.ext.pager;h.extend(Kb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[ha(a, +b)]},simple_numbers:function(a,b){return["previous",ha(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ha(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ha(a,b),"last"]},_numbers:ha,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||{},n,l,m=0,o=function(b,d){var k,s,u,r,v=function(b){Sa(a,b.data.action,true)};k=0;for(s=d.length;k").appendTo(b);o(u,r)}else{n=null;l="";switch(r){case "ellipsis":b.append('');break;case "first":n=j.sFirst;l=r+(e>0?"":" "+g.sPageButtonDisabled);break;case "previous":n=j.sPrevious;l=r+(e>0?"":" "+g.sPageButtonDisabled);break;case "next":n=j.sNext;l=r+(e",{"class":g.sPageButton+ +" "+l,"aria-controls":a.sTableId,"aria-label":i[r],"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof r==="string"?a.sTableId+"_"+r:null}).html(n).appendTo(b);Va(u,{action:r},v);m++}}}},s;try{s=h(b).find(G.activeElement).data("dt-idx")}catch(u){}o(h(b).empty(),d);s!==k&&h(b).find("[data-dt-idx="+s+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&!Zb.test(a))return null;var b=Date.parse(a); +return null!==b&&!isNaN(b)||L(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Pb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Pb(a,c,!0)?"html-num-fmt"+c:null},function(a){return L(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return L(a)?a:"string"===typeof a?a.replace(Mb," ").replace(Aa,""):""},string:function(a){return L(a)? +a:"string"===typeof a?a.replace(Mb," "):a}});var za=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Ob(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(x.type.order,{"date-pre":function(a){return Date.parse(a)||-Infinity},"html-pre":function(a){return L(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return L(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a< +b?-1:a>b?1:0},"string-desc":function(a,b){return ab?-1:0}});cb("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("
").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b); +h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});var Vb=function(a){return"string"===typeof a?a.replace(//g,">").replace(/"/g, +"""):a};m.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return Vb(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:Vb}}};h.extend(m.ext.internal,{_fnExternApiFunc:Lb,_fnBuildAjax:sa,_fnAjaxUpdate:kb,_fnAjaxParameters:tb,_fnAjaxUpdateDraw:ub, +_fnAjaxDataSrc:ta,_fnAddColumn:Da,_fnColumnOptions:ja,_fnAdjustColumnSizing:Y,_fnVisibleToColumnIndex:Z,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:la,_fnColumnTypes:Fa,_fnApplyColumnDefs:hb,_fnHungarianMap:X,_fnCamelToHungarian:I,_fnLanguageCompat:Ca,_fnBrowserDetect:fb,_fnAddData:M,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:B,_fnSetCellData:ib, +_fnSplitObjNotation:Ia,_fnGetObjectDataFn:Q,_fnSetObjectDataFn:R,_fnGetDataMaster:Ja,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ca,_fnGetRowElements:Ha,_fnCreateTr:Ga,_fnBuildHead:jb,_fnDrawHead:ea,_fnDraw:N,_fnReDraw:S,_fnAddOptionsHtml:mb,_fnDetectHeader:da,_fnGetUniqueThs:ra,_fnFeatureHtmlFilter:ob,_fnFilterComplete:fa,_fnFilterCustom:xb,_fnFilterColumn:wb,_fnFilter:vb,_fnFilterCreateSearch:Oa,_fnEscapeRegex:Pa,_fnFilterData:yb,_fnFeatureHtmlInfo:rb,_fnUpdateInfo:Bb,_fnInfoMacros:Cb,_fnInitialise:ga, +_fnInitComplete:ua,_fnLengthChange:Qa,_fnFeatureHtmlLength:nb,_fnFeatureHtmlPaginate:sb,_fnPageChange:Sa,_fnFeatureHtmlProcessing:pb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:qb,_fnScrollDraw:ka,_fnApplyToChildren:H,_fnCalculateColumnWidths:Ea,_fnThrottle:Na,_fnConvertToWidth:Db,_fnGetWidestNode:Eb,_fnGetMaxLenString:Fb,_fnStringToCss:v,_fnSortFlatten:V,_fnSort:lb,_fnSortAria:Hb,_fnSortListener:Ua,_fnSortAttachListener:La,_fnSortingClasses:wa,_fnSortData:Gb,_fnSaveState:xa,_fnLoadState:Ib,_fnSettingsFromNode:ya, +_fnLog:J,_fnMap:F,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:r,_fnLengthOverflow:Ra,_fnRenderer:Ma,_fnDataSource:y,_fnRowAttributes:Ka,_fnCalculateEnd:function(){}});h.fn.dataTable=m;m.$=h;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable}); + + +/*! + DataTables Bootstrap 3 integration + ©2011-2015 SpryMedia Ltd - datatables.net/license +*/ +(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b,a,d,m){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>", +renderer:"bootstrap"});b.extend(f.ext.classes,{sWrapper:"dataTables_wrapper container-fluid dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,s,j,n){var o=new f.Api(a),t=a.oClasses,k=a.oLanguage.oPaginate,u=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&& +o.page()!=a.data.action&&o.page(a.data.action).draw("page")};l=0;for(h=f.length;l",{"class":t.sPageButton+" "+g,id:0===r&& +"string"===typeof c?a.sTableId+"_"+c:null}).append(b("",{href:"#","aria-controls":a.sTableId,"aria-label":u[c],"data-dt-idx":p,tabindex:a.iTabIndex,"class":"page-link"}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(v){}q(b(h).empty().html('
    ').children("ul"),s);i!==m&&b(h).find("[data-dt-idx="+i+"]").focus()};return f}); + + +/*! + Responsive 2.2.1 + 2014-2017 SpryMedia Ltd - datatables.net/license +*/ +(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(l){return c(l,window,document)}):"object"===typeof exports?module.exports=function(l,k){l||(l=window);if(!k||!k.fn.dataTable)k=require("datatables.net")(l,k).$;return c(k,l,l.document)}:c(jQuery,window,document)})(function(c,l,k,q){function s(b,a,c){var e=a+"-"+c;if(m[e])return m[e];for(var f=[],b=b.cell(a,c).node().childNodes,a=0,c=b.length;atd, >th", +e).each(function(e){e=a.column.index("toData",e);!1===b.s.current[e]&&c(this).css("display","none")})});a.on("destroy.dtr",function(){a.off(".dtr");c(a.table().body()).off(".dtr");c(l).off("resize.dtr orientationchange.dtr");c.each(b.s.current,function(a,c){!1===c&&b._setColumnVis(a,!0)})});this.c.breakpoints.sort(function(a,b){return a.widthb.width?-1:0});this._classLogic();this._resizeAuto();d=this.c.details;!1!==d.type&&(b._detailsInit(),a.on("column-visibility.dtr",function(a, +c,e,d,h){h&&(b._classLogic(),b._resizeAuto(),b._resize())}),a.on("draw.dtr",function(){b._redrawChildren()}),c(a.table().node()).addClass("dtr-"+d.type));a.on("column-reorder.dtr",function(){b._classLogic();b._resizeAuto();b._resize()});a.on("column-sizing.dtr",function(){b._resizeAuto();b._resize()});a.on("preXhr.dtr",function(){var c=[];a.rows().every(function(){this.child.isShown()&&c.push(this.id(true))});a.one("draw.dtr",function(){b._resizeAuto();b._resize();a.rows(c).every(function(){b._detailsDisplay(this, +false)})})});a.on("init.dtr",function(){b._resizeAuto();b._resize();c.inArray(false,b.s.current)&&a.columns.adjust()});this._resize()},_columnsVisiblity:function(b){var a=this.s.dt,d=this.s.columns,e,f,g=d.map(function(a,b){return{columnIdx:b,priority:a.priority}}).sort(function(a,b){return a.priority!==b.priority?a.priority-b.priority:a.columnIdx-b.columnIdx}),i=c.map(d,function(a){return a.auto&&null===a.minWidth?!1:!0===a.auto?"-":-1!==c.inArray(b,a.includeIn)}),n=0;e=0;for(f=i.length;ea-d[h].minWidth?(n=!0,i[h]=!1):i[h]=!0,a-=d[h].minWidth)}g=!1;e=0;for(f=d.length;e=g&&f(c,a[d].name)}else{if("not-"===h){d=0;for(h=a.length;d").append(i).appendTo(f)}c("").append(g).appendTo(e);"inline"===this.c.details.type&&c(d).addClass("dtr-inline collapsed");c(d).find("[name]").removeAttr("name");d=c("
    ").css({width:1,height:1,overflow:"hidden",clear:"both"}).append(d);d.insertBefore(b.table().node());g.each(function(c){c=b.column.index("fromVisible", +c);a[c].minWidth=this.offsetWidth||0});d.remove()}},_setColumnVis:function(b,a){var d=this.s.dt,e=a?"":"none";c(d.column(b).header()).css("display",e);c(d.column(b).footer()).css("display",e);d.column(b).nodes().to$().css("display",e);c.isEmptyObject(m)||d.cells(null,b).indexes().each(function(a){r(d,a.row,a.column)})},_tabIndexes:function(){var b=this.s.dt,a=b.cells({page:"current"}).nodes().to$(),d=b.settings()[0],e=this.c.details.target;a.filter("[data-dtr-keyboard]").removeData("[data-dtr-keyboard]"); +a="number"===typeof e?":eq("+e+")":e;"td:first-child, th:first-child"===a&&(a=">td:first-child, >th:first-child");c(a,b.rows({page:"current"}).nodes()).attr("tabIndex",d.iTabIndex).data("dtr-keyboard",1)}});j.breakpoints=[{name:"desktop",width:Infinity},{name:"tablet-l",width:1024},{name:"tablet-p",width:768},{name:"mobile-l",width:480},{name:"mobile-p",width:320}];j.display={childRow:function(b,a,d){if(a){if(c(b.node()).hasClass("parent"))return b.child(d(),"child").show(),!0}else{if(b.child.isShown())return b.child(!1), +c(b.node()).removeClass("parent"),!1;b.child(d(),"child").show();c(b.node()).addClass("parent");return!0}},childRowImmediate:function(b,a,d){if(!a&&b.child.isShown()||!b.responsive.hasHidden())return b.child(!1),c(b.node()).removeClass("parent"),!1;b.child(d(),"child").show();c(b.node()).addClass("parent");return!0},modal:function(b){return function(a,d,e){if(d)c("div.dtr-modal-content").empty().append(e());else{var f=function(){g.remove();c(k).off("keypress.dtr")},g=c('
    ').append(c('
    ').append(c('
    ').append(e())).append(c('
    ×
    ').click(function(){f()}))).append(c('
    ').click(function(){f()})).appendTo("body"); +c(k).on("keyup.dtr",function(a){27===a.keyCode&&(a.stopPropagation(),f())})}b&&b.header&&c("div.dtr-modal-content").prepend("

    "+b.header(a)+"

    ")}}};var m={};j.renderer={listHiddenNodes:function(){return function(b,a,d){var e=c('
      '),f=!1;c.each(d,function(a,d){d.hidden&&(c('
    • '+d.title+"
    • ").append(c('').append(s(b, +d.rowIndex,d.columnIndex))).appendTo(e),f=!0)});return f?e:!1}},listHidden:function(){return function(b,a,d){return(b=c.map(d,function(a){return a.hidden?'
    • '+a.title+' '+a.data+"
    • ":""}).join(""))?c('
        ').append(b):!1}},tableAll:function(b){b=c.extend({tableClass:""},b);return function(a, +d,e){a=c.map(e,function(a){return''+a.title+": "+a.data+""}).join("");return c('').append(a)}}};j.defaults={breakpoints:j.breakpoints,auto:!0,details:{display:j.display.childRow,renderer:j.renderer.listHidden(),target:0,type:"inline"},orthogonal:"display"};var p=c.fn.dataTable.Api;p.register("responsive()",function(){return this});p.register("responsive.index()", +function(b){b=c(b);return{column:b.data("dtr-index"),row:b.parent().data("dtr-index")}});p.register("responsive.rebuild()",function(){return this.iterator("table",function(b){b._responsive&&b._responsive._classLogic()})});p.register("responsive.recalc()",function(){return this.iterator("table",function(b){b._responsive&&(b._responsive._resizeAuto(),b._responsive._resize())})});p.register("responsive.hasHidden()",function(){var b=this.context[0];return b._responsive?-1!==c.inArray(!1,b._responsive.s.current): +!1});p.registerPlural("columns().responsiveHidden()","column().responsiveHidden()",function(){return this.iterator("column",function(b,a){return b._responsive?b._responsive.s.current[a]:!1},1)});j.version="2.2.1";c.fn.dataTable.Responsive=j;c.fn.DataTable.Responsive=j;c(k).on("preInit.dt.dtr",function(b,a){if("dt"===b.namespace&&(c(a.nTable).hasClass("responsive")||c(a.nTable).hasClass("dt-responsive")||a.oInit.responsive||o.defaults.responsive)){var d=a.oInit.responsive;!1!==d&&new j(a,c.isPlainObject(d)? +d:{})}});return j}); + + +/*! + Bootstrap 4 integration for DataTables' Responsive + ©2016 SpryMedia Ltd - datatables.net/license +*/ +(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-responsive"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs4")(a,b).$;b.fn.dataTable.Responsive||require("datatables.net-responsive")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable,b=a.Responsive.display,g=b.modal,e=c('").appendTo(c),f=e('
        ');for(e("tbody tr:lt(4)",b).clone().appendTo(d);3>e("tr",d).length;)d.append("");e("div."+a.oClasses.sScrollBody,f).append(c);a=this.s.dt.nHolding||b.parentNode;e(a).is(":visible")||(a="body");f.appendTo(a);this.s.heights.row=e("tr",d).eq(1).outerHeight();f.remove()},_fnInfo:function(){if(this.s.dt.oFeatures.bInfo){var a=this.s.dt,b=a.oLanguage,c= +this.dom.scroller.scrollTop,d=Math.floor(this.fnPixelsToRow(c,!1,this.s.ani)+1),f=a.fnRecordsTotal(),i=a.fnRecordsDisplay(),c=Math.ceil(this.fnPixelsToRow(c+this.s.heights.viewport,!1,this.s.ani)),c=i " + data[2]; + } + }), + renderer: $.fn.dataTable.Responsive.renderer.tableAll({ + tableClass: 'table' + }), + type: "column" + } + }, + columnDefs: [ + { + targets: 0, + className: 'control', + orderable: false + }, + { + targets: 1, + orderable: false + } + ], + order: [ + [6, 'desc'] + ] +}); + +$(".deletemsgbtn").click(function () { + var msgid = $(this).data("message"); + if (window.confirm("Delete message?")) { + document.location.href = "action.php?action=deletemessage&id=" + msgid + "&source=messages"; + } +}); \ No newline at end of file