1//Region Global Variables 2var skm_SelectedMenuStyleInfos=new Object(); 3var skm_UnselectedMenuStyleInfos=new Object(); 4var skm_MenuFadeDelays=new Object(); 5var skm_clockValue=0; 6var skm_ticker; 7var skm_highlightTopMenus=new Object(); 8var skm_images=new Array(); 9var skm_OpenMenuItems = new Array(); 10//var skm_previousMenu; 11//EndRegion 12//Region Methods to hook up a menu to the global variables 13function skm_registerMenu(menuID, selectedStyleInfo, unselectedStyleInfo, menuFadeDelay, highlightTopMenu){ 14 skm_SelectedMenuStyleInfos[menuID]=selectedStyleInfo; 15 skm_UnselectedMenuStyleInfos[menuID]=unselectedStyleInfo; 16 skm_MenuFadeDelays[menuID]=menuFadeDelay; 17 skm_highlightTopMenus[menuID]=highlightTopMenu; 18} 19//Region The methods and contructor of the skm_styleInfo object. 20function skm_applyStyleInfoToElement(element){ 21 element.style.backgroundColor=this.backgroundColor; 22 element.style.borderColor=this.borderColor; 23 element.style.borderStyle=this.borderStyle; 24 element.style.borderWidth=this.borderWidth; 25 element.style.color=this.color; 26 if (this.fontFamily!='') 27 element.style.fontFamily=this.fontFamily; 28 element.style.fontSize=this.fontSize; 29 element.style.fontStyle=this.fontStyle; 30 element.style.fontWeight=this.fontWeight; 31 if (this.className!='') 32 element.style.className=this.className; 33} 34function skm_styleInfo(backgroundColor,borderColor,borderStyle,borderWidth,color,fontFamily,fontSize,fontStyle,fontWeight,className){ 35 this.backgroundColor=backgroundColor; 36 this.borderColor=borderColor; 37 this.borderStyle=borderStyle; 38 this.borderWidth=borderWidth; 39 this.color=color; 40 this.fontFamily=fontFamily; 41 this.fontSize=fontSize; 42 this.fontStyle=fontStyle; 43 this.fontWeight=fontWeight; 44 this.className=className; 45 this.applyToElement=skm_applyStyleInfoToElement; 46} 47 48function getPropertyValueFromCss(className, propertyName) 49{ 50 var toReturn = null; 51 52 if (document.styleSheets) { 53 for (var i = 0; i < document.styleSheets.length; i++) 54 { 55 var cssRules = null; 56 57 try { 58 // IE 59 if (document.styleSheets[i].rules) { 60 cssRules = document.styleSheets[i].rules; 61 } 62 // Mozilla and others 63 else if (document.styleSheets[i].cssRules) { 64 cssRules = document.styleSheets[i].cssRules; 65 } 66 } 67 catch(err) 68 { 69 } 70 71 if (cssRules != null) { 72 for (var j = 0; j < cssRules.length; j++) { 73 if (cssRules[j].selectorText == ("." + className) && cssRules[j].style[propertyName] != null) 74 { 75 toReturn = cssRules[j].style[propertyName]; 76 } 77 } 78 } 79 } 80 } 81 return toReturn; 82} 83 84//Region MouseEventHandlers 85function skm_mousedOverMenu(menuID,elem,parent,displayedVertically,imageSource, leftImage, rightImage, overStyle, browser, uniqueId, rtl){ 86 skm_stopTick(); 87 skm_closeSubMenus(elem); 88 89 90 91 var childID=elem.id+"-subMenu"; // Display child menu if needed 92 if (document.getElementById(childID)!=null){ // make the child menu visible and specify that its position is specified in absolute coordinates 93 94 child = document.getElementById(childID); 95 if (child.style) 96 { 97 child = child.style; 98 } 99 child.display='block'; 100 child.position='absolute'; 101 102 // get width of CMSMenu from css stylesheet 103 var tableWidth = getPropertyValueFromCss(document.getElementById(childID).className, "width"); 104 if (tableWidth != null) 105 { 106 child.width = tableWidth; 107 } 108 109 skm_OpenMenuItems = skm_OpenMenuItems.concat(childID); 110 if (displayedVertically){ // Set the child menu's left and top attributes according to the menu's offsets 111 child.left=(skm_getAscendingLefts(parent)+parent.offsetWidth) + 'px'; 112 113 if (rtl) 114 { 115 child.left=(skm_getAscendingLefts(parent)-document.getElementById(childID).offsetWidth) + 'px'; 116 } 117 118 child.top=skm_getAscendingTops(elem) + 'px'; 119 120 var visibleWidth=parseInt(window.outerWidth?window.outerWidth-9:document.body.clientWidth,10);
121 if ( (parseInt(skm_getElementLeft(document.getElementById(childID)),10) + parseInt(document.getElementById(childID).offsetWidth,10))>visibleWidth) { 122 //document.getElementById(childID).style.backgroundColor='red'; 123 var oldpos = document.getElementById(childID).offsetLeft; 124 var width = parseInt(document.getElementById(childID).offsetWidth,10); 125 var newpos = oldpos - parent.offsetWidth - width; 126 child.left = newpos + 'px'; 127 /* due to incorrect movement when not defined width in css stylesheet, it is important to move new submenu 128 (displayed on the left from actual submenu) UNDER actual submenu. Otherwise some items from actual submenu 129 may be not visible. */ 130 child.zIndex = skm_getElemZIndex(parent) - 1; 131 } else { 132 child.zIndex = skm_getElemZIndex(parent) + 10; 133 } 134 }else{ // Set the child menu's left and top attributes according to the menu's offsets 135 child.left=skm_getAscendingLefts(elem) + 'px'; 136 child.top=(skm_getAscendingTops(parent)+parent.offsetHeight) + 'px'; 137 if (document.getElementById(childID).offsetWidth<elem.offsetWidth) 138 { 139 child.width=elem.offsetWidth + 'px'; 140 } 141 else 142 { 143 if (rtl){ 144 child.left = skm_getAscendingLefts(elem) - (document.getElementById(childID).offsetWidth - elem.offsetWidth) + 'px'; 145 } 146 } 147 } 148 } 149 if (skm_SelectedMenuStyleInfos[menuID] != null) skm_SelectedMenuStyleInfos[menuID].applyToElement(elem); 150 if (skm_highlightTopMenus[menuID]){ 151 var eId=elem.id+''; 152 while (eId.indexOf('-subMenu')>=0){ 153 eId=eId.substring(0, eId.lastIndexOf('-subMenu')); 154 skm_SelectedMenuStyleInfos[menuID].applyToElement(document.getElementById(eId)); 155 } 156 } 157 158 var index = 0; 159 160 if (leftImage!='') 161 { 162 var i=elem.getElementsByTagName("img")[index]; 163 if (i != null) 164 { 165 i.src=leftImage; 166 index++; 167 } 168 } 169 170 171 if (imageSource!=''){ 172 var i=elem.getElementsByTagName("img")[index]; 173 if (i != null) 174 { 175 i.src=imageSource; 176 index++; 177 } 178 } 179 180 if (rightImage!='') 181 { 182 var i=elem.getElementsByTagName("img")[index]; 183 if (i != null) 184 { 185 i.src=rightImage; 186 index++; 187 } 188 } 189 190 if (overStyle != '') 191 { 192 if (browser == 'IE') 193 { 194 195 if (document.styleSheets.length == 0) 196 { 197 document.createStyleSheet('extrastyle.css'); 198 } 199 document.styleSheets[0].addRule(".OverClass_skm_Menu_CMS" + uniqueId, overStyle); 200 } 201 else 202 { 203 if (elem.attributes['style'] != null) 204 { 205 elem.attributes['style'].value = overStyle + elem.attributes['style'].value; 206 } 207 else 208 { 209 elem.attributes['style'].value = overStyle; 210 } 211 } 212 } 213} 214 215function skm_mousedOverClickToOpen(menuID,elem,parent,imageSource){ 216 skm_stopTick(); 217 if (skm_SelectedMenuStyleInfos[menuID] != null) skm_SelectedMenuStyleInfos[menuID].applyToElement(elem); 218 if (skm_highlightTopMenus[menuID]){ 219 var eId=elem.id+''; 220 while (eId.indexOf('-subMenu')>=0){ 221 eId=eId.substring(0, eId.lastIndexOf('-subMenu')); 222 skm_SelectedMenuStyleInfos[menuID].applyToElement(document.getElementById(eId)); 223 } 224 } 225 if (imageSource!=''){ 226 setimage(elem,imageSource); 227 } 228} 229 230function skm_getElemZIndex(elem) 231{ 232 if (elem == null) 233 { 234 return -1; 235 } else if (elem.style.zIndex == undefined){ 236 return 100; 237 } else { 238 return elem.style.zIndex; 239 } 240} 241 242function skm_mousedOverSpacer(menuID,elem,parent){ 243 skm_stopTick(); 244} 245 246function skm_mousedOutMenu(menuID,elem,imageSource,cssClass, defaultStyle, browser, uniqueId, leftImage, rightImage){ 247 if (document.getElementById('lastSelectedItemID_' + menuID) != null) 248 { 249 if (document.getElementById('lastSelectedItemID_' + menuID).value == elem.id) 250 { 251 return; 252 } 253 } 254 255 256 skm_doTick(menuID); 257 if (skm_UnselectedMenuStyleInfos[menuID] != null) skm_UnselectedMenuStyleInfos[menuID].applyToElement(elem); 258 if (skm_highlightTopMenus[menuID]){ 259 var eId=elem.id+''; 260 while (eId.indexOf('-subMenu')>=0){ 261 eId=eId.substring(0, eId.lastIndexOf('-subMenu')); 262 skm_UnselectedMenuStyleInfos[menuID].applyToElement(document.getElementById(eId)); 263 } 264 } 265 266 settd(elem,cssClass); 267 var index = 0; 268 269 if (leftImage!='') 270 { 271 var i=elem.getElementsByTagName("img")[index]; 272 if (i != null) 273 { 274 i.src=leftImage; 275 index++; 276 } 277 } 278 279 if (imageSource!=''){ 280 var i=elem.getElementsByTagName("img")[index]; 281 if (i != null) 282 { 283 i.src=imageSource; 284 index++; 285 } 286 } 287 288 if (rightImage!='') 289 { 290 var i=elem.getElementsByTagName("img")[index]; 291 if (i != null) 292 { 293 i.src=rightImage; 294 index++; 295 } 296 } 297 298 299 if (defaultStyle != '') 300 { 301 if (browser == 'IE') 302 { 303 if (uniqueId != '') 304 { 305 if (document.styleSheets.length == 0) 306 { 307 document.createStyleSheet('extrastyle.css'); 308 } 309 document.styleSheets[0].addRule(".OverOut_skm_Menu_CMS_" + uniqueId, defaultStyle); 310 } 311 } 312 else 313 { 314 if (elem.attributes['style'] != null) 315 { 316 elem.attributes['style'].value = defaultStyle + elem.attributes['style'].value; 317 } 318 else 319 { 320 elem.attributes['style'].value = defaultStyle; 321 } 322 } 323} 324} 325 326function skm_mousedOutSpacer(menuID, elem){ 327 skm_doTick(menuID); 328} 329 330//Region Utility Functions 331function skm_closeSubMenus(parent){ 332 if (skm_OpenMenuItems == "undefined") return; 333 for (var i=skm_OpenMenuItems.length-1; i>-1;i--) {
334 if (parent.id.indexOf(skm_OpenMenuItems[i]) != 0) { 335 if (document.getElementById(skm_OpenMenuItems[i]) != null) { 336 document.getElementById(skm_OpenMenuItems[i]).style.display = 'none'; 337 skm_shimSetVisibility(false, skm_OpenMenuItems[i]); 338 skm_OpenMenuItems = new Array().concat(skm_OpenMenuItems.slice(0,i), skm_OpenMenuItems.slice(i+1)); 339 } 340 } 341 } 342} 343function skm_shimSetVisibility(makevisible, tableid){ 344 var tblRef=document.getElementById(tableid); 345 var IfrRef=document.getElementById('shim'+tableid); 346 if (tblRef!=null && IfrRef!=null){ 347 if(makevisible){ 348 IfrRef.style.width=tblRef.offsetWidth; 349 IfrRef.style.height=tblRef.offsetHeight; 350 IfrRef.style.top=tblRef.style.top; 351 IfrRef.style.left=tblRef.style.left; 352 IfrRef.style.zIndex=tblRef.style.zIndex-1; 353 IfrRef.style.display="block"; 354 }else{ 355 IfrRef.style.display="none"; 356 } 357 } 358} 359function skm_IsSubMenu(id){ 360 if (skm_subMenuIDs == "undefined") return false; 361 for (var i=0;i<skm_subMenuIDs.length;i++) 362 if (id==skm_subMenuIDs[i]) return true; 363 return false; 364} 365function skm_getAscendingLefts(elem){ 366 if (elem==null) 367 return 0; 368 else 369 { 370 var elemPosition = getPropertyValueFromCss(elem.className,'position'); 371 if (!elemPosition) { 372 elemPosition = elem.style.position; 373 } 374 if ((elemPosition=='absolute' || elemPosition=='relative') && !skm_IsSubMenu(elem.id)) return 0; 375 var x = elem.offsetLeft+skm_getAscendingLefts(elem.offsetParent); 376 return x; 377 } 378} 379function skm_getElementLeft(elem) 380{ 381 if (elem==null) 382 { 383 return 0; 384 } else { 385 return elem.offsetLeft + skm_getElementLeft(elem.offsetParent); 386 } 387} 388function skm_getAscendingTops(elem){ 389 if (elem==null) 390 return 0; 391 else { 392 var elemPosition = getPropertyValueFromCss(elem.className,'position'); 393 if (!elemPosition) { 394 elemPosition = elem.style.position; 395 } 396 var parent = skm_getAscendingTops(elem.offsetParent); 397 if ((elemPosition=='absolute' || elemPosition=='relative') && !skm_IsSubMenu(elem.id)) return 0; 398 return elem.offsetTop + parent; 399 } 400} 401//Region Fade Functions 402function skm_doTick(menuID){ 403 if (skm_clockValue>=skm_MenuFadeDelays[menuID]){ 404 skm_stopTick(); 405 skm_closeSubMenus(document.getElementById(menuID)); 406 } else { 407 skm_clockValue++; 408 skm_ticker=setTimeout("skm_doTick('"+menuID+"');", 500); 409 } 410} 411function skm_stopTick(){ 412 skm_clockValue=0; 413 clearTimeout(skm_ticker); 414} 415function preloadimages(){ 416 for (i=0;i<preloadimages.arguments.length;i++){ 417 skm_images[i]=new Image(); 418 skm_images[i].src=preloadimages.arguments[i]; 419 } 420} 421function setimage(elem,imageSource){ 422 var i=elem.getElementsByTagName("img")[0]; 423 i.src=imageSource; 424} 425function settd(elem,styleName){ 426 elem.className=styleName; 427 428} 429function skm_selectNewItem(menuID, elem, imageSource, normalImageSource, className, normalClassName){ 430 if (document.getElementById('lastSelectedItemID_' + menuID).value != elem.id) 431 { 432 //set original values 433 setimage(document.getElementById(document.getElementById('lastSelectedItemID_' + menuID).value), document.getElementById('lastSelectedItemNormalImageSource_' + menuID).value); 434 settd(document.getElementById(document.getElementById('lastSelectedItemID_' + menuID).value), document.getElementById('lastSelectedItemNormalClassName_' + menuID).value); 435 //store values 436 document.getElementById('lastSelectedItemID_' + menuID).value = elem.id; 437 document.getElementById('lastSelectedItemNormalImageSource_' + menuID).value = normalImageSource; 438 document.getElementById('lastSelectedItemNormalClassName_' + menuID).value = normalClassName; 439 //set new values 440 setimage(elem, imageSource); 441 settd(elem, className); 442 } 443} 444//-->
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.