001.
002.
003.
004.
005.
006.
007.
008.
009.
010.
011.
012.
013.
014.
015.
016.
017.
018.
019.
020.
021.
022.
023.
024.
025.
026.
var
expandFirstItemAutomatically =
false
;
027.
var
initMenuIdToExpand =
false
;
028.
var
expandMenuItemByUrl =
true
;
029.
var
initialMenuItemAlwaysExpanded =
true
;
030.
031.
032.
033.
034.
var
dhtmlgoodies_slmenuObj;
035.
var
divToScroll =
false
;
036.
var
ulToScroll =
false
;
037.
var
divCounter = 1;
038.
var
otherDivsToScroll =
new
Array();
039.
var
divToHide =
false
;
040.
var
parentDivToHide =
new
Array();
041.
var
ulToHide =
false
;
042.
var
offsetOpera = 0;
043.
if
(navigator.userAgent.indexOf(
'Opera'
)>=0)offsetOpera=1;
044.
var
slideMenuHeightOfCurrentBox = 0;
045.
var
objectsToExpand =
new
Array();
046.
var
initExpandIndex = 0;
047.
var
alwaysExpanedItems =
new
Array();
048.
049.
var
dg_activeItem =
null
;
050.
051.
function
popMenusToShow()
052.
{
053.
var
obj = divToScroll;
054.
var
endArray =
new
Array();
055.
while
(obj && obj.tagName!=
'BODY'
){
056.
if
(obj.tagName==
'DIV'
&& obj.id.indexOf(
'slideDiv'
)>=0){
057.
var
objFound = -1;
058.
for
(
var
no=0;no<otherDivsToScroll.length;no++){
059.
if
(otherDivsToScroll[no]==obj){
060.
objFound = no;
061.
}
062.
}
063.
if
(objFound>=0){
064.
otherDivsToScroll.splice(objFound,1);
065.
}
066.
}
067.
obj = obj.parentNode;
068.
}
069.
}
070.
071.
function
showSubMenu(e,inputObj)
072.
{
073.
074.
if
(
this
&&
this
.tagName)inputObj =
this
.parentNode;
075.
if
(inputObj && inputObj.tagName==
'LI'
){
076.
divToScroll = inputObj.getElementsByTagName(
'DIV'
)[0];
077.
for
(
var
no=0;no<otherDivsToScroll.length;no++){
078.
if
(otherDivsToScroll[no]==divToScroll)
return
;
079.
}
080.
}
081.
hidingInProcess =
false
;
082.
if
(otherDivsToScroll.length>0){
083.
if
(divToScroll){
084.
if
(otherDivsToScroll.length>0){
085.
popMenusToShow();
086.
}
087.
if
(otherDivsToScroll.length>0){
088.
autoHideMenus();
089.
hidingInProcess =
true
;
090.
}
091.
}
092.
}
093.
if
(divToScroll && !hidingInProcess){
094.
divToScroll.style.display=
''
;
095.
otherDivsToScroll.length = 0;
096.
otherDivToScroll = divToScroll.parentNode;
097.
otherDivsToScroll.push(divToScroll);
098.
while
(otherDivToScroll && otherDivToScroll.tagName!=
'BODY'
){
099.
if
(otherDivToScroll.tagName==
'DIV'
&& otherDivToScroll.id.indexOf(
'slideDiv'
)>=0){
100.
otherDivsToScroll.push(otherDivToScroll);
101.
102.
}
103.
otherDivToScroll = otherDivToScroll.parentNode;
104.
}
105.
ulToScroll = divToScroll.getElementsByTagName(
'UL'
)[0];
106.
if
(divToScroll.style.height.replace(
'px'
,
''
)/1<=1)scrollDownSub();
107.
}
108.
109.
if
(e || inputObj) {
110.
111.
if
(dg_activeItem) {
112.
dg_activeItem.className = dg_activeItem.className.replace(
'dhtmlgoodies_activeItem'
,
''
);
113.
}
114.
var
aTags = inputObj.getElementsByTagName(
'A'
);
115.
if
(aTags.length>0) {
116.
aTags[0].className = aTags[0].className +
' dhtmlgoodies_activeItem'
;
117.
dg_activeItem = aTags[0];
118.
if
(aTags[0].href.indexOf(
'#'
) == -1 || aTags[0].href.indexOf(
'#'
) < aTags[0].href.length-1){
119.
return
true
;
120.
}
121.
}
122.
123.
}
124.
125.
return
false
;
126.
127.
128.
}
129.
130.
131.
132.
function
autoHideMenus()
133.
{
134.
if
(otherDivsToScroll.length>0){
135.
divToHide = otherDivsToScroll[otherDivsToScroll.length-1];
136.
parentDivToHide.length=0;
137.
var
obj = divToHide.parentNode.parentNode.parentNode;
138.
while
(obj && obj.tagName==
'DIV'
){
139.
if
(obj.id.indexOf(
'slideDiv'
)>=0)parentDivToHide.push(obj);
140.
obj = obj.parentNode.parentNode.parentNode;
141.
}
142.
var
tmpHeight = (divToHide.style.height.replace(
'px'
,
''
)/1 - slideMenuHeightOfCurrentBox);
143.
if
(tmpHeight<0)tmpHeight=0;
144.
if
(slideMenuHeightOfCurrentBox)divToHide.style.height = tmpHeight +
'px'
;
145.
ulToHide = divToHide.getElementsByTagName(
'UL'
)[0];
146.
slideMenuHeightOfCurrentBox = ulToHide.offsetHeight;
147.
scrollUpMenu();
148.
}
else
{
149.
slideMenuHeightOfCurrentBox = 0;
150.
showSubMenu();
151.
}
152.
}
153.
154.
155.
function
scrollUpMenu()
156.
{
157.
158.
var
height = divToHide.offsetHeight;
159.
height-=15;
160.
if
(height<0)height=0;
161.
divToHide.style.height = height +
'px'
;
162.
163.
for
(
var
no=0;no<parentDivToHide.length;no++){
164.
parentDivToHide[no].style.height = parentDivToHide[no].getElementsByTagName(
'UL'
)[0].offsetHeight +
'px'
;
165.
}
166.
if
(height>0){
167.
setTimeout(
'scrollUpMenu()'
,5);
168.
}
else
{
169.
divToHide.style.display=
'none'
;
170.
otherDivsToScroll.length = otherDivsToScroll.length-1;
171.
autoHideMenus();
172.
}
173.
}
174.
175.
function
scrollDownSub()
176.
{
177.
if
(divToScroll){
178.
var
height = divToScroll.offsetHeight/1;
179.
var
offsetMove =Math.min(15,(ulToScroll.offsetHeight - height));
180.
height = height +offsetMove ;
181.
divToScroll.style.height = height +
'px'
;
182.
183.
for
(
var
no=1;no<otherDivsToScroll.length;no++){
184.
var
tmpHeight = otherDivsToScroll[no].offsetHeight/1 + offsetMove;
185.
otherDivsToScroll[no].style.height = tmpHeight +
'px'
;
186.
}
187.
if
(height<ulToScroll.offsetHeight)setTimeout(
'scrollDownSub()'
,5);
else
{
188.
divToScroll =
false
;
189.
ulToScroll =
false
;
190.
if
(objectsToExpand.length>0 && initExpandIndex<(objectsToExpand.length-1)){
191.
initExpandIndex++;
192.
193.
showSubMenu(
false
,objectsToExpand[initExpandIndex]);
194.
}
195.
}
196.
}
197.
}
198.
199.
function
initSubItems(inputObj,currentDepth)
200.
{
201.
divCounter++;
202.
var
div = document.createElement(
'DIV'
);
203.
div.style.overflow =
'hidden'
;
204.
div.style.position =
'relative'
;
205.
div.style.display=
'none'
;
206.
div.style.height =
'1px'
;
207.
div.id =
'slideDiv'
+ divCounter;
208.
div.className =
'slideMenuDiv'
+ currentDepth;
209.
inputObj.parentNode.appendChild(div);
210.
div.appendChild(inputObj);
211.
var
menuItem = inputObj.getElementsByTagName(
'LI'
)[0];
212.
while
(menuItem){
213.
if
(menuItem.tagName==
'LI'
){
214.
var
aTag = menuItem.getElementsByTagName(
'A'
)[0];
215.
aTag.className=
'slMenuItem_depth'
+currentDepth;
216.
var
subUl = menuItem.getElementsByTagName(
'UL'
);
217.
if
(subUl.length>0){
218.
initSubItems(subUl[0],currentDepth+1);
219.
}
220.
aTag.onclick = showSubMenu;
221.
}
222.
menuItem = menuItem.nextSibling;
223.
}
224.
}
225.
226.
function
initSlideDownMenu()
227.
{
228.
dhtmlgoodies_slmenuObj = document.getElementById(
'dhtmlgoodies_slidedown_menu'
);
229.
dhtmlgoodies_slmenuObj.style.visibility=
'visible'
;
230.
var
mainUl = dhtmlgoodies_slmenuObj.getElementsByTagName(
'UL'
)[0];
231.
var
mainMenuItem = mainUl.getElementsByTagName(
'LI'
)[0];
232.
mainItemCounter = 1;
233.
while
(mainMenuItem){
234.
if
(mainMenuItem.tagName==
'LI'
){
235.
var
aTag = mainMenuItem.getElementsByTagName(
'A'
)[0];
236.
aTag.className=
'slMenuItem_depth1'
;
237.
var
subUl = mainMenuItem.getElementsByTagName(
'UL'
);
238.
if
(subUl.length>0){
239.
mainMenuItem.id =
'mainMenuItem'
+ mainItemCounter;
240.
initSubItems(subUl[0],2);
241.
aTag.onclick = showSubMenu;
242.
mainItemCounter++;
243.
}
244.
}
245.
mainMenuItem = mainMenuItem.nextSibling;
246.
}
247.
248.
if
(location.search.indexOf(
'mainMenuItemToSlide'
)>=0){
249.
var
items = location.search.split(
'&'
);
250.
for
(
var
no=0;no<items.length;no++){
251.
if
(items[no].indexOf(
'mainMenuItemToSlide'
)>=0){
252.
values = items[no].split(
'='
);
253.
showSubMenu(
false
,document.getElementById(
'mainMenuItem'
+ values[1]));
254.
initMenuIdToExpand =
false
;
255.
}
256.
}
257.
}
else
if
(expandFirstItemAutomatically>0 ){
258.
if
(document.getElementById(
'mainMenuItem'
+ expandFirstItemAutomatically)){
259.
showSubMenu(
false
,document.getElementById(
'mainMenuItem'
+ expandFirstItemAutomatically));
260.
initMenuIdToExpand =
false
;
261.
}
262.
}
263.
264.
265.
if
(expandMenuItemByUrl)
266.
{
267.
var
aTags = dhtmlgoodies_slmenuObj.getElementsByTagName(
'A'
);
268.
var
currentLocation = location.pathname;
269.
for
(
var
no=0;no<aTags.length;no++){
270.
var
hrefToCheckOn = aTags[no].href;
271.
if
(hrefToCheckOn.indexOf(currentLocation)>=0 && hrefToCheckOn.indexOf(
'#'
)<hrefToCheckOn.length-1){
272.
initMenuIdToExpand =
false
;
273.
var
obj = aTags[no].parentNode;
274.
while
(obj && obj.id!=
'dhtmlgoodies_slidedown_menu'
){
275.
if
(obj.tagName==
'LI'
){
276.
var
subUl = obj.getElementsByTagName(
'UL'
);
277.
if
(initialMenuItemAlwaysExpanded)alwaysExpanedItems[obj.parentNode] =
true
;
278.
if
(subUl.length>0){
279.
objectsToExpand.unshift(obj);
280.
}
281.
}
282.
obj = obj.parentNode;
283.
}
284.
showSubMenu(
false
,objectsToExpand[0]);
285.
break
;
286.
}
287.
}
288.
}
289.
290.
if
(initMenuIdToExpand)
291.
{
292.
objectsToExpand =
new
Array();
293.
var
obj = document.getElementById(initMenuIdToExpand)
294.
while
(obj && obj.id!=
'dhtmlgoodies_slidedown_menu'
){
295.
if
(obj.tagName==
'LI'
){
296.
var
subUl = obj.getElementsByTagName(
'UL'
);
297.
if
(initialMenuItemAlwaysExpanded)alwaysExpanedItems[obj.parentNode] =
true
;
298.
if
(subUl.length>0){
299.
objectsToExpand.unshift(obj);
300.
}
301.
}
302.
obj = obj.parentNode;
303.
}
304.
305.
showSubMenu(
false
,objectsToExpand[0]);
306.
307.
}
308.
309.
}