src/pyams_skin/resources/js/myams.js
changeset 245 79635dd71cca
parent 241 4b68a8759677
child 248 86b71518e457
equal deleted inserted replaced
244:4b5ae98a90b1 245:79635dd71cca
     1 /*
     1 /*
     2  * MyAMS
     2  * MyAMS
     3  * « My Application Management Skin »
     3  * « My Application Management Skin »
     4  *
     4  *
     5  * $Tag$ (rev. 1)
     5  * $Tag: 0.1.11 $ (rev. 1)
     6  * A bootstrap based application/administration skin
     6  * A bootstrap based application/administration skin
     7  *
     7  *
     8  * Custom administration and application skin tools
     8  * Custom administration and application skin tools
     9  * Released under Zope Public License ZPL 1.1
     9  * Released under Zope Public License ZPL 1.1
    10  * ©2014-2016 Thierry Florac <tflorac@ulthar.net>
    10  * ©2014-2016 Thierry Florac <tflorac@ulthar.net>
  3197 											var dataOptions = {};
  3197 											var dataOptions = {};
  3198 											var settings = $.extend({}, dataOptions, data.amsTypeaheadOptions);
  3198 											var settings = $.extend({}, dataOptions, data.amsTypeaheadOptions);
  3199 											settings = ams.executeFunctionByName(data.amsTypeaheadInitCallback, input, settings) || settings;
  3199 											settings = ams.executeFunctionByName(data.amsTypeaheadInitCallback, input, settings) || settings;
  3200 											var plugin = input.typeahead(settings);
  3200 											var plugin = input.typeahead(settings);
  3201 											ams.executeFunctionByName(data.amsTypeaheadAfterInitCallback, input, plugin, settings);
  3201 											ams.executeFunctionByName(data.amsTypeaheadAfterInitCallback, input, plugin, settings);
       
  3202 										});
       
  3203 								   });
       
  3204 				}
       
  3205 			},
       
  3206 
       
  3207 			/**
       
  3208 			 * Treeview plug-in
       
  3209 			 */
       
  3210 			treeview: function(element) {
       
  3211 				var treeviews = $('.treeview', element);
       
  3212 				if (treeviews.length > 0) {
       
  3213 					ams.ajax.check($.fn.treview,
       
  3214 								   ams.baseURL + 'ext/bootstrap-treeview' + ams.devext + '.js',
       
  3215 								   function(first_load) {
       
  3216 										if (first_load) {
       
  3217 											ams.getCSS(ams.baseURL + '../css/ext/bootstrap-treeview' + ams.devext + '.css', 'bootstrap-treeview');
       
  3218 										}
       
  3219 										treeviews.each(function() {
       
  3220 											var treeview = $(this);
       
  3221 											var data = treeview.data();
       
  3222 											var dataOptions = {
       
  3223 												data: data.amsTreeviewData,
       
  3224 												levels: data.amsTreeviewLevels,
       
  3225 												injectStyle: data.amsTreeviewInjectStyle,
       
  3226 												expandIcon: data.amsTreeviewExpandIcon || 'fa fa-fw fa-plus-square-o',
       
  3227 												collapseIcon: data.amsTreeviewCollaspeIcon || 'fa fa-fw fa-minus-square-o',
       
  3228 												emptyIcon: data.amsTreeviewEmptyIcon || 'fa fa-fw',
       
  3229 												nodeIcon: data.amsTreeviewNodeIcon,
       
  3230 												selectedIcon: data.amsTreeviewSelectedIcon,
       
  3231 												checkedIcon: data.amsTreeviewCheckedIcon || 'fa fa-fw fa-check-square-o',
       
  3232 												uncheckedIcon: data.amsTreeviewUncheckedIcon || 'fa fa-fw fa-square-o',
       
  3233 												color: data.amsTreeviewColor,
       
  3234 												backColor: data.amsTreeviewBackColor,
       
  3235 												borderColor: data.amsTreeviewBorderColor,
       
  3236 												onHoverColor: data.amsTreeviewHoverColor,
       
  3237 												selectedColor: data.amsTreeviewSelectedColor,
       
  3238 												selectedBackColor: data.amsTreeviewSelectedBackColor,
       
  3239 												unselectableColor: data.amsTreeviewUnselectableColor || 'rgba(1,1,1,0.25)',
       
  3240 												unselectableBackColor: data.amsTreeviewUnselectableBackColor || 'rgba(1,1,1,0.25)',
       
  3241 												enableLinks: data.amsTreeviewEnableLinks,
       
  3242 												highlightSelected: data.amsTreeviewHighlightSelected,
       
  3243 												highlightSearchResults: data.amsTreeviewhighlightSearchResults,
       
  3244 												showBorder: data.amsTreeviewShowBorder,
       
  3245 												showIcon: data.amsTreeviewShowIcon,
       
  3246 												showCheckbox: data.amsTreeviewShowCheckbox,
       
  3247 												showTags: data.amsTreeviewShowTags,
       
  3248 												toggleUnselectable: data.amsTreeviewToggleUnselectable,
       
  3249 												multiSelect: data.amsTreeviewMultiSelect,
       
  3250 												onNodeChecked: ams.getFunctionByName(data.amsTreeviewNodeChecked),
       
  3251 												onNodeCollapsed: ams.getFunctionByName(data.amsTreeviewNodeCollapsed),
       
  3252 												onNodeDisabled: ams.getFunctionByName(data.amsTreeviewNodeDisabled),
       
  3253 												onNodeEnabled: ams.getFunctionByName(data.amsTreeviewNodeEnabled),
       
  3254 												onNodeExpanded: ams.getFunctionByName(data.amsTreeviewNodeExpanded),
       
  3255 												onNodeSelected: ams.getFunctionByName(data.amsTreeviewNodeSelected),
       
  3256 												onNodeUnchecked: ams.getFunctionByName(data.amsTreeviewNodeUnchecked),
       
  3257 												onNodeUnselected: ams.getFunctionByName(data.amsTreeviewNodeUnselected),
       
  3258 												onSearchComplete: ams.getFunctionByName(data.amsTreeviewSearchComplete),
       
  3259 												onSearchCleared: ams.getFunctionByName(data.amsTreeviewSearchCleared)
       
  3260 											};
       
  3261 											var settings = $.extend({}, dataOptions, data.amsTreeviewOptions);
       
  3262 											settings = ams.executeFunctionByName(data.amsTreeviewInitcallback, treeview, settings) || settings;
       
  3263 											var plugin = treeview.treeview(settings);
       
  3264 											ams.executeFunctionByName(data.amsTreeviewAfterInitCallback, treeview, plugin, settings);
  3202 										});
  3265 										});
  3203 								   });
  3266 								   });
  3204 				}
  3267 				}
  3205 			},
  3268 			},
  3206 
  3269 
  3968 												onDrop: ams.getFunctionByName(data.amsTabledndDrop) || function(dnd_table, row) {
  4031 												onDrop: ams.getFunctionByName(data.amsTabledndDrop) || function(dnd_table, row) {
  3969 													var target = data.amsTabledndDropTarget;
  4032 													var target = data.amsTabledndDropTarget;
  3970 													if (target) {
  4033 													if (target) {
  3971 														// Disable row click handler
  4034 														// Disable row click handler
  3972 														$(row).data('ams-disabled-handlers', 'click');
  4035 														$(row).data('ams-disabled-handlers', 'click');
  3973 														var rows = [];
  4036 														try {
  3974 														$(dnd_table.rows).each(function() {
  4037 															var rows = [];
  3975 															var rowId = $(this).data('ams-element-name');
  4038 															$(dnd_table.rows).each(function() {
  3976 															if (rowId) {
  4039 																var rowId = $(this).data('ams-element-name');
  3977 																rows.push(rowId);
  4040 																if (rowId) {
       
  4041 																	rows.push(rowId);
       
  4042 																}
       
  4043 															});
       
  4044 															var localTarget = ams.getFunctionByName(target);
       
  4045 															if (typeof(localTarget) === 'function') {
       
  4046 																localTarget.call(table, dnd_table, rows);
       
  4047 															} else {
       
  4048 																if (!target.startsWith(window.location.protocol)) {
       
  4049 																	var location = data.amsLocation;
       
  4050 																	if (location) {
       
  4051 																		target = location + '/' + target;
       
  4052 																	}
       
  4053 																}
       
  4054 																ams.ajax.post(target, {names: JSON.stringify(rows)});
  3978 															}
  4055 															}
  3979 														});
  4056 														} finally {
  3980 														var localTarget = ams.getFunctionByName(target);
  4057 															// Restore row click handler
  3981 														if (typeof(localTarget) === 'function') {
  4058 															setTimeout(function() {
  3982 															localTarget.call(table, dnd_table, rows);
  4059 																$(row).removeData('ams-disabled-handlers');
  3983 														} else {
  4060 															}, 50);
  3984 															if (!target.startsWith(window.location.protocol)) {
       
  3985 																var location = data.amsLocation;
       
  3986 																if (location) {
       
  3987 																	target = location + '/' + target;
       
  3988 																}
       
  3989 															}
       
  3990 															ams.ajax.post(target, {names: JSON.stringify(rows)});
       
  3991 														}
  4061 														}
  3992 														// Restore row click handler
       
  3993 														setTimeout(function() {
       
  3994 															$(row).removeData('ams-disabled-handlers');
       
  3995 														}, 50);
       
  3996 													}
  4062 													}
  3997 													return false;
  4063 													return false;
  3998 												}
  4064 												}
  3999 											};
  4065 											};
  4000 											var settings = $.extend({}, dataOptions, data.amsTabledndOptions);
  4066 											var settings = $.extend({}, dataOptions, data.amsTabledndOptions);
  4550 					content: '<i class="text-danger fa fa-fw fa-bell"></i>&nbsp; ' + ams.i18n.DELETE_WARNING,
  4616 					content: '<i class="text-danger fa fa-fw fa-bell"></i>&nbsp; ' + ams.i18n.DELETE_WARNING,
  4551 					status: 'info',
  4617 					status: 'info',
  4552 					buttons: ams.i18n.BTN_OK_CANCEL
  4618 					buttons: ams.i18n.BTN_OK_CANCEL
  4553 				}, function(button) {
  4619 				}, function(button) {
  4554 					if (button === ams.i18n.BTN_OK) {
  4620 					if (button === ams.i18n.BTN_OK) {
  4555 						var table = link.parents('table').first();
       
  4556 						var location = table.data('ams-location') || '';
       
  4557 						var tr = link.parents('tr').first();
  4621 						var tr = link.parents('tr').first();
       
  4622 						var table = tr.parents('table').first();
       
  4623 						var location = tr.data('ams-location') || table.data('ams-location') || '';
  4558 						var deleteTarget = tr.data('ams-delete-target') || table.data('ams-delete-target') || 'delete-element.json';
  4624 						var deleteTarget = tr.data('ams-delete-target') || table.data('ams-delete-target') || 'delete-element.json';
  4559 						var objectName = tr.data('ams-element-name');
  4625 						var objectName = tr.data('ams-element-name');
  4560 						MyAMS.ajax.post(location + '/' + deleteTarget, {'object_name': objectName}, function(result, status) {
  4626 						MyAMS.ajax.post(location + '/' + deleteTarget, {'object_name': objectName}, function(result, status) {
  4561 							if (result.status === 'success') {
  4627 							if (result.status === 'success') {
  4562 								if (table.hasClass('datatable')) {
  4628 								if (table.hasClass('datatable')) {
  4577 		}
  4643 		}
  4578 	};
  4644 	};
  4579 
  4645 
  4580 
  4646 
  4581 	/**
  4647 	/**
       
  4648 	 * Tree management
       
  4649 	 */
       
  4650 	MyAMS.tree = {
       
  4651 
       
  4652 		/**
       
  4653 		 * Open close tree node inside a table
       
  4654 		 */
       
  4655 		switchTableNode: function() {
       
  4656 
       
  4657 			function removeChildNodes(node_id) {
       
  4658 				$('tr[data-ams-tree-node-parent-id="' + node_id + '"]').each(function() {
       
  4659 					var row = $(this);
       
  4660 					removeChildNodes(row.data('ams-tree-node-id'));
       
  4661 					row.remove();
       
  4662 				})
       
  4663 			}
       
  4664 
       
  4665 			var node = $(this);
       
  4666 			var switcher = $('i.switch', node);
       
  4667 			var tr = node.parents('tr').first();
       
  4668 			var table = tr.parents('table').first();
       
  4669 			if (switcher.hasClass('fa-minus-square-o')) {
       
  4670 				removeChildNodes(tr.data('ams-tree-node-id'));
       
  4671 				switcher.removeClass('fa-minus-square-o')
       
  4672 						.addClass('fa-plus-square-o');
       
  4673 			} else {
       
  4674 				var location = tr.data('ams-location') || table.data('ams-location') || '';
       
  4675 				var treeNodesTarget = tr.data('ams-tree-nodes-target') || table.data('ams-tree-nodes-target') || 'get-tree-nodes.json';
       
  4676 				var sourceName = tr.data('ams-element-name');
       
  4677 				switcher.removeClass('fa-plus-square-o')
       
  4678 						.addClass('fa-cog fa-spin');
       
  4679 				MyAMS.ajax.post(location + '/' + sourceName + '/' + treeNodesTarget, {
       
  4680 					can_sort: !$('td.sorter', tr).is(':empty')
       
  4681 				}, function(result, status) {
       
  4682 					if (result.length > 0) {
       
  4683 						var old_row = tr;
       
  4684 						for (var index = 0; index < result.length; index++) {
       
  4685 							var new_row = $(result[index]);
       
  4686 							new_row.insertAfter(old_row)
       
  4687 								   .addClass('no-drag-handle');
       
  4688 							ams.initContent(new_row);
       
  4689 							old_row = new_row;
       
  4690 						}
       
  4691 						if (table.hasClass('table-dnd')) {
       
  4692 							table.tableDnDUpdate();
       
  4693 						}
       
  4694 					}
       
  4695 					switcher.removeClass('fa-cog fa-spin')
       
  4696 							.addClass('fa-minus-square-o');
       
  4697 				});
       
  4698 			}
       
  4699 		},
       
  4700 
       
  4701 		/**
       
  4702 		 * Open close all tree nodes
       
  4703 		 */
       
  4704 		switchTree: function() {
       
  4705 			var th = $(this);
       
  4706 			var switcher = $('i.switch', th);
       
  4707 			var table = $(this).parents('table').first();
       
  4708 			var tableID = table.data('ams-tree-node-id');
       
  4709 			if (switcher.hasClass('fa-minus-square-o')) {
       
  4710 				$('tr[data-ams-tree-node-parent-id]').filter('tr[data-ams-tree-node-parent-id!="' + tableID + '"]').remove();
       
  4711 				$('i.switch', table).removeClass('fa-minus-square-o')
       
  4712 									.addClass('fa-plus-square-o');
       
  4713 			} else {
       
  4714 				var tr = $('tbody tr', table).first();
       
  4715 				var location = table.data('ams-location') || '';
       
  4716 				var target = table.data('ams-tree-nodes-target') || 'get-tree.json';
       
  4717 				switcher.removeClass('fa-plus-square-o')
       
  4718 						.addClass('fa-cog fa-spin');
       
  4719 				MyAMS.ajax.post(location + '/' + target, {
       
  4720 					can_sort: !$('td.sorter', tr).is(':empty')
       
  4721 				}, function(result, status) {
       
  4722 					$('tr[data-ams-tree-node-id]', table).remove();
       
  4723 					var old_row = null;
       
  4724 					for (var index = 0; index < result.length; index++) {
       
  4725 						var new_row = $(result[index]);
       
  4726 						if (old_row === null) {
       
  4727 							new_row.appendTo($('tbody', table));
       
  4728 						} else {
       
  4729 							new_row.insertAfter(old_row);
       
  4730 						}
       
  4731 						new_row.addClass('no-drag-handle');
       
  4732 						ams.initContent(new_row);
       
  4733 						old_row = new_row;
       
  4734 					}
       
  4735 					if (table.hasClass('table-dnd')) {
       
  4736 						table.tableDnDUpdate();
       
  4737 					}
       
  4738 					$('i.switch', table).removeClass('fa-plus-square-o')
       
  4739 										.addClass('fa-minus-square-o');
       
  4740 					switcher.removeClass('fa-cog fa-spin')
       
  4741 							.addClass('fa-minus-square-o');
       
  4742 				});
       
  4743 			}
       
  4744 		},
       
  4745 
       
  4746 		/**
       
  4747 		 * Sort and re-parent tree elements
       
  4748 		 */
       
  4749 		sortTree: function(dnd_table, row) {
       
  4750 			var data = $(dnd_table).data();
       
  4751 			var target = data.amsTabledndDropTarget;
       
  4752 			if (target) {
       
  4753 				// Disable row click handler
       
  4754 				row = $(row);
       
  4755 				row.data('ams-disabled-handlers', 'click');
       
  4756 				try {
       
  4757 					// Get root ID
       
  4758 					var tableID = row.parents('table').first().data('ams-tree-node-id');
       
  4759 					// Get moved row ID
       
  4760 					var rowID = row.data('ams-tree-node-id');
       
  4761 					var rowParentID = row.data('ams-tree-node-parent-id');
       
  4762 					// Get new parent ID
       
  4763 					var parent = row.prev('tr');
       
  4764 					if (parent.exists()) {
       
  4765 						// Move below an existing row
       
  4766 						var parentID = parent.data('ams-tree-node-id');
       
  4767 						// Check switcher state
       
  4768 						var switcher = $('.switch', parent);
       
  4769 						if (switcher.hasClass('fa-minus-square-o')) {
       
  4770 							// Opened folder: move as child
       
  4771 							if (rowParentID === parentID) {
       
  4772 								// Don't change parent
       
  4773 								var action = 'reorder';
       
  4774 							} else {
       
  4775 								// Change parent
       
  4776 								action = 'reparent';
       
  4777 							}
       
  4778 						} else {
       
  4779 							// Closed folder or simple item: move as sibling
       
  4780 							parentID = parent.data('ams-tree-node-parent-id');
       
  4781 							if (rowParentID === parentID) {
       
  4782 								// Don't change parent
       
  4783 								action = 'reorder';
       
  4784 							} else {
       
  4785 								// Change parent
       
  4786 								action = 'reparent';
       
  4787 							}
       
  4788 						}
       
  4789 					} else {
       
  4790 						// Move to site root
       
  4791 						parentID = tableID;
       
  4792 						switcher = null;
       
  4793 						if (rowParentID === parentID) {
       
  4794 							// Already child of site root
       
  4795 							action = 'reorder';
       
  4796 						} else {
       
  4797 							// Move from inner folder to site root
       
  4798 							action = 'reparent';
       
  4799 						}
       
  4800 					}
       
  4801 					// Call ordering target
       
  4802 					var localTarget = ams.getFunctionByName(target);
       
  4803 					if (typeof(localTarget) === 'function') {
       
  4804 						localTarget.call(table, dnd_table, post_data);
       
  4805 					} else {
       
  4806 						if (!target.startsWith(window.location.protocol)) {
       
  4807 							var location = data.amsLocation;
       
  4808 							if (location) {
       
  4809 								target = location + '/' + target;
       
  4810 							}
       
  4811 						}
       
  4812 						var post_data = {
       
  4813 							action: action,
       
  4814 							child: rowID,
       
  4815 							parent: parentID,
       
  4816 							order: JSON.stringify($('tr[data-ams-tree-node-id]').listattr('data-ams-tree-node-id')),
       
  4817 							can_sort: !$('td.sorter', row).is(':empty')
       
  4818 						};
       
  4819 						ams.ajax.post(target, post_data, function(result) {
       
  4820 
       
  4821 							function removeChildRows(rowID) {
       
  4822 								var childs = $('tr[data-ams-tree-node-parent-id="' + rowID + '"]');
       
  4823 								childs.each(function() {
       
  4824 									var childRow = $(this);
       
  4825 									var childID = childRow.attr('data-ams-tree-node-id');
       
  4826 									removeChildRows(childID);
       
  4827 									childRow.remove();
       
  4828 								});
       
  4829 							}
       
  4830 
       
  4831 							// Remove moved row childrens
       
  4832 							var body = $(row).parents('tbody').first();
       
  4833 							removeChildRows(rowID);
       
  4834 							if (post_data.action === 'reparent') {
       
  4835 								// Remove new parent childrens
       
  4836 								removeChildRows(parentID);
       
  4837 								row.remove();
       
  4838 								var old_row = $('tr[data-ams-tree-node-id="' + parentID + '"]');
       
  4839 								for (var index = 0; index < result.length; index++) {
       
  4840 									var new_row = $(result[index]);
       
  4841 									if (old_row.exists()) {
       
  4842 										new_row.insertAfter(old_row)
       
  4843 											   .addClass('no-drag-handle');
       
  4844 									} else {
       
  4845 										new_row.prependTo(body)
       
  4846 											   .addClass('no-drag-handle');
       
  4847 									}
       
  4848 									ams.initContent(new_row);
       
  4849 									old_row = new_row;
       
  4850 								}
       
  4851 							}
       
  4852 							$('tr').parents('table').tableDnDUpdate();
       
  4853 						});
       
  4854 					}
       
  4855 				} finally {
       
  4856 					// Restore row click handler
       
  4857 					setTimeout(function() {
       
  4858 						$(row).removeData('ams-disabled-handlers');
       
  4859 					}, 50);
       
  4860 				}
       
  4861 			}
       
  4862 			return false;
       
  4863 		}
       
  4864 	};
       
  4865 
       
  4866 
       
  4867 	/**
  4582 	 * Generic skin features
  4868 	 * Generic skin features
  4583 	 */
  4869 	 */
  4584 	MyAMS.skin = {
  4870 	MyAMS.skin = {
  4585 
  4871 
  4586 		/**
  4872 		/**
  4646 			button.addClass('disabled');
  4932 			button.addClass('disabled');
  4647 			$('i', button).addClass('fa-spin');
  4933 			$('i', button).addClass('fa-spin');
  4648 			$('input[name="activity"]:checked', '#user-activity').change();
  4934 			$('input[name="activity"]:checked', '#user-activity').change();
  4649 			$('i', button).removeClass('fa-spin');
  4935 			$('i', button).removeClass('fa-spin');
  4650 			button.removeClass('disabled');
  4936 			button.removeClass('disabled');
       
  4937 		},
       
  4938 
       
  4939 		/**
       
  4940 		 * Replace given form with new content
       
  4941 		 */
       
  4942 		refreshContent: function(changes) {
       
  4943 			var target = $('[id="' + changes.object_id + '"]');
       
  4944 			target.replaceWith($(changes.content));
       
  4945 			target = $('[id="' + changes.object_id + '"]');
       
  4946 			MyAMS.initContent(target);
       
  4947 			return target;
       
  4948 		},
       
  4949 
       
  4950 		/**
       
  4951 		 * Replace given table with new content
       
  4952 		 */
       
  4953 		refreshTable: function(changes) {
       
  4954 			var widget = $('[id="' + changes.object_id + '"]').parent('.ams-widget');
       
  4955 			widget.replaceWith($(changes.table));
       
  4956 			widget = $('[id="' + changes.object_id + '"]').parent('.ams-widget');
       
  4957 			MyAMS.initContent(widget);
       
  4958 			return widget;
       
  4959 		},
       
  4960 		/**
       
  4961 		 * Replace given row with new content
       
  4962 		 */
       
  4963 		refreshRow: function(changes) {
       
  4964 			var tr = $('tr[id="' + changes.object_id + '"]');
       
  4965 			var table = tr.parents('table').first();
       
  4966 			tr = tr.replaceWith($(changes.row));
       
  4967 			MyAMS.initContent(tr);
       
  4968 			if (table.hasClass('table-dnd')) {
       
  4969 				table.tableDnDUpdate();
       
  4970 			}
       
  4971 			return tr;
       
  4972 		},
       
  4973 
       
  4974 		/**
       
  4975 		 * Replace given row cell with new content
       
  4976 		 */
       
  4977 		refreshRowCell: function(changes) {
       
  4978 			var tr = $('tr[id="' + changes.object_id + '"]');
       
  4979 			var table = tr.parents('table').first();
       
  4980 			var headRow = $('tr', $('thead', table));
       
  4981 			var headCell = $('th[data-ams-column-name="' + changes.col_name + '"]', headRow);
       
  4982 			var index = $('th', headRow).index(headCell);
       
  4983 			if (index > -1) {
       
  4984 				var cell = $($('td', tr).get(index));
       
  4985 				cell.html(changes.cell);
       
  4986 				MyAMS.initContent(cell);
       
  4987 			}
  4651 		},
  4988 		},
  4652 
  4989 
  4653 		/**
  4990 		/**
  4654 		 * Initialize desktop and mobile widgets
  4991 		 * Initialize desktop and mobile widgets
  4655 		 */
  4992 		 */
  5525 				e.preventDefault();
  5862 				e.preventDefault();
  5526 				return false;
  5863 				return false;
  5527 			});
  5864 			});
  5528 		});
  5865 		});
  5529 
  5866 
       
  5867 		// Enable custom MyAMS refresh events
       
  5868 		$(document).on('myams.refresh', function(event, settings) {
       
  5869 			MyAMS.executeFunctionByName(settings.handler || MyAMS.skin.refreshContent, event.target, settings);
       
  5870 		});
       
  5871 		
  5530 		// Init page content
  5872 		// Init page content
  5531 		ams.initContent(document);
  5873 		ams.initContent(document);
  5532 		if (ams.ajaxNav && nav.exists()) {
  5874 		if (ams.ajaxNav && nav.exists()) {
  5533 			ams.skin.checkURL();
  5875 			ams.skin.checkURL();
  5534 		}
  5876 		}