complete: $("#glm-admin-search-overlay").fadeOut('slow'),
success: function(data) {
- // Kept for reference
- // data.searchData.forEach( function(value, index){
- // $("<div />", {
- // text : value,
- // class : "glm-list-result"
- // }).appendTo( $("#glm-admin-member-list"));
- // })
-
- console.log(data.searchData[1]);
-
- // Created some columns based on the keys available in the first result
- $.each(data.searchData[1], function(fieldKey, fieldVal) {
- $("<span />", {
- text : fieldKey,
- class : "header-item glm-list-header-column"
- }).appendTo( $("#glm-admin-list-columns"));
- });
-
- // Loop through the search data, treat each as a record
- $.each(data.searchData, function(recordNum, record) {
- console.log(recordNum, record);
- // Throwing all the records into the list
- $("<div />", {
- text : "ID: " + record.id + " | Name: " + record.name + " | Featured: " + record.featured.name + " | Created: " + record.created.date,
- class : "glm-list-result",
- recordID: record.id
- }).appendTo( $("#glm-admin-member-list"));
-
- // Displaying all the data fields one by one
- for(var fieldNum in record) {
- // console.log(record[fieldNum]);
- }
-
- // Displaying all the data fields one by one
- $.each(record, function(fieldKey, fieldVal) {
- // console.log(fieldKey, fieldVal)
- });
-
-
-
- });
-
}
});
}
};
- /*
- * Init Materialize collapsible
- */
- jQuery(function($){
- $('.collapsible').collapsible();
- $('select').formSelect();
- $('.modal').modal();
- })
-
- /*
- * Text Search Autocomplete
- */
- function textSearch(textSearchData){
- // Text Search Component
+ /*
+ * Init Materialize collapsible
+ */
jQuery(function($){
- let searchResults = {};
- let imageUrl = `{$glmPluginMediaUrl}/images`
- let data = {
- action : 'glm_members_admin_ajax',
- glm_action : 'glmTextSearch',
- table : textSearchData.table,
- fields : textSearchData.fields,
- where : textSearchData.where
- }
- $('input#'+textSearchData.slug+'-text').autoComplete({
- minChars: 1,
- source: function( request, response ) {
- data.query = request;
- $.ajax({
- dataType: "json",
- type : 'POST',
- url: '{$ajaxUrl}',
- data: data,
- success: function(data) {
- console.log(data.searchData);
- if(data.searchData){
- let searchDropdown = [];
- for(let i = 0;i < data.searchData.length;i++){
- let searchTitle = Object.keys(data.searchData[i])[0];
- let image = (data.searchData[i][searchTitle].image) ? data.searchData[i][searchTitle].image : null;
- let memberID = data.searchData[i][searchTitle].memberID;
- let entityID = data.searchData[i][searchTitle].entityID;
- searchDropdown.push(searchTitle);
- {literal} searchResults[searchTitle] = {image: image, memberID: memberID, entityID: entityID}; {/literal}
- }
- {literal} response(searchDropdown); {/literal}
- }else{
- response(['No Results Found'])
+ $('.collapsible').collapsible();
+ $('select').formSelect();
+ $('.modal').modal();
+ })
+
+ /*
+ * Text Search Autocomplete
+ */
+ function textSearch(textSearchData){
+ // Text Search Component
+ jQuery(function($){
+ let searchResults = {};
+ let imageUrl = `{$glmPluginMediaUrl}/images`
+ let data = {
+ action : 'glm_members_admin_ajax',
+ glm_action : 'glmTextSearch',
+ table : textSearchData.table,
+ fields : textSearchData.fields,
+ where : textSearchData.where
+ }
+ $('input#'+textSearchData.slug+'-text').autoComplete({
+ minChars: 1,
+ source: function( request, response ) {
+ data.query = request;
+ $.ajax({
+ dataType: "json",
+ type : 'POST',
+ url: '{$ajaxUrl}',
+ data: data,
+ success: function(data) {
+ console.log(data.searchData);
+ if(data.searchData){
+ let searchDropdown = [];
+ for(let i = 0;i < data.searchData.length;i++){
+ let searchTitle = Object.keys(data.searchData[i])[0];
+ let image = (data.searchData[i][searchTitle].image) ? data.searchData[i][searchTitle].image : null;
+ let memberID = data.searchData[i][searchTitle].memberID;
+ let entityID = data.searchData[i][searchTitle].entityID;
+ searchDropdown.push(searchTitle);
+ {literal} searchResults[searchTitle] = {image: image, memberID: memberID, entityID: entityID}; {/literal}
+ }
+ {literal} response(searchDropdown); {/literal}
+ }else{
+ response(['No Results Found'])
+ }
}
+ });
+ },
+ renderItem: function (item, search){
+ search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
+ var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi");
+ return '<div class="autocomplete-suggestion" data-langname="'+item[0]+'" data-lang="'+item[1]+'" data-val="'+search+'">'+item.replace(re, "<b>$1</b>")+'</div>';
+
+ },
+ onSelect: function(e, term, item){
+ let search = $(item).text();
+ console.log(search)
+ if(search !== "No Results Found"){
+ window.location.replace(textSearchData.resultUrl+searchResults[search].entityID);
}
- });
- },
- renderItem: function (item, search){
- search = search.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
- var re = new RegExp("(" + search.split(' ').join('|') + ")", "gi");
- return '<div class="autocomplete-suggestion" data-langname="'+item[0]+'" data-lang="'+item[1]+'" data-val="'+search+'">'+item.replace(re, "<b>$1</b>")+'</div>';
+ },
+ });
+ });
+ }
- },
- onSelect: function(e, term, item){
- let search = $(item).text();
- console.log(search)
- if(search !== "No Results Found"){
- window.location.replace(textSearchData.resultUrl+searchResults[search].entityID);
+ /*
+ * Date Search Widget
+ */
+ function dateSearch(dateSearchData){
+ jQuery(function($){
+
+ var date = new Date();
+ var toDate = '', fromDate = (dateSearchData.defaultFromDate) ? '&' + dateSearchData.fromDate + '=' + dateSearchData.defaultFromDate : '';
+ $('.fromDate').datepicker({
+ format : 'mm/dd/yyyy',
+ setDefaultDate : true,
+ defaultDate : date,
+ autoClose : true,
+ onClose : function(){
+ fromDate = '&' + dateSearchData.fromDate + '=' + $(this)[0].el.value;
}
- },
+ });
+ $('.toDate').datepicker({
+ format : 'mm/dd/yyyy',
+ autoClose : true,
+ onClose: function(){
+ toDate = '&' + dateSearchData.toDate + '=' + $(this)[0].el.value;
+ }
+ });
+ console.log( dateSearchData.resultUrl + fromDate + toDate)
+ $('#' + dateSearchData.searchBtn).on("click", function(){
+ window.location = dateSearchData.resultUrl + fromDate + toDate;
+ })
});
- });
- }
-
- /*
- * Date Search Widget
- */
- function dateSearch(dateSearchData){
- jQuery(function($){
+ }
- var date = new Date();
- var toDate = '', fromDate = (dateSearchData.defaultFromDate) ? '&' + dateSearchData.fromDate + '=' + dateSearchData.defaultFromDate : '';
- $('.fromDate').datepicker({
- format : 'mm/dd/yyyy',
- setDefaultDate : true,
- defaultDate : date,
- autoClose : true,
- onClose : function(){
- fromDate = '&' + dateSearchData.fromDate + '=' + $(this)[0].el.value;
- }
- });
- $('.toDate').datepicker({
- format : 'mm/dd/yyyy',
- autoClose : true,
- onClose: function(){
- toDate = '&' + dateSearchData.toDate + '=' + $(this)[0].el.value;
- }
+ /*
+ * List component tooltips
+ */
+ function listComponent(listComponentData) {
+ jQuery(function($){
+ $('.tooltipped').tooltip();
});
- console.log( dateSearchData.resultUrl + fromDate + toDate)
- $('#' + dateSearchData.searchBtn).on("click", function(){
- window.location = dateSearchData.resultUrl + fromDate + toDate;
- })
- });
- }
-
- /*
- * Export Modal
- */
- function exportData(exportData){
- jQuery(function($){
-
- });
- }
-
- /*
- * List component tooltips
- */
- function listComponent(listComponentData) {
- jQuery(function($){
- $('.tooltipped').tooltip();
- });
- }
-
-
-
-
-
+ }
+
let data = {
action : 'glm_members_admin_ajax',
glm_action : 'adminSearch',
+ form_action : 'list'
// table : textSearchData.table,
// fields : textSearchData.fields,
// where : textSearchData.where
$(".glm-admin-search-field").on("change", function(){
console.log( $(this) );
window.Glma.adminSearch(data);
- })
+ });
});
</script>
--- /dev/null
+
+<div class="glm-admin-table-inner glm-admin-table">
+ <form action="{$thisUrl}?page={$thisPage}" method="post" id="searchForm">
+ <input type="hidden" name="glm_action" value="list">
+ <input type="hidden" name="prevStart" value="{$prevStart}">
+ <input type="hidden" name="nextStart" value="{$nextStart}">
+ <input type="hidden" name="limit" value="{$limit}">
+ <input type="hidden" name="savedAlpha" value="{$alphaSelected}">
+
+ <h2 class="glm-admin-table-header">List of {$terms.term_member_plur_cap}</h2>
+
+ <div class="glm-row">
+ <b>{$terms.term_member_cap} Types</b>
+ <select id="filterMemberTypes" name="filterMemberTypes">
+ <option value=""></option>
+ {foreach $member_types as $type}
+ <option value="{$type.id}"{if $type.id == $mTypeSelected} selected{/if}>{$type.name}</option>
+ {/foreach}
+ </select>
+ </div>
+
+ <div class="glm-row">
+ <b>Show Archived: </b><input type="checkbox" name="filterArchived" value="true" id="filterArchived" class="listFilter"{if $filterArchived} checked{/if} style="margin-right: 1em;">
+ <b>Featured Only: </b><input type="checkbox" name="filterFeatured" value="true" id="filterFeatured" class="listFilter"{if $filterFeatured} checked{/if} style="margin-right: 1em;">
+ <b>Pending Only: </b><input type="checkbox" name="filterPending" value="true" id="filterPending" class="listFilter"{if $filterPending} checked{/if} style="margin-right: 1em;">
+ </div>
+
+ {apply_filters('glm-member-db-custom-filter-search', '', 'glm-member-db' )}
+
+ <p><b>Total found:</b> {$memberCount} </p>
+
+ <br clear="all">
+ <!-- Add Member Type Button and Dialog Box -->
+ <div id="exportMembersButton" class="button button-secondary glm-admin-export-button">{$terms.term_member_cap} Export/Reports</div>
+
+ {if $paging}
+ <input type="Submit" name="pageSelect" value="Previous {$limit} {$terms.term_member_plur_cap}" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
+ <input type="Submit" name="pageSelect" value="Next {$limit} {$terms.term_member_plur_cap}" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
+ {/if}
+
+ <div class="glm-alpha-links">
+ <a href="{$thisUrl}?page=glm-members-admin-menu-members-list&glm_action=list&text_search={$textSearch}&categorySearch={$catSearchSelected}" class="glm-alpha-link{if !$alphaSelected} glm-alpha-link-selected{/if}">All</a>
+ {foreach $alphaList as $a}
+ <a href="{$thisUrl}?page=glm-members-admin-menu-members-list&glm_action=list&alpha={$a.alpha}&text_search={$textSearch}&categorySearch={$catSearchSelected}" class="glm-alpha-link{if $a.default} glm-alpha-link-selected{/if}">{$a.alpha}</a>
+ {/foreach}
+ </div>
+
+ <table class="wp-list-table striped glm-admin-table-single">
+ <thead>
+ <tr>
+ <th>ID</th>
+ <th>{$terms.term_member_cap} Name</th>
+ <th></th>
+ <th></th>
+ <th>Featured</th>
+ <th>Access</th>
+<!-- <th>$terms.term_member_cap Type</th>-->
+ </tr>
+ </thead>
+ <tbody>
+ {if $haveMembers}
+ {assign var="i" value="0"}
+ {foreach $members as $m}
+ {if $i++ is odd by 1}
+ <tr>
+ {else}
+ <tr class="alternate">
+ {/if}
+ <td style="width: 50px;">
+ {$m.id}
+ </td>
+ <td>
+ <a href="{$thisUrl}?page=glm-members-admin-menu-member&glm_action=index&member={$m.id}">{$m.name}</a>
+ </td>
+ <td style="width: 120px;">
+ <a href="{$thisUrl}?page=glm-members-admin-menu-member&glm_action=memberInfo&member={$m.id}&memberInfo={$m.active_id}" class="button button-secondary glm-button-small glm-admin-edit-active-profile" style="margin: 0 .2em 0 .2em;">Edit Active Profile</a>
+ </td>
+ <td style="width: 120px;">
+ <a href="{$siteBaseUrl}{$settings.canonical_member_page}/{$m.member_slug}/" target="_blank">View Profile</a>
+ </td>
+ <td style="width: 90px;">
+ {$m.featured.name}
+ </td>
+ <td style="width: 120px">
+ {$m.access_short.name}
+ </td>
+<!-- <td>
+ $m.member_type_short
+ </td>-->
+ </tr>
+ {/foreach}
+ {else}
+ <tr class="alternate"><td colspan="2">(no {$terms.term_member_plur} listed)</td></tr>
+ {/if}
+ </tbody>
+ </table>
+
+ {if $paging}
+ <input type="Submit" name="pageSelect" value="Previous {$limit} {$terms.term_member_plur_cap}" class="button button-secondary glm-button"{if !$prevStart} disabled{/if}>
+ <input type="Submit" name="pageSelect" value="Next {$limit} {$terms.term_member_plur_cap}" class="button button-secondary glm-button"{if !$nextStart} disabled{/if}>
+ {/if}
+
+ </form>
+
+ <div id="exportMembersDialog" class="glm-dialog-box" title="Export {$terms.term_member_cap}">
+ <form id="exportForm" action="{$ajaxUrl}" method="post" enctype="multipart/form-data">
+ <input type="hidden" name="action" value="glm_members_admin_ajax">
+ <input type="hidden" name="glm_action" value="membersListExport">
+ <table class="glm-admin-table">
+ <tr>
+ <th>Categories: </th>
+ <td>
+ <select id="exportFilterCategories" name="filterCategories[]" multiple="multiple" size="1">
+ {foreach from=$categories item=v}
+ <option value="{$v.id}" data-parent="{$v.parent}"{if $v.selected} selected{/if}>
+ {if $v.parent_id} {/if}{$v.name}
+ </option>
+ {/foreach}
+ </select>
+ </td>
+ </tr>
+ <tr>
+ <th>Member Types:</th>
+ <td>
+ <select id="exportFilterMemberTypes" name="filterMemberTypes">
+ <option value=""></option>
+ {foreach $member_types as $type}
+ <option value="{$type.id}"{if $type.id == $mTypeSelected} selected{/if}>{$type.name}</option>
+ {/foreach}
+ </select>
+ </td>
+ </tr>
+ <tr><th>Show Archived: </th><td><input type="checkbox" name="filterArchived"></td></tr>
+ <tr><th>Featured Only: </th><td><input type="checkbox" name="filterFeatured"></td></tr>
+ <tr><th>Pending Only: </th><td><input type="checkbox" name="filterPending"></td></tr>
+ <tr><th>Name Search: </th><td><input class="exportMembersSearch glm-form-text-input-medium" type="text" name="text_search" id="autoTest"><br>
+ Enter any portion of a {$terms.term_member_cap} name and press enter or select any specific {$terms.term_member_cap} found.
+ </td></tr>
+ <tr>
+ <th>Fields to export</th>
+ <td>
+ <table padding="3">
+ <tr>
+ <td colspan="2"><a id="selectAllExportFields">Check All</a> / <a id="unselectAllExportFields">Uncheck All</a></td>
+ </tr>
+ <tr>
+ <td class="exportFieldsTd">
+ <input type="checkbox" name="exportId"> {$terms.term_member_cap} ID<br>
+ <input type="checkbox" name="exportOldId"> Old {$terms.term_member_cap} ID<br>
+ <input type="checkbox" name="exportMember" checked> {$terms.term_member_cap} Name<br>
+ <input type="checkbox" name="exportReferenceName"> Profile Reference Name<br>
+ <input type="checkbox" name="exportAddr1" checked> Address Line #1<br>
+ <input type="checkbox" name="exportAddr2" checked> Address Line #2<br>
+ <input type="checkbox" name="exportCity" checked> City<br>
+ <input type="checkbox" name="exportState" checked> State<br>
+ <input type="checkbox" name="exportZip" checked> ZIP/Postal Code<br>
+ <input type="checkbox" name="exportCounty" checked> County <br>
+ <input type="checkbox" name="exportRegion" checked> Region <br>
+ </td>
+ <td class="exportFieldsTd">
+ <input type="checkbox" name="exportPhone" checked> Phone #<br>
+ <input type="checkbox" name="exportTollFree" checked> Toll Free<br>
+ <input type="checkbox" name="exportEmail" checked> Main E-Mail<br>
+ <input type="checkbox" name="exportPriContactName" checked> Primary Contact Name<br>
+ <input type="checkbox" name="exportPriContactEmail" checked> Primary Contact E-Mail<br>
+ <input type="checkbox" name="exportUrl" checked> Web Address (URL)<br>
+ <input type="checkbox" name="exportCategories" checked> Categories<br>
+ <input type="checkbox" name="exportMailingAddr1" checked> Mailing Address Line #1<br>
+ <input type="checkbox" name="exportMailingAddr2" checked> Mailing Address Line #2<br>
+ <input type="checkbox" name="exportMailingCity" checked> Mailing City<br>
+ <input type="checkbox" name="exportMailingState" checked> Mailing State<br>
+ <input type="checkbox" name="exportMailingZip" checked> Mailing ZIP/Postal Code<br>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ {* Custom Field Part *}
+ {if apply_filters( 'glm-members-customfields-active', false )}
+ <tr>
+ <th>Custom Fields</th>
+ <td>
+ {$customFields = apply_filters('glm-member-db-fields-get-members-fields', false, 'glm-member-db')}
+ {if $customFields}
+ {foreach $customFields as $cf}
+ <input type="checkbox" name="exportCF[{$cf.id}]" checked> {$cf.field_name} <br>
+ {/foreach}
+ {/if}
+ </td>
+ </tr>
+ {/if}
+ <tr>
+ <th>Include Clicks & Views</th>
+ <td>
+ <table padding="3">
+ <tr>
+ <td>
+ Month: <input type="text" class="monthPicker" name="monthYear" value="{$monthYear}">
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <input type="checkbox" name="exportClicks"> URL Click Counts<br>
+ <input type="checkbox" name="exportViews"> Detail Page View Counts
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <th>Export to: </th>
+ <td>
+ <input type="radio" name="type" value="print" checked="checked"> Export for Print<br>
+ <input type="radio" name="type" value="csv"> Export to Spreadsheet (CSV)
+ </td>
+ </tr>
+ </table>
+ <a id="exportMembersCancel" class="button button-secondary glm-right">Cancel</a>
+ <input type="submit" value="Export" class="button button-primary">
+ </form>
+ </div>
+</div>
+ <script type="text/javascript">
+ jQuery(document).ready(function($) {
+
+ $('#selectAllExportFields').click(function(){
+ $('.exportFieldsTd input[type="checkbox"]').each(function(){
+ $(this).prop('checked', true);
+ });
+ });
+ $('#unselectAllExportFields').click(function(){
+ $('.exportFieldsTd input[type="checkbox"]').each(function(){
+ $(this).prop('checked', false);
+ });
+ });
+
+ $('.monthPicker').datepicker( {
+ changeMonth: true,
+ changeYear: true,
+ showButtonPanel: true,
+ dateFormat: 'MM yy',
+ onClose: function(dateText, inst) {
+ var month = $("#ui-datepicker-div .ui-datepicker-month :selected").val();
+ var year = $("#ui-datepicker-div .ui-datepicker-year :selected").val();
+ $(this).datepicker('setDate', new Date(year, month, 1));
+ },
+ beforeShow: function (input, inst) {
+ var $this = $(this),
+ // For the simplicity we suppose the dateFormat will be always without the day part, so we
+ // manually add it since the $.datepicker.parseDate will throw if the date string doesn't contain the day part
+ dateFormat = 'd ' + $this.datepicker('option', 'dateFormat'),
+ date;
+
+ try {
+ date = $.datepicker.parseDate(dateFormat, '1 ' + $this.val());
+ } catch (ex) {
+ return;
+ }
+
+ $this.datepicker('option', 'defaultDate', date);
+ $this.datepicker('setDate', date);
+
+ inst.dpDiv.addClass('datepicker-month-year');
+ }
+ });
+
+ $("#exportMembersDialog").dialog({
+ autoOpen: false,
+ minWidth: 700,
+ dialogClass: "glm-dialog-no-close"
+ });
+ $('#exportMembersButton').click( function() {
+ $("#exportMembersDialog").dialog("open");
+ });
+ $('#exportMembersCancel').click( function() {
+ $("#exportMembersDialog").dialog("close");
+ });
+
+ // Filter triggers
+ $(".listFilter" ).change( function() {
+
+ var filter = '';
+
+ // Check for archived filter
+ if ($("#filterArchived").attr('checked')) {
+ filter += '&filterArchived=true';
+ }
+
+ // Check for pending data filter
+ if ($("#filterPending").attr('checked')) {
+ filter += '&filterPending=true';
+ }
+
+ // Check for featured data filter
+ if ($("#filterFeatured").attr('checked')) {
+ filter += '&filterFeatured=true';
+ }
+
+ window.location.href = "{$thisUrl}?page={$thisPage}&glm_action=list" + filter;
+
+ return false;
+ });
+
+ // Perform Export
+ $("#glmMembersExport").on( 'click', function() {
+ window.open("{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=membersListExport&type=print", 'Member Export');
+ return false;
+ });
+
+ // Perform CSV Export
+ $("#glmMembersExportCsv").on( 'click', function() {
+ window.open("{$ajaxUrl}?action=glm_members_admin_ajax&glm_action=membersListExport&type=csv", 'Member Export CSV');
+ return false;
+ });
+
+ /*
+ * Do autocomplete search for member
+ * label: What will be searched
+ * value: What will be displayed when selected
+ * id: Member id added so we can go to the member while showing what was selected
+ * Also note that autocomplete does not properly render HTML codes, so we
+ * "unescape" them for HTML in Smarty.
+ */
+
+ var availableTags = [
+ {foreach $namesList as $m}
+ { label: "{$m.name|unescape:'html'|replace:'"':''}", value: "{$m.name|unescape:'html'|replace:'"':''}", id: '{$m.id}' },
+ {/foreach}
+ ];
+
+ // Autocomplete for list Text Search
+ $( ".glmMembersSearch" ).autocomplete({
+ source: availableTags,
+ html: true,
+ position: { my : "left top", at: "left bottom" },
+ select: function( event, ui ) {
+ var memberID = ui.item.id;
+ window.location.replace("{$adminUrl}?page=glm-members-admin-menu-member&glm_action=index&member=" + memberID );
+ },
+ response: function(event, ui) {
+ if (!ui.content.length) {
+ var noResult = { value:"",label:"No results found" };
+ ui.content.push(noResult);
+ }
+ }
+ });
+
+ // Autocomplete for export Text field
+ $( ".exportMembersSearch" ).autocomplete({
+
+ source: availableTags,
+ html: true,
+ position: { my : "right top", at: "right bottom" },
+ response: function(event, ui) {
+ if (!ui.content.length) {
+ var noResult = { value:"",label:"No results found" };
+ ui.content.push(noResult);
+ }
+ }
+ });
+
+ // No submit on ENTER for pop-up export form
+ jQuery.each($("#exportForm").find('input'), function(){
+ $(this).bind('keypress keydown keyup', function(e){
+ if(e.keyCode == 13) {
+ $( ".exportMembersSearch" ).autocomplete("close");
+ return false;
+ }
+ });
+ });
+
+ // Restrict autocomplete list to a certain height with scrollbar
+ $('.ui-autocomplete').css('height','200px').css('overflow-y','scroll');
+
+ // Expand multi-select on hover
+ $('#filterCategories').multiselect();
+ $('#exportFilterCategories').multiselect();
+
+
+ });
+ </script>
+
+
+