PageSourceSearch

https://www.modricainfo.com/wp-content/plugins/jquery-vertical-accordion-menu/js/jquery.dcjqaccordion.2.9.js

js modricainfo.com collected 2026-10-03 18:06:25 UTC 6,743 bytes, 213 lines download raw bytes

1/*
2 * DC jQuery Vertical Accordion Menu - jQuery vertical accordion menu plugin
3 * Copyright (c) 2011 Design Chemical
4 *
5 * Dual licensed under the MIT and GPL licenses:
6 * 	http://www.opensource.org/licenses/mit-license.php
7 * 	http://www.gnu.org/licenses/gpl.html
8 *
9 */
10(function($){
11	$.fn.dcAccordion = function(options) {
12		//set default options 
13		var defaults = {
14			classParent	 : 'dcjq-parent',
15			classActive	 : 'active',			classArrow	 : 'dcjq-icon',			classCount	 : 'dcjq-count',
16			classExpand	 : 'dcjq-current-parent',
17			classDisable : '',
18			eventType	 : 'click',
19			hoverDelay	 : 300,
20			menuClose     : true,
21			autoClose    : true,
22			autoExpand	 : false,
23			speed        : 'slow',
24			saveState	 : true,
25			disableLink	 : true,			showCount : false,
26			cookie	: 'dcjq-accordion'
27		};
28		//call in the default otions
29		var options = $.extend(defaults, options);
30		this.each(function(options){
31			var obj = this;
32			$objLinks = $('li > a',obj);
33			$objSub = $('li > ul',obj);
34			if(defaults.classDisable){
35				$objLinks = $('li:not(.'+defaults.classDisable+') > a',obj);
36				$objSub = $('li:not(.'+defaults.classDisable+') > ul',obj);
37			}
38			
39			classActive = defaults.classActive;
40			
41			setUpAccordion();
42			if(defaults.saveState == true){
43				checkCookie(defaults.cookie, obj, classActive);
44			}
45			if(defaults.autoExpand == true){
46				$('li.'+defaults.classExpand+' > a').addClass(classActive);
47			}
48			resetAccordion();
49			if(defaults.eventType == 'hover'){
50				var config = {
51					sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)
52					interval: defaults.hoverDelay, // number = milliseconds for onMouseOver polling interval
53					over: linkOver, // function = onMouseOver callback (REQUIRED)
54					timeout: defaults.hoverDelay, // number = milliseconds delay before onMouseOut
55					out: linkOut // function = onMouseOut callback (REQUIRED)
56				};
57				$objLinks.hoverIntent(config);
58				var configMenu = {
59					sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)
60					interval: 1000, // number = milliseconds for onMouseOver polling interval
61					over: menuOver, // function = onMouseOver callback (REQUIRED)
62					timeout: 1000, // number = milliseconds delay before onMouseOut
63					out: menuOut // function = onMouseOut callback (REQUIRED)
64				};
65				$(obj).hoverIntent(configMenu);
66				// Disable parent links
67				if(defaults.disableLink == true){
68					$objLinks.click(function(e){
69						if($(this).siblings('ul').length >0){
70							e.preventDefault();
71						}
72					});
73				}
74			} else {			
75				$objLinks.click(function(e){
76					$activeLi = $(this).parent('li');
77					$parentsLi = $activeLi.parents('li');
78					$parentsUl = $activeLi.parents('ul');
79					// Prevent browsing to link if has child links
80					if(defaults.disableLink == true){
81						if($(this).siblings('ul').length >0){
82							e.preventDefault();
83						}
84					}
85					// Auto close sibling menus
86					if(defaults.autoClose == true){
87						autoCloseAccordion($parentsLi, $parentsUl);
88					}
89					if ($('> ul',$activeLi).is(':visible')){
90						$('ul',$activeLi).slideUp(defaults.speed);
91						$('a',$activeLi).removeClass(classActive);
92					} else {
93						$(this).siblings('ul').slideToggle(defaults.speed);
94						$('> a',$activeLi).addClass(classActive);
95					}					
96					// Write cookie if save state is on
97					if(defaults.saveState == true){
98						createCookie(defaults.cookie, obj, classActive);
99					}
100				});
101			}
102			// Set up accordion
103			function setUpAccordion(){
104				$arrow = '<span class="'+defaults.classArrow+'"></span>';
105				var classParentLi = defaults.classParent+'-li';
106				$objSub.show();
107				$('li',obj).each(function(){
108					if($('> ul',this).length > 0){						$(this).addClass(classParentLi);
109						$('> a',this).addClass(defaults.classParent).append($arrow);
110					}
111				});
112				$objSub.hide();
113				if(defaults.classDisable){
114					$('li.'+defaults.classDisable+' > ul').show();
115				}
116				if(defaults.showCount == true){
117					$('li.'+classParentLi,obj).each(function(){
118						if(defaults.disableLink == true){
119							var getCount = parseInt($('ul a:not(.'+defaults.classParent+')',this).length);
120						} else {
121							var getCount = parseInt($('ul a',this).length);
122						}
123						$('> a',this).append(' <span class="'+defaults.classCount+'">('+getCount+')</span>');
124					});
125				}
126			}
127			
128			function linkOver(){
129
130			$activeLi = $(this).parent('li');
131			$parentsLi = $activeLi.parents('li');
132			$parentsUl = $activeLi.parents('ul');
133
134			// Auto close sibling menus
135			if(defaults.autoClose == true){
136				autoCloseAccordion($parentsLi, $parentsUl);
137
138			}
139
140			if ($('> ul',$activeLi).is(':visible')){
141				$('ul',$activeLi).slideUp(defaults.speed);
142				$('a',$activeLi).removeClass(classActive);
143			} else {
144				$(this).siblings('ul').slideToggle(defaults.speed);
145				$('> a',$activeLi).addClass(classActive);
146			}
147
148			// Write cookie if save state is on
149			if(defaults.saveState == true){
150				createCookie(defaults.cookie, obj, classActive);
151			}
152		}
153
154		function linkOut(){
155		}
156
157		function menuOver(){
158		}
159
160		function menuOut(){
161
162			if(defaults.menuClose == true){
163				$objSub.slideUp(defaults.speed);
164				// Reset active links
165				$('a',obj).removeClass(classActive);
166				createCookie(defaults.cookie, obj, classActive);
167			}
168		}
169
170		// Auto-Close Open Menu Items
171		function autoCloseAccordion($parentsLi, $parentsUl){
172			$('ul',obj).not($parentsUl).slideUp(defaults.speed);
173			// Reset active links
174			$('a',obj).removeClass(classActive);
175			$('> a',$parentsLi).addClass(classActive);
176		}
177		// Reset accordion using active links
178		function resetAccordion(){
179			$objSub.hide();
180			var $parentsLi = $('a.'+classActive,obj).parents('li');
181			$('> a',$parentsLi).addClass(classActive);
182			$allActiveLi = $('a.'+classActive,obj);
183			$($allActiveLi).siblings('ul').show();
184		}
185		});
186		// Retrieve cookie value and set active items
187		function checkCookie(cookieId, obj, classActive){
188			var cookieVal = $.cookie(cookieId);
189			if(cookieVal != null){
190				// create array from cookie string
191				var activeArray = cookieVal.split(',');
192				$.each(activeArray, function(index,value){
193					var $cookieLi = $('li:eq('+value+')',obj);
194					$('> a',$cookieLi).addClass(classActive);
195					var $parentsLi = $cookieLi.parents('li');
196					$('> a',$parentsLi).addClass(classActive);
197				});
198			}
199		}
200		// Write cookie
201		function createCookie(cookieId, obj, classActive){
202			var activeIndex = [];
203			// Create array of active items index value
204			$('li a.'+classActive,obj).each(function(i){
205				var $arrayItem = $(this).parent('li');
206				var itemIndex = $('li',obj).index($arrayItem);
207					activeIndex.push(itemIndex);
208				});
209			// Store in cookie
210			$.cookie(cookieId, activeIndex, { path: '/' });
211		}
212	};
213})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.