1// build number: 2.0.331� 2� 3(function($) {� 4 function bindEffect(name, params) {� 5 var menu = $("ul.FM2_" + name);� 6 � 7 var uls = menu.find("ul");� 8 var timeout;� 9 � 10 function getBrowser() {� 11 // jquery code//� 12 var ua = navigator.userAgent.toLowerCase();� 13 var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||� 14 /(webkit)[ \/]([\w.]+)/.exec( ua ) ||� 15 /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||� 16 /(msie) ([\w.]+)/.exec( ua ) ||� 17 ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||� 18 [];� 19 � 20 var ver = match[ 2 ] || "0";� 21 var fi = ver.indexOf('.');� 22 var fi2 = ver.indexOf('.', fi);� 23 if (fi2 != -1) {� 24 ver = parseFloat(ver.substring(0, fi2));� 25 }� 26 return {� 27 name: match[ 1 ] || "",� 28 version: ver� 29 };� 30 }� 31� 32� 33 function mouseLeft(el) {� 34 if (!window.PIE || !PIE.Element) return;� 35 var pie = PIE.Element.getInstance( el[0]);� 36 if (pie) {� 37 pie.mouseLeft(true);� 38 }� 39 }� 40 � 41 function mouseEntered(el) {� 42 if (!window.PIE || !PIE.Element) return;� 43 var pie = PIE.Element.getInstance( el[0]);� 44 if (pie) {� 45 pie.mouseEntered(true);� 46 }� 47 }� 48� 49 function getEffectForLevel(level) { � 50 switch(level) { � 51 case 0:� 52 return params["effectSub"];� 53 break;� 54� 55 case 1:� 56 return params["effectSubTwo"] ? params["effectSubTwo"] : params["effectRest"];� 57 break;� 58� 59 default:� 60 return params["effectRest"]� 61 break;� 62 }� 63 }� 64 � 65 function showMenu(liItem, callback) {� 66 � 67 � 68 var self = liItem;� 69� 70 if (!callback) callback = function(){};� 71 if($(self).find('ul').data('hideTimeout')) { � 72 clearTimeout($(self).find('ul').data('hideTimeout'));� 73 }� 74 � 75 var level = getButtonLevel(self);� 76 � 77 var effectObj = getEffectForLevel(level);� 78 if(!effectObj) { � 79 effectObj = {name : "none"};� 80 }� 81 var effectOpts = {� 82 'duration' : effectObj.duration,� 83 'easing' : effectObj.easing,� 84 'direction' : effectObj.direction� 85 };� 86� 87 � 88 var checkIfVisible = true;;� 89 var submenu = $(self).find('>ul');� 90 if(submenu.length == 0) { � 91 if($(self).children('.ui-effects-wrapper').length > 0) { � 92 checkIfVisible = false;� 93 submenu = $(self).find('.ui-effects-wrapper >ul');� 94 }� 95 } � 96� 97 if(checkIfVisible && submenu.is(':visible')) { � 98 return;� 99 }� 100� 101 var browser = getBrowser();� 102 var isIE7 = (browser.name == "msie" && browser.version == 7);� 103 if(isIE7) { � 104 effectObj.name = "none";� 105 submenu.children('li').css('float','left');� 106 if(params["menuType"] == "tabbed" && level == 0) { � 107 submenu.width(menu.outerWidth());� 108 }� 109 }� 110� 111 switch(effectObj.name) {� 112 case "none":� 113 submenu.show();� 114 break;� 115� 116 case "bounce":� 117 if($(self).parent().is(":animated")) {� 118 return;� 119 }� 120� 121 case "blind":� 122 case "explode":� 123 case "clip":� 124 case "drop":� 125 case "fold":� 126 case "slide":� 127� 128 � 129 if($(self).find('ul').is(":animated")) {� 130 $(self).find('ul').removeAttr("style");� 131 }� 132� 133 if(submenu.data('hideTimeout')) { � 134 clearTimeout(submenu.data('hideTimeout'));� 135 submenu.removeData('hideTimeout');� 136 }� 137� 138 $(self).siblings().find('ul').stop(false, true);� 139� 140 window.setTimeout(function(){� 141 � 142 if(submenu.css('display') != 'none' && !submenu.is(":animated")) { � 143 return;� 144 }� 145 � 146 submenu.stop(false,true);� 147� 148 if(effectObj.useFade) { � 149 submenu.fadeIn({duration : effectOpts.duration * 2, queue : false}).css('display', 'none');� 150 }� 151 submenu.show(effectObj.name, effectOpts, function(){� 152 if(effectObj.name == "fold") {� 153 $(this).css({"position":"", "left" :"", "top": "", "right":"", "bottom" :""});� 154 }� 155 });� 156 }, 5);� 157 break;� 158� 159 case "fade":� 160 uls.stop(true, true);� 161 submenu.show(effectObj.name, effectOpts);� 162 break;� 163 � 164 default:� 165 uls.stop(true, false);� 166 window.setTimeout(function(){� 167 submenu.show(effectObj.name, effectOpts);� 168 }, 5);� 169 }� 170 }� 171 � 172 function hideMenu(liItem, callback) {� 173� 174 var self = liItem;� 175 if (!callback) callback = function(){};� 176 � 177 var level = getButtonLevel(self);� 178 � 179 var effectObj = getEffectForLevel(level);� 180 if(!effectObj) { � 181 effectObj = {name : "none"};� 182 }� 183 var effectOpts = {� 184 'duration' : effectObj.duration,� 185 'easing' : effectObj.easing,� 186 'direction' : effectObj.direction� 187 };� 188� 189 var browser = getBrowser();� 190 var isIE7 = (browser.name == "msie" && browser.version == 7);� 191 if(isIE7) { � 192 effectObj.name = "none";� 193 }� 194 � 195� 196 var submenu = $(self).find('ul');� 197 � 198 if(submenu.length == 0) { � 199 if($(self).children('.ui-effects-wrapper').length > 0) { � 200 submenu = $(self).find('.ui-effects-wrapper >ul');� 201 }� 202 } � 203� 204 switch(effectObj.name) {� 205 case "none":� 206 submenu.hide();� 207 callback();� 208 break;� 209� 210 case "bounce":� 211 if($(self).parent().is(":animated")) {� 212 return;� 213 }� 214 case "blind":� 215 case "explode":� 216 case "clip":� 217 case "drop":� 218 case "fold":� 219 case "slide":� 220 submenu.stop(false, true);� 221 if(submenu.data('hideTimeout')) { � 222 clearTimeout(submenu.data('hideTimeout'));� 223 }� 224� 225� 226� 227 var timeout = window.setTimeout(function(){� 228 submenu.stop(false,true);� 229 submenu.find('ul').hide();� 230 if(effectObj.useFade) { � 231 submenu.fadeOut({duration : effectOpts.duration * 1.40, queue : false});� 232 }� 233 submenu.hide(effectObj.name, effectOpts, function(){� 234 $(this).removeAttr("style");� 235 $(this).find("ul").removeAttr("style").hide();� 236 callback();� 237 });� 238 }, 100); � 239� 240 submenu.data('hideTimeout', timeout);� 241� 242 break;� 243 � 244 case "fade":� 245 uls.stop(true, true);� 246 $(self).find('ul').hide(effectObj.name, effectOpts, function() {� 247 callback();� 248 });� 249 break;� 250� 251 default:� 252 uls.stop(true, false);� 253 if(submenu.data('hideTimeout')) { � 254 clearTimeout($(self).find('ul').data('hideTimeout'));� 255 }� 256 var timeout = window.setTimeout(function(){� 257 submenu.hide(effectObj.name, effectOpts, function() {� 258 callback();� 259 });� 260 }, 100); � 261 submenu.data('hideTimeout', timeout);� 262 }� 263 }� 264 � 265 $(menu).find("li").mouseenter(function(ev) {� 266 ev.preventDefault();� 267 ev.stopImmediatePropagation();� 268� 269 var self = this;� 270 � 271 clearTimeout(timeout);� 272 try { � 273� 274 $(this).siblings().each(function() {� 275 hideMenu($(this));� 276 });� 277 } catch(e) {� 278� 279 }� 280 � 281 showMenu($(self));� 282 � 283 � 284 � 285 $(self).find('li').each(function() {� 286 $(this).removeClass('hover');� 287 mouseLeft($(this).children('a'));� 288 });� 289 � 290 $(self).siblings('li').each(function() {� 291 var liItem = $(this);� 292 mouseLeft($(this).children('a'), function() {� 293 liItem.parent().find('.hover').each(function() {� 294 $(this).removeClass('hover');� 295 mouseLeft($(this).children('a'));� 296 }); � 297 });� 298 $(this).removeClass('hover');� 299 });� 300� 301 � 302 mouseEntered($(self).children('a'));� 303 $(self).addClass('hover');� 304 � 305 $(self).parents('li').each(function() {� 306 mouseEntered($(this).children('a'));� 307 $(this).addClass('hover');� 308 });� 309 � 310 }).mouseleave(function(ev){� 311 var self = this;� 312 if ($(self).find('>ul, >.ui-effects-wrapper>ul').length) {� 313 clearTimeout(timeout);� 314 timeout = window.setTimeout(function(){� 315 hideMenu($(self), function() {� 316 $(self).find('li').andSelf().each(function() {� 317 $(this).removeClass('hover');� 318 mouseLeft($(this).children('a'));� 319 }); � 320 }); � 321 }, 200);� 322 } else {� 323 clearTimeout(timeout);� 324 timeout = window.setTimeout(function(){� 325 $(self).removeClass('hover');� 326 mouseLeft($(self).children('a'));� 327 },0);� 328 }� 329 });� 330 }� 331� 332 function unbindEffect(name) { � 333 var menu = $("ul.FM2_" + name);� 334 $(menu).find("li").unbind('mouseenter');� 335 $(menu).find("li").unbind('mouseleave');� 336 }� 337� 338 function stickToTop(name, fullWidth, options) {� 339 var menu = $("div.FM2_" + name + "_container");� 340 var mobileButton = $("a#FM2_" + name + "_mobile_button");� 341 � 342 if(!menu.hasClass('stick')) { � 343 menu.data("top", menu.offset().top);� 344 menu.data("originalWidth", menu.width());� 345 menu.data('originalLeft', menu.offset().left);� 346 } else {� 347 //menu.removeClass('stick');� 348 menu.removeClass('stick');� 349 menu.data("originalWidth", menu.width());� 350 menu.data('originalLeft', menu.offset().left);� 351 menu.css({� 352 "left" : menu.offset().left� 353 });� 354� 355 menu.addClass('stick');� 356 }� 357 � 358 if (mobileButton.length) {� 359 if(!mobileButton.hasClass('stick')) { � 360 mobileButton.data("originalWidth", mobileButton.width());� 361 } else {� 362 //menu.removeClass('stick');� 363 mobileButton.removeClass('stick');� 364 mobileButton.data("originalWidth", mobileButton.width());� 365� 366 mobileButton.addClass('stick');� 367 mobileButton.width(mobileButton.data("originalWidth"));� 368 }� 369 }� 370 �
371 $(window).unbind('scroll.stickToTop').bind('scroll.stickToTop', function(ev) {� 372 doStickToTopScroll(ev, menu, fullWidth, options, name);� 373 });� 374 var iOS = /(iPad|iPhone|iPod)/g.test( navigator.userAgent );� 375 if (iOS) {� 376 $(window).unbind('scroll.stickToTop');� 377 $(window).unbind('touchmove.stickToTop').bind('touchmove.stickToTop', function(ev) { � 378 doStickToTopScroll(ev, menu, fullWidth, options, name);� 379 });� 380 }� 381 }� 382 � 383 function doStickToTopScroll(ev, menu, fullWidth, options, name) {� 384 if ($('.FM2_mobile_jq_menu').length && $('.FM2_mobile_jq_menu').is(":visible")) {� 385 var iOS = /(iPad|iPhone|iPod)/g.test( navigator.userAgent );� 386 if (!iOS || !($(ev.target).is('.FM2_mobile_jq_menu') || $(ev.target).parents('.FM2_mobile_jq_menu').length!=1)) {� 387 ev.preventDefault();� 388 ev.stopPropagation();� 389 return false;� 390 }� 391 }� 392 var window_top = $(window).scrollTop();� 393 var div_top = menu.data("top");� 394 var mobileButton = $("a#FM2_" + name + "_mobile_button");� 395 if (!mobileButton.data("originalWidth") || mobileButton.data("originalWidth")=='') {� 396 mobileButton.data("originalWidth", mobileButton.width());� 397 }� 398 if (window_top > div_top) {� 399 � 400 if(!fullWidth) { � 401 menu.css({� 402 "width" : menu.data("originalWidth"),� 403 "left" : menu.offset().left� 404 });� 405 } else { � 406 menu.css({� 407 "width" : "100%",� 408 'border-radius' : '0px',� 409 '-webkit-border-radius' : '0px',� 410 "left" : '0px'� 411 })� 412 }� 413� 414� 415 menu.addClass('stick');� 416 mobileButton.addClass('stick');� 417 mobileButton.width(mobileButton.data("originalWidth"));� 418 if ($('.FM2_mobile_jq_menu').length && options.preset=='relative') {� 419 $('.FM2_mobile_jq_menu').css('position', 'fixed');� 420 $('.FM2_mobile_jq_menu').css('left', 'auto');� 421 $('.FM2_mobile_jq_menu').css('width', mobileButton.outerWidth()+"px");� 422 $('.FM2_mobile_jq_menu').css('top', mobileButton.outerHeight()+"px");� 423 }� 424 � 425 } else {� 426 menu.removeClass('stick').removeAttr('style');� 427 mobileButton.removeClass('stick').removeAttr('style');� 428 mobileButton.data("originalWidth", '');� 429� 430 flexiCssMenus.alignMenu(name, options);� 431 if ($('.FM2_mobile_jq_menu').length && options.preset=='relative') {� 432 $('.FM2_mobile_jq_menu').css('position', '');� 433 $('.FM2_mobile_jq_menu').css('top', "");� 434 }� 435 }� 436 }� 437 � 438 function getButtonLevel(selectedNode) {� 439 try {� 440 var upULSNo = 0;� 441 � 442 //log("##getSelectedLevel##" + selectedNode.parentNode);� 443 while (selectedNode && selectedNode[0].className != undefined &&selectedNode[0].className.toLowerCase().indexOf("fm") < 0) {� 444 //log("##selectedNode.parentNode.nodeName.toLowerCase()##" + selectedNode.parentNode.nodeName.toLowerCase());� 445 if (selectedNode[0].tagName && selectedNode[0].tagName.toLowerCase() == "ul") {� 446 upULSNo++;� 447 }� 448 selectedNode = $(selectedNode).parent();� 449 }� 450 } catch (e) {� 451 alert("Error in getSelectedLevel ##" + e);� 452 }� 453 return upULSNo;� 454 }� 455� 456� 457 function destroy() { � 458 window.flexiCssMenus = {};� 459 }� 460� 461 function addParentSelected(liElem) { � 462 var parentUl = liElem.parent();� 463 if(parentUl[0].tagName && parentUl[0].tagName.toLowerCase() == "ul") { � 464 var parentLi = parentUl.parent();� 465 if(parentLi[0].tagName && parentLi[0].tagName.toLowerCase() == "li") { � 466 parentLi.add(parentLi.children('a')).addClass('sel');� 467 addParentSelected(parentLi);� 468 }� 469 }� 470 }� 471� 472 function checkForButtonSelect(menu, location) { � 473 var selected = false;� 474 menu.children('li').each(function() { � 475 if(selected) { � 476 return;� 477 }� 478 var $a = $(this).children('a');� 479 var href = $a.attr('href') ? $a.attr('href') : "";� 480� 481� 482 if(href != "#" && href != "") { � 483 if(location.indexOf(href) > -1) { � 484 � 485 selected = true;� 486 $(this).add($a).addClass('sel');� 487 addParentSelected($(this));� 488 }� 489 } � 490� 491 if(!selected) { � 492 if($(this).children('ul').length > 0)� 493 checkForButtonSelect($(this).children('ul').first(), location);� 494 }� 495 });� 496 }� 497� 498� 499 function addSelectedClass(name) { � 500 var currentPage = window.location.href;� 501 var menu = $("ul.FM2_" + name);� 502� 503 checkForButtonSelect(menu, currentPage);� 504 }� 505� 506� 507 function alignMenu(name, options) { � 508 � 509 if(!options || !options['align'] || options['align'] == "left") { � 510 return; � 511 }� 512 var align = options['align'];� 513 var menu = $('ul.FM2_' + name);� 514 var container = menu.parent();� 515� 516 � 517� 518 switch(align) { � 519 case "center" : �
520 var containerWidth = $(container).outerWidth(true,false); � 521 $(container).css({ � 522 "float" : "none",� 523 "width" : containerWidth + "px",� 524 "margin-left" : "auto",� 525 "margin-right" : "auto"� 526 })� 527 break;� 528� 529 case "right" : � 530 if($(container).css('float') == 'left') {� 531 $(container).css({� 532 "float" : "right"� 533 })� 534 }� 535 }� 536� 537 }� 538 � 539 if (!window.flexiCssMenus) window.flexiCssMenus = {};� 540 window.flexiCssMenus.stickToTop = stickToTop;� 541 window.flexiCssMenus.bindEffect = bindEffect;� 542 window.flexiCssMenus.addSelectedClass = addSelectedClass;� 543 window.flexiCssMenus.unbindEffect = unbindEffect;� 544 window.flexiCssMenus.alignMenu = alignMenu;� 545 � 546})(menus_jQuery);� 547� 548(function($) {� 549� 550 //css menus touch devices//� 551� 552 var CSSMenus;� 553� 554 if (!CSSMenus)� 555 {� 556 CSSMenus = new Object;� 557 }� 558� 559 // Set the user aggent into our own variable.� 560 CSSMenus.UserAgent = navigator.userAgent.toLowerCase();� 561� 562 /*� 563 * IsMobile() - Returns true if this is a mobile device.� 564 */� 565 CSSMenus.IsMobile = function (viewportWidth, maxWidth)� 566 {� 567 var deviceMatch = (/iphone|ipod|android|blackberry|mini|windows\sce|windows\sphone|iemobile|palm|webos|series60|symbianos|meego/i.test(CSSMenus.UserAgent));� 568 var sizeMatch;� 569 var isLTIE9 = (window.flexiCssMenus.browser.name == "msie" && window.flexiCssMenus.browser.version < 9);� 570 if(window.matchMedia && !isLTIE9) { � 571 sizeMatch = window.matchMedia("(max-width:" + (maxWidth) + "px)").matches;� 572 } else { � 573 sizeMatch = viewportWidth < maxWidth;� 574 }� 575 //console.log('mobile match ' + deviceMatch + " .. " + sizeMatch)� 576 return deviceMatch || sizeMatch;� 577 }� 578� 579 /*� 580 * IsTablet() - Return true if this is a tablet device.� 581 */� 582 CSSMenus.IsTablet = function (viewportWidth, minWidth, maxWidth)� 583 {� 584 var UA = CSSMenus.UserAgent;� 585 var is_touch_device = 'ontouchstart' in document.documentElement;� 586 /*if (UA.indexOf("android") != -1 && UA.indexOf("mobile") == -1)� 587 return true;� 588 */� 589 � 590 var deviceMatch = (/ipad|Win64|tablet/i.test(UA));� 591 var sizeMatch;� 592 var isLTIE9 = (window.flexiCssMenus.browser.name == "msie" && window.flexiCssMenus.browser.version < 9);� 593 if(!isLTIE9 && window.matchMedia) { � 594 sizeMatch = window.matchMedia("(max-width:" + (maxWidth) + "px) and (min-width:" + (minWidth+1) + "px)").matches;� 595 //console.log('tablet match ' + sizeMatch + " -- " + "(max-width:" + (maxWidth-1) + "px) and (min-width:" + minWidth + "px)");� 596 } else { � 597 sizeMatch = viewportWidth < maxWidth && viewportWidth >= minWidth;� 598 }� 599 //alert('device match ' + deviceMatch + ".. " + sizeMatch+ " .. touch device " + is_touch_device);� 600 return is_touch_device && (deviceMatch || sizeMatch);� 601 }� 602� 603 CSSMenus.IsAppleProduct = function ()� 604 {� 605 return (/iphone|ipod|ipad/i.test(CSSMenus.UserAgent));� 606 }� 607� 608 � 609 function xtdCSSMenuInit(Name, options)� 610 {� 611 // If this is a mobile device we want to show one of our menus� 612 // either the one for small devices or for devices with higher resolution.� 613 � 614 var viewportWidth = window.flexiCssMenus.correctedViewportW();� 615 � 616 � 617 //console.log(viewportWidth + " .. " + options.mobileMaxWidth + " > " + CSSMenus.IsTablet(viewportWidth, options.mobileMaxWidth, options.tabletMaxWidth));� 618 var mobileCheck = CSSMenus.IsMobile(viewportWidth, options.mobileMaxWidth)� 619 var isMobileDevice = options.enableMobile && mobileCheck;� 620 var tabletCheck = CSSMenus.IsTablet(viewportWidth, options.mobileMaxWidth, options.tabletMaxWidth);� 621 var isTabletDevice = (options.enableTablet && tabletCheck) || (!options.enableMobile && mobileCheck);� 622� 623� 624 //alert('mobile device ' + isMobileDevice + " .. tablet device " + isTabletDevice);� 625� 626 if (isMobileDevice || isTabletDevice)� 627 {� 628 try� 629 {� 630 if (isTabletDevice)� 631 {� 632 $("#"+Name+"_container").show();� 633 xtdSetTabletBehavior("#"+Name+"_container", options);� 634 flexiCssMenus.alignMenu(Name, options);� 635 }� 636 else� 637 {� 638� 639 � 640 var BtnParent = $("body");� 641� 642 var Menu = new XTDMobileMenu(Name);� 643 // Initialize the menu� 644 Menu.Init(options);� 645 Menu.Create(BtnParent);� 646 }� 647 }� 648 catch (e)� 649 {� 650 // Something went wrong.� 651 //console.error(e);� 652 return false;� 653 }� 654� 655 // The banner was succesus fully been created.� 656 return true;� 657 } else { � 658 $("#"+Name+"_container").show();� 659 }� 660� 661 // Something wrong happened.� 662 return false;� 663 }� 664� 665 /*� 666 * *** Tablet menu section. It binds the events for mouseenter and click for each button� 667 * *** which has a submenu.� 668 * � 669 * xtdSetTabletBehavior() - set tablet behaviour� 670 * � 671 * @param: elem - the jquery object representing the menu to modify.� 672 * @param: options - object with settings for the close button� 673 */� 674� 675 function xtdSetTabletBehavior(elem, options) {� 676 var children = $(elem).children();� 677 � 678 for (var i = 0; i < children.length; i++) {� 679 if (children[i].tagName && children[i].tagName.toLowerCase() == "li") {� 680 if(children[i].className.toLowerCase().indexOf("fm_close") == -1) {� 681 if(CSSMenus.IsAppleProduct()) {� 682 children.eq(i).bind("mouseenter", flexiCSSMenus_mouseEnterHandlerForIpad);� 683 }� 684 children.eq(i).bind("click", flexiCSSMenus_clickHandlerForTouchDevices);� 685 } else {� 686 children.eq(i).bind("click", flexiCSSMenus_clickHandlerForCloseButton);� 687 }� 688 }� 689� 690 if (children[i].tagName && children[i].tagName.toLowerCase() == "ul" && flexiCSSMenus_getButtonLevel($(children[i])) > 0 && options.tabletCloseBtnEnable != false) {� 691 var closeLabel;� 692 if(options.tabletCloseBtnLabel) { � 693 closeLabel = options.tabletCloseBtnLabel;� 694 } else { � 695 closeLabel = "Close";� 696 }� 697� 698 var liHtml = "<a href='#' target='_self'><font class='leaf'>"+ closeLabel +"</font></a>";� 699 var closeLI = $("<li/>").addClass("FM_CLOSE").html(liHtml);� 700 children.eq(i).append(closeLI);� 701 }� 702� 703 xtdSetTabletBehavior(children.get(i), options);� 704 }� 705 }� 706� 707 function xtdUnsetTabletBehavior(elem) { � 708 var children = $(elem).children();� 709� 710 for(var i=0; i<children.length; i++) {� 711 children.eq(i).unbind("click");� 712 xtdUnsetTabletBehavior(children.get(i));� 713 }� 714 }� 715� 716� 717 CSSMenus.flexiCSSMenus_currentButton = undefined;� 718 CSSMenus.flexiCSSMenus_currentLevel = -1;� 719� 720� 721 /*� 722 * If it's ipad, remove the mouseover event.� 723 */� 724 function flexiCSSMenus_mouseEnterHandlerForIpad(event) {� 725 � 726 }� 727� 728 /*� 729 * Method which is called when somebody clicks on a option.� 730 */� 731 function flexiCSSMenus_clickHandlerForTouchDevices(event) {� 732 var submenu = $(this).find("ul:eq(0)");� 733 � 734 if(event.stopPropagation) event.stopPropagation();� 735� 736 if(CSSMenus.flexiCSSMenus_currentButton && (CSSMenus.flexiCSSMenus_currentButton.get(0) == this) || !submenu.get(0)) { � 737 var parentNode;� 738 var level;� 739 while(CSSMenus.flexiCSSMenus_currentButton) {� 740 parentNode = CSSMenus.flexiCSSMenus_currentButton.parent().parent();� 741� 742 level = flexiCSSMenus_getButtonLevel(parentNode);� 743 flexiCSSMenus_deselectButton(CSSMenus.flexiCSSMenus_currentButton);� 744� 745 if(level > 0) {� 746 CSSMenus.flexiCSSMenus_currentButton = parentNode.parent().parent();� 747 } else {� 748 if(!parentNode) {� 749 flexiCSSMenus_deselectButton(parentNode);� 750 }� 751 CSSMenus.flexiCSSMenus_currentButton = undefined;� 752 }� 753 CSSMenus.flexiCSSMenus_currentLevel = level - 1;� 754 }� 755� 756 return;� 757 } else { � 758 event.preventDefault();� 759 }� 760 � 761 try { � 762 var node, level = flexiCSSMenus_getButtonLevel($(this));� 763 } catch(e) { � 764 alert('error 2');� 765 }� 766� 767 if(level > CSSMenus.flexiCSSMenus_currentLevel) { � 768 CSSMenus.flexiCSSMenus_currentButton = $(this);� 769� 770 if(level > 0) { � 771 node = CSSMenus.flexiCSSMenus_currentButton.parent(); � 772 while(level > CSSMenus.flexiCSSMenus_currentLevel && node.get(0).className.toLowerCase().indexOf('fm') < 0) { � 773 if(node.get(0).tagName && node.get(0).tagName.toLowerCase() == "li") {� 774 flexiCSSMenus_selectButton($(node));� 775 CSSMenus.flexiCSSMenus_currentLevel--; � 776 }� 777 node = node.parent(); � 778 }� 779 } � 780 flexiCSSMenus_selectButton($(CSSMenus.flexiCSSMenus_currentButton)); � 781 CSSMenus.flexiCSSMenus_currentLevel = level;� 782 return;� 783 } � 784� 785 if(level == CSSMenus.flexiCSSMenus_currentLevel) { � 786 try { � 787 flexiCSSMenus_deselectButton(CSSMenus.flexiCSSMenus_currentButton);� 788 CSSMenus.flexiCSSMenus_currentButton = $(this);� 789 CSSMenus.flexiCSSMenus_currentLevel = level;� 790 flexiCSSMenus_selectButton($(CSSMenus.flexiCSSMenus_currentButton));� 791 } catch(e) { � 792 alert('error 3');� 793 }� 794 return;� 795 }� 796 � 797 if(level < CSSMenus.flexiCSSMenus_currentLevel) { � 798 //flexiCSSMenus_deselectButton(CSSMenus.flexiCSSMenus_currentButton);� 799 while(level < CSSMenus.flexiCSSMenus_currentLevel) { � 800 CSSMenus.flexiCSSMenus_currentButton = CSSMenus.flexiCSSMenus_currentButton.parent();� 801 if(CSSMenus.flexiCSSMenus_currentButton.get(0).tagName && CSSMenus.flexiCSSMenus_currentButton.get(0).tagName.toLowerCase() == "li") {� 802 flexiCSSMenus_deselectButton(CSSMenus.flexiCSSMenus_currentButton);� 803 CSSMenus.flexiCSSMenus_currentLevel--;� 804 }� 805 }� 806 CSSMenus.flexiCSSMenus_currentButton = $(this);� 807 CSSMenus.flexiCSSMenus_currentLevel = level;� 808 flexiCSSMenus_selectButton($(CSSMenus.flexiCSSMenus_currentButton));� 809 return;� 810 }� 811 }� 812� 813 /*� 814 * Set behaviour for close button� 815 */� 816 function flexiCSSMenus_clickHandlerForCloseButton(event) {� 817 var parentNode = $(this).parent().parent();� 818 if(event.stopPropagation) event.stopPropagation();� 819 event.preventDefault();� 820 flexiCSSMenus_deselectButton(parentNode);� 821 try{� 822 var level = flexiCSSMenus_getButtonLevel(parentNode);� 823 } catch (e) {� 824 //console.error(e);� 825 }� 826 if(level > 0) {� 827 CSSMenus.flexiCSSMenus_currentButton = parentNode.parent().parent();� 828 } else {� 829 CSSMenus.flexiCSSMenus_currentButton = undefined;� 830 }� 831 CSSMenus.flexiCSSMenus_currentLevel = level - 1;� 832 }� 833� 834 /*� 835 * Removes the "hovered" class and sets the "current level" and "current selected button"� 836 * to the correct values � 837 */� 838 function flexiCSSMenus_deselectButton(button) {� 839 try { � 840 if(button) { � 841 button.find('a:eq(0)').removeAttr("class");� 842 var submenu = button.find('ul');� 843 if(submenu.length > 0) { � 844 button.removeAttr("class");� 845 hideSubmenu(submenu.eq(0));� 846 var hovered = submenu.eq(0).find(".hover");� 847 if (hovered.length > 0) {� 848 flexiCSSMenus_deselectButton(hovered.eq(0));� 849 }� 850 }� 851 � 852 var lis = submenu.eq(0).find('li');� 853 for(var i = 0; i < lis.length; i++) { � 854� 855 lis.eq(i).css("position", "relative");� 856 }� 857 }� 858 } catch(e) { � 859 //console.log(e);� 860 }� 861 }� 862� 863 function flexiCSSMenus_selectButton(button) {� 864 //button.css("position","relative");� 865 � 866 try { � 867 var submenu = button.find('ul');� 868 submenu.eq(0).css("z-index", "1");� 869 if(submenu.length > 0) {� 870 button.addClass("hover");� 871 showSubmenu(submenu.eq(0));� 872 � 873 var lis = submenu.eq(0).find('li');� 874 for(var i = 0; i < lis.length; i++) { � 875 lis.eq(i).css("position", "relative");� 876 }� 877 }� 878 } catch(e) { � 879 alert('error 1##'+e);� 880 }� 881 }� 882� 883� 884 function flexiCSSMenus_getButtonLevel(selectedNode) {� 885 try {� 886 var upULSNo = 0;� 887 � 888 //log("##getSelectedLevel##" + selectedNode.parentNode);� 889 while (selectedNode && selectedNode[0].className != undefined &&selectedNode[0].className.toLowerCase().indexOf("fm") < 0) {� 890 //log("##selectedNode.parentNode.nodeName.toLowerCase()##" + selectedNode.parentNode.nodeName.toLowerCase());� 891 if (selectedNode[0].tagName && selectedNode[0].tagName.toLowerCase() == "ul") {� 892 upULSNo++;� 893 }� 894 selectedNode = $(selectedNode).parent();� 895 }� 896 } catch (e) {� 897 alert("Error in getSelectedLevel ##" + e);� 898 }� 899 return upULSNo;� 900 }� 901� 902 function flexiCSSMenus_getButtonMenu(selectedNode) {� 903 try {� 904 var upULSNo = 0;� 905 � 906 //log("##getSelectedLevel##" + selectedNode.parentNode);� 907 while (selectedNode && (selectedNode[0].className.toLowerCase().indexOf("FM2_") == -1 || selectedNode[0].className.toLowerCase().indexOf("_container") == -1) ) {� 908 //log("##selectedNode.parentNode.nodeName.toLowerCase()##" + selectedNode.parentNode.nodeName.toLowerCase());� 909 selectedNode = selectedNode.parent();� 910 }� 911 } catch (e) {� 912 alert("Error in getButtonMenu ##" + e);� 913 }� 914 return selectedNode;� 915 }� 916� 917 function flexiCSSMenus_getMenuType(menuNode) {� 918 var menu, comment, start, end, type, props;� 919 menu = menuNode.get(0);� 920 � 921 start = menu.innerHTML.indexOf("<!--") + 4;� 922 end = menu.innerHTML.indexOf("-->");� 923 comment = menu.innerHTML.substring(start, end);� 924 props = comment.split(';');� 925 type = props[props.length - 2].replace('type=', '');� 926 � 927 return type;� 928 }� 929� 930 function showSubmenu(el){� 931 var uls = $("#"+CSSMenus.name+"_container").find("ul");� 932� 933� 934 � 935 if(el.is(":animated") || (el.get(0) == $("#" + CSSMenus.name).get(0))) {� 936 return;� 937 }� 938� 939 if (flexiCssMenus.settings.effect == "none") {� 940 el.show();� 941 } else {� 942 el.show(flexiCssMenus.settings.effect, flexiCssMenus.settings.options, 200);� 943 }� 944 }� 945� 946 function hideSubmenu (el) {� 947 if (el.is(":animated") || (el.get(0) == $("#" + CSSMenus.name).get(0))) {� 948 return;� 949 }� 950 var uls = $("#"+CSSMenus.name+"_container").find("ul");� 951 if(flexiCssMenus.settings.effect == "none") {� 952 el.hide();� 953 } else {� 954 el.hide(flexiCssMenus.settings.effect, flexiCssMenus.settings.options, 200);� 955 }� 956 }� 957� 958 /**� 959 ** End of tablet menu operations� 960 **/� 961� 962 /*� 963 * Mobile menu generation� 964 *� 965 * XTDMobileMenu() - Class which creates and handles a javascript menu for small mobile devices.� 966 */� 967 function XTDMobileMenu(MenuName)� 968 {� 969 /* Private variables */� 970 var Self = this;� 971 var Parent = null;� 972� 973 var MenuName = MenuName;� 974 var Options = null;� 975� 976 var MenuButton = null;� 977 var MainContainer = null;� 978 var MainMenu = null;� 979 var mobileOverlay = null;� 980 var Container = null;� 981 var Header = null;� 982 var MainUL = null;� 983 var Visible = false;� 984 var mainMenuHeader = null;� 985� 986 var presets = {� 987 "fixed" : {� 988 effect : 'fade',� 989 overlay : true� 990 },� 991 "relative" : {� 992 effect : 'slideUp',� 993 overlay : true� 994 },� 995 "push" : { � 996 effect : 'slideLeft',� 997 overlay : false� 998 }� 999 };� 1000� 1001 window.flexiCssMenus.presetSettings = null;� 1002� 1003 /*� 1004 * Init() - Initialize menu data.� 1005 */� 1006 this.Init = function (initObj)� 1007 {� 1008 Options =� 1009 {� 1010 FontColor: "#fff",� 1011 FontShadowColor: "#000",� 1012 NormalColor: "#ff0000",//"#F7F7F7",� 1013 HoverColor: "#DADADA"� 1014 };� 1015 � 1016 if (initObj) {� 1017 for (var i in initObj) {� 1018 Options[i] = initObj[i];� 1019 }� 1020 }� 1021� 1022 window.flexiCssMenus.presetSettings = presets[Options.preset];� 1023� 1024 }� 1025� 1026 /*� 1027 * Create() - Create the menu with the given settings.� 1028 */� 1029 this.Create = function (ButtonParent, onResize)� 1030 {� 1031 if ( document.readyState !== 'complete' ) { � 1032 $(document).ready(function() { � 1033 CreateMainButton(ButtonParent);� 1034 var overlayHeight = Math.max($('body').outerHeight() + 13, $(window).height(), $(document).outerHeight());� 1035 var overlayWidth = Math.max($('body').outerWidth(), $(window).width(), $(document).width());� 1036 createStructure();� 1037 $(mobileOverlay).height(overlayHeight);� 1038 $(mobileOverlay).width(overlayWidth);� 1039 � 1040 });� 1041 } else { � 1042� 1043 var overlayHeight = Math.max($('body').outerHeight() + 13, $(window).height(), $(document).outerHeight());� 1044 var overlayWidth = Math.max($('body').outerWidth(), $(window).width(), $(document).width());� 1045 CreateMainButton(ButtonParent);� 1046 createStructure();� 1047 $(mobileOverlay).height(overlayHeight);� 1048 $(mobileOverlay).width(overlayWidth);� 1049 }� 1050 � 1051 }� 1052� 1053 function createStructure() { � 1054 mobileOverlay = document.createElement("div");�
1055 $(mobileOverlay).addClass('FM2_' + MenuName + '_mobile-overlay FM2_' + MenuName + '_mobile-overlay-hide mobile-overlay');� 1056 � 1057 $(mobileOverlay).mousedown(function(ev) { � 1058 ev.preventDefault();� 1059 }).click(function() { � 1060 // alert('clicked');� 1061 if(Visible) { � 1062 Self.Show(Visible = !Visible);� 1063 }� 1064 });� 1065� 1066 � 1067 � 1068 MainContainer = document.createElement("div");� 1069� 1070 MainContainer.setAttribute("id", "FM2_" + MenuName+"_jq_menu_back");� 1071 MainContainer.setAttribute("class", "FM2_mobile_jq_menu ui-main-container ui-corner-all ui-mobile-viewports");� 1072 MainContainer.style.height = "0px"� 1073 � 1074� 1075 MainContainer.style.zIndex = "10005";� 1076� 1077 Container = document.createElement("div");� 1078 Container.setAttribute("class", "menu-container");� 1079 MainMenu = document.createElement("div");� 1080 MainMenu.className = "menu main-menu";� 1081� 1082 mainMenuHeader = createMainMenuHeader("Menu");� 1083 MainContainer.appendChild(mainMenuHeader);� 1084 � 1085 var ItemList = CreateItemList();� 1086� 1087 MainMenu.appendChild(ItemList);� 1088� 1089 Container.appendChild(MainMenu);� 1090 MainContainer.appendChild(Container);� 1091 // Append the main container.� 1092 � 1093 Parent = /*(Parent != null)? Parent :*/ document.getElementsByTagName('body')[0];� 1094� 1095 if(Options.preset == "fixed") { � 1096 mobileOverlay.appendChild(MainContainer);� 1097 Parent.appendChild(mobileOverlay);� 1098 } else { � 1099 $(MenuButton).after($(MainContainer));� 1100 }� 1101 � 1102� 1103 if(Options.preset != 'relative') { � 1104 if(Options.preset != 'push') { � 1105 $(Container).css('top', parseInt($(mainMenuHeader).outerHeight(true)) + "px");� 1106 } else { � 1107 MainMenu.style.marginTop = parseInt($(mainMenuHeader).outerHeight(true)) + "px";� 1108 }� 1109 var calcHeight = parseInt($(Container).height()) + parseInt($(mainMenuHeader).outerHeight()) ;� 1110 if(Options.preset == "push") { � 1111 //alert('dadsdf ' + $('body').outerWidth() + " .. " + $(window).width() + " .. " + $(document).width() + "px");� 1112 MainContainer.style.height = Math.max($('body').outerWidth(), $(window).width(), $(document).width()) + "px";� 1113 Container.style.height = calcHeight + "px" ;� 1114 } else { � 1115 MainContainer.style.height = calcHeight + "px" ;� 1116 }� 1117 }� 1118 $(MainContainer).hide();� 1119 � 1120 //$("#creative_menu_structure").remove();� 1121� 1122 // Set the links callback.� 1123 UpdateLinks();� 1124� 1125� 1126 GetCurrentItem();� 1127� 1128 Self.Update();� 1129 }� 1130� 1131 /*� 1132 * Show() - Show the menu� 1133 */� 1134 this.Show = function (Visible) {� 1135 //alert("show me " + Visible);� 1136 if (Visible){� 1137 $(mobileOverlay).removeClass('FM2_' + MenuName + '_mobile-overlay-hide');� 1138� 1139 switch(window.flexiCssMenus.presetSettings.effect) { � 1140 case "fade" : � 1141� 1142 $(MainContainer).css('width', $('body').width());� 1143 var overlayWidth = Math.max($('body').outerWidth(), $(window).width(), $(document).width());� 1144 $(mobileOverlay).width(overlayWidth);� 1145 � 1146 $(MainContainer).fadeIn("fast").css({� 1147 top : $(window).scrollTop(),� 1148 left : $('body').css('margin-left')� 1149 });� 1150 var overlayHeight = Math.max($('body').outerHeight() + 13, $(window).height(), $(document).outerHeight());� 1151 var containerHeight = $(Container).height() + $(window).scrollTop() + 300;� 1152� 1153 $(mobileOverlay).height(Math.max(overlayHeight, containerHeight));� 1154 break;� 1155� 1156 case "slideUp" : � 1157 $(MainContainer).css('height','auto').slideDown();� 1158� 1159 break;� 1160� 1161 case "slideLeft":� 1162 $('body').stop(true, true).css({� 1163 'width' : '100%',� 1164 'overflow' : 'hidden'� 1165 }).animate({� 1166 'margin-left' : '72%'� 1167 }, '300');� 1168� 1169 var pageHeight = Math.max($('body').outerWidth(), $(window).width(), $(document).outerHeight());� 1170 var containerHeight = $(Container).height() + $(window).scrollTop() + 20;� 1171� 1172� 1173 $(MainContainer).stop(true, true).show().css('height',Math.max(pageHeight, containerHeight)).animate({� 1174 left : '0px'� 1175 }, '400');� 1176� 1177 $(Container).css({� 1178 "margin-top" : $(window).scrollTop()� 1179 });� 1180� 1181 $(mainMenuHeader).css({� 1182 "margin-top" : $(window).scrollTop() +10� 1183 });� 1184 � 1185 break;� 1186 }� 1187 � 1188 // $('body').bind('touchmove', function(e){ e.preventDefault(); });� 1189 � 1190 //$('body').css('margin-left', '40px');� 1191� 1192 } else {� 1193 $(mobileOverlay).addClass('FM2_' + MenuName + '_mobile-overlay-hide');� 1194 switch(window.flexiCssMenus.presetSettings.effect) { � 1195 case "fade" : � 1196 $(MainContainer).fadeOut("fast", function (){� 1197 $(MainContainer).find(".submenu").remove();� 1198 $(MainContainer).find(".menu").css("width", "").show();� 1199 //$(mobileOverlay).remove();� 1200 });� 1201 break;� 1202� 1203 case "slideUp" : � 1204 $(MainContainer).slideUp();� 1205� 1206 break;� 1207� 1208 case "slideLeft":� 1209 $('body').stop(true, true).animate({� 1210 'margin-left' : '0'� 1211 }, '400', function() { � 1212 $(this).css('width', 'auto')� 1213 });� 1214� 1215 $(MainContainer).stop(true, true).animate({� 1216 left : '-100%'� 1217 }, '300', function() { � 1218 $(this).hide();� 1219 })� 1220 � 1221 break;� 1222 }� 1223 � 1224 // $('body').unbind('touchmove');� 1225 }� 1226 }� 1227 � 1228 /*� 1229 * ShowHeader() - Show/Hide the header.� 1230 *� 1231 * PARAMETERS:� 1232 * Visible - Specifies if this should be visible or not.� 1233 */� 1234 this.ShowHeader = function (Visible)� 1235 {� 1236 if (Visible)� 1237 $(Header).show();� 1238 else� 1239 $(Header).hide();� 1240 }� 1241� 1242 /*� 1243 * GoToSubmenu() - Go to the specified submenu.� 1244 */� 1245 this.GoToSubmenu = function(ParentID, Current)� 1246 {� 1247 if ($(Current).parent().has("ul").length)� 1248 {� 1249 var Submenu = document.createElement("div");� 1250 Submenu.setAttribute("class", "menu submenu");� 1251 var UlElement = $(Current).parent().children("ul").clone(true, true);� 1252� 1253 // Save these to know which submenu to set to header.� 1254 UlElement.attr("elcaption", $(Current).text());� 1255 UlElement.attr("ellink", $(Current).attr("href"));� 1256 UlElement.attr("eltarget", $(Current).attr("target"));� 1257 UlElement.show();� 1258 var newHeader = CreateHeader($(Current).text(), $(Current).attr("href"));� 1259� 1260 Submenu.appendChild(newHeader);� 1261 UlElement.appendTo($(Submenu));� 1262� 1263 $(Submenu).appendTo(Container);� 1264� 1265 var containerWidth = parseInt($(MainContainer).width());� 1266 Submenu.style.width = containerWidth + "px";� 1267 $(Container).children(".menu").eq(-1).css("width", containerWidth);� 1268 $(Container).children(".menu").eq(-2).css("width", containerWidth);� 1269 Container.style.width = 2 * containerWidth + 2 + "px";� 1270 MainContainer.style.height = Math.max(parseInt(MainContainer.style.height), parseInt(Container.style.height)) + "px";� 1271 switch(window.flexiCssMenus.presetSettings.effect) { � 1272 case "fade":� 1273 � 1274 $(Container).animate({display:"none"}, 1, "swing", function(){� 1275 $(Container).children(".menu").eq(-2).hide();� 1276 $(Container).css({"width" : "", "left" : ""});� 1277 $(Container).children(".menu").eq(-1).css("opacity", 0).animate({opacity:1},150);� 1278 });� 1279� 1280 break;� 1281� 1282 case "slideLeft" :� 1283 $(Container).animate({left :"-" + containerWidth + "px"}, 250, "swing", function(){� 1284 $(Container).children(".menu").eq(-2).hide();� 1285 $(Container).css({"width" : "", "left" : ""});� 1286 $(Container).children(".menu").eq(-1).css("width", "").css({� 1287 top : $(window).scrollTop()� 1288 });� 1289 });� 1290� 1291 break;� 1292� 1293 case "slideUp" :� 1294 � 1295 $(Container).animate({left :"-" + containerWidth + "px"}, 250, "swing", function(){� 1296 $(Container).children(".menu").eq(-2).hide();� 1297 $(Container).css({"width" : "", "left" : ""});� 1298 $(Container).children(".menu").eq(-1).css("width", "");� 1299 });� 1300 break;� 1301 }� 1302 � 1303� 1304 � 1305� 1306 }� 1307� 1308� 1309 }� 1310� 1311 /*� 1312 * GoBack() - Go back to the previous menu submenu.� 1313 */� 1314 this.GoBack = function (Current)� 1315 {� 1316 if ($(Container).children(".menu").length > 1) {� 1317 var containerWidth = parseInt($(MainContainer).width());� 1318� 1319 $(Container).children(".menu").eq(-1).css("width", containerWidth + "px");� 1320 $(Container).children(".menu").eq(-2).show().css("width", containerWidth + "px");� 1321 $(Container).css({"width" : 2 * containerWidth + "px", "left" : "-" + containerWidth + "px"});� 1322 switch(window.flexiCssMenus.presetSettings.effect) { � 1323 case "fade" : � 1324 $(Container).animate({opacity : 1}, 1, "swing", function() {� 1325 $(Container).children(".menu").last().remove();� 1326 $(Container).css({"width" : "", "left" : ""});� 1327 $(Container).children(".menu").eq(-1).css("opacity", 0).animate({opacity:1},150);� 1328 });� 1329� 1330 break;� 1331� 1332 case "slideLeft" :� 1333�
1334 $(Container).animate({left : "0px"}, 250, "swing", function() {� 1335 $(Container).children(".menu").last().remove();� 1336 $(Container).css({"width" : "", "left" : ""});� 1337 $(Container).children(".menu").eq(-1).css("width", "");� 1338 });� 1339 break;� 1340� 1341 case "slideUp" :� 1342 � 1343 $(Container).animate({left : "0px"}, 250, "swing", function() {� 1344 $(Container).children(".menu").last().remove();� 1345 $(Container).css({"width" : "", "left" : ""});� 1346 $(Container).children(".menu").eq(-1).css("width", "");� 1347 });� 1348 break;� 1349 }� 1350 }� 1351 }� 1352� 1353 � 1354 /*� 1355 * SetOptions() - Set Menu options.� 1356 */� 1357 this.SetOptions = function (Value)� 1358 {� 1359 Options = $.extend(true, Options, Value);� 1360� 1361 // Update menu with the new options.� 1362 Self.Update();� 1363 }� 1364� 1365 /*� 1366 * Update() - Update the menu.� 1367 */� 1368 this.Update = function ()� 1369 {� 1370 if ($(Container).children("ul").length == 1)� 1371 {� 1372 $(Header).children("a.back-btn").css("display", "none");� 1373 }� 1374 }� 1375� 1376� 1377 /* Private functions */� 1378� 1379 /*� 1380 * CreateMainButton() - Create the Level 0 button.� 1381 */� 1382 function CreateMainButton(Parent) {� 1383 � 1384 // search the page for already created button� 1385 var btn = $("#FM2_" + MenuName + "_mobile_button");� 1386� 1387 if(btn.length > 0) { � 1388 btn.attr('href', '#').removeAttr('style');� 1389 MenuButton = btn[0];� 1390 } else { � 1391 � 1392 // create a new button� 1393 MenuButton = document.createElement("a");� 1394� 1395 MenuButton.innerHTML += "<span class='down-arrow'>▼</span><span class='caption'>Menu</span>";� 1396 MenuButton.setAttribute("href", "#");� 1397 MenuButton.setAttribute("id", "FM2_" + MenuName + "_mobile_button");� 1398 � 1399 $(MenuButton).addClass("FM2_mobile_button").appendTo(Parent);� 1400 � 1401 }� 1402 � 1403 $(MenuButton).unbind('click').click(function (ev) {� 1404 ev.preventDefault();� 1405 ev.stopPropagation();� 1406 � 1407 // Toggle visible.� 1408 Self.Show(Visible = !Visible);� 1409 });� 1410 }� 1411� 1412 /*� 1413 * CreateHeader() - Create the menu header.� 1414 */� 1415 function CreateHeader(Caption, Link)� 1416 {� 1417 var Header = document.createElement("div");� 1418 var BackBtn = document.createElement("a");� 1419 var CloseBtn = document.createElement("a");� 1420 var Title = document.createElement("p");� 1421� 1422 Header.setAttribute("id", MenuName+"_jq_menu_header");� 1423 Header.setAttribute("class", "menu-header");� 1424� 1425 BackBtn.setAttribute("href", "javascript: void(0);");� 1426 BackBtn.setAttribute("class", "back-btn");� 1427 � 1428 $(BackBtn).click(function (ev)� 1429 {� 1430 ev.stopPropagation();� 1431 // Go back.� 1432 Self.GoBack();� 1433 });� 1434� 1435 Title.innerHTML = "<a href='" + Link + "''>" + Caption + "</a>";� 1436� 1437 Header.appendChild(BackBtn);� 1438 Header.appendChild(Title);� 1439� 1440 return Header;� 1441 }� 1442� 1443 function createMainMenuHeader(caption) { � 1444 var Header = document.createElement("div");� 1445 Header.setAttribute("class", "main-menu-header");� 1446 /*var HeaderContainer = document.createElement("p");� 1447 var CloseBtn = document.createElement("span");� 1448 var Title = document.createElement("span");� 1449� 1450 � 1451� 1452 CloseBtn.setAttribute("href", "javascript: void(0);");� 1453 CloseBtn.setAttribute("class", "close-btn");� 1454 � 1455 � 1456 $(CloseBtn).click(function ()� 1457 {� 1458 // Go back.� 1459 Visible = false;� 1460 Self.Show(Visible);� 1461 });� 1462 $(Title).addClass('caption');� 1463 Title.innerHTML = caption;� 1464 � 1465 HeaderContainer.appendChild(Title);� 1466 HeaderContainer.appendChild(CloseBtn);� 1467 Header.appendChild(HeaderContainer);� 1468*/� 1469 $(Header).click(function (ev) {� 1470 ev.preventDefault();� 1471 ev.stopPropagation();� 1472 // Toggle visible.� 1473 Self.Show(Visible = !Visible);� 1474 });� 1475� 1476 return Header;� 1477 }� 1478� 1479 /*� 1480 * SetHeader() - Set caption and link to header.� 1481 */� 1482 /*function SetHeader(Caption, Link, Target)� 1483 {� 1484 if (typeof(Link) != "undefined")� 1485 $(Header).children("p").html("<a href='"+Link+"' target='"+Target+"'>"+Caption+"</a>");� 1486 else�
1487 $(Header).children("p").html(Caption);� 1488 }*/� 1489� 1490 /*� 1491 * GetCurrentItem() - Get the current item from link.� 1492 */� 1493 function GetCurrentItem()� 1494 {� 1495 var MenuItem = "Menu";� 1496� 1497 $(Container).children("ul").find("a").each(function ()� 1498 {� 1499 if ($(this).attr("href") == window.location)� 1500 {� 1501 MenuItem = $(this).children("p").html();� 1502 }� 1503 });� 1504� 1505 $(MenuButton).children("span.caption").children("p.xtd_menu_ellipsis").html(MenuItem);� 1506 }� 1507� 1508 /*� 1509 * CreateItemList() - Create a list with all menu/submenu items.� 1510 */� 1511 function CreateItemList(Structure)� 1512 {� 1513 var Structure = (typeof(Structure) != "undefined") ? Structure : $("#" + MenuName + "_container > ul > li");� 1514 var ULElement = document.createElement("ul");� 1515� 1516 Structure.each(function (Index)� 1517 {� 1518 var LiElement = document.createElement("li");� 1519 var AElement = null;� 1520� 1521 LiElement.className = "ellipsis";� 1522 // Clone the original a element� 1523 AElement = $(this).children("a").clone().appendTo($(LiElement));� 1524 � 1525 // Add a paragraph for ellipsis to work.� 1526 AElement.html('<p class="xtd_menu_ellipsis">' + AElement.html() + '</p>'); � 1527� 1528 if ($(this).children("ul").length)� 1529 {� 1530 // Recursive call for the child elements.� 1531 var NewUL = CreateItemList($(this).children("ul").children("li"));� 1532 NewUL.style.display = "none";� 1533 LiElement.appendChild(NewUL);� 1534 }� 1535� 1536 ULElement.appendChild(LiElement);� 1537 });� 1538� 1539 return ULElement;� 1540 }� 1541� 1542 /*� 1543 * UpdateLinks() - Update the jquery click event.� 1544 */� 1545 function UpdateLinks(Cont)� 1546 {� 1547 var ObjContainer = (Cont != undefined) ? Cont : MainMenu;� 1548 // Do some init here.� 1549� 1550 $(ObjContainer).children("ul").find("li").click(function (event)� 1551 {� 1552 var elem = $(this).children('a');� 1553 if($(MainContainer).find(".menu").filter(":visible").length > 1) {� 1554 //console.log($(".menu").filter(":visible").length);� 1555 return;� 1556 }� 1557� 1558 // Check if it has a child so we know if we execute the link or the child.� 1559 event.preventDefault();� 1560 event.stopPropagation();� 1561 if (elem.parent().has("ul").length)� 1562 {� 1563� 1564 Self.GoToSubmenu("", elem);� 1565 event.preventDefault();� 1566 event.stopPropagation();� 1567 }� 1568 else� 1569 {� 1570 if(elem.length > 0 && elem.attr('href')) { � 1571 window.location = elem.attr('href');� 1572 }� 1573 $(MenuButton).children("span.caption").children("p.xtd_menu_ellipsis").html(elem.children("p").html());� 1574 if(Visible) { � 1575 Self.Show(Visible = !Visible);� 1576 }� 1577 }� 1578 }).on('touchstart', function() { � 1579 $(this).addClass('clicked');� 1580 }).on('touchend', function() { � 1581 $(this).removeClass('clicked');� 1582 }).on('touchmove', function() { � 1583 $(this).removeClass('clicked');� 1584 });� 1585 }� 1586� 1587� 1588 /*� 1589 * Destroy menu - destroy the mobile menu when required� 1590 */� 1591 � 1592 }� 1593 function destroy() { � 1594 $(".mobile_menu_button").remove();� 1595 $('.mobile-overlay').remove();� 1596 $('.FM2_mobile_jq_menu').remove();� 1597 $('body').unbind('touchmove');� 1598 if(window.flexiCssMenus.presetSettings && window.flexiCssMenus.presetSettings.effect == "slideLeft") { � 1599 $('body').stop(true, true).css({� 1600 'margin-left' : '0',� 1601 'width': 'auto'� 1602 });� 1603 }� 1604 }� 1605 if (!window.flexiCssMenus) window.flexiCssMenus = {};� 1606 window.flexiCssMenus.xtdCSSMenuInit = xtdCSSMenuInit;� 1607 window.flexiCssMenus.xtdUnsetTabletBehavior = xtdUnsetTabletBehavior;� 1608 window.flexiCssMenus.destroy = destroy;� 1609� 1610})(menus_jQuery);� 1611� 1612� 1613//ie css3 script//� 1614� 1615(function($) {� 1616 function getBrowser() {� 1617 // jquery code//� 1618 var ua = navigator.userAgent.toLowerCase();� 1619 var match = /(chrome)[ \/]([\w.]+)/.exec( ua ) ||� 1620 /(webkit)[ \/]([\w.]+)/.exec( ua ) ||� 1621 /(opera)(?:.*version|)[ \/]([\w.]+)/.exec( ua ) ||� 1622 /(msie) ([\w.]+)/.exec( ua ) ||� 1623 ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec( ua ) ||� 1624 [];� 1625 � 1626 var ver = match[ 2 ] || "0";� 1627 var fi = ver.indexOf('.');� 1628 var fi2 = ver.indexOf('.', fi);� 1629 if (fi2 != -1) {� 1630 ver = parseFloat(ver.substring(0, fi2));� 1631 }� 1632 return {� 1633 name: match[ 1 ] || "",� 1634 version: ver� 1635 };� 1636 }� 1637 � 1638 function getScriptFolder() {� 1639 var scripts = document.getElementsByTagName('SCRIPT');� 1640 for (var i = 0; i < scripts.length; i++) {� 1641 var src = scripts[i].getAttribute('src');� 1642 if (src && src.indexOf('fleximenus2.js') != -1) {� 1643 if (src.lastIndexOf('/') != -1) {� 1644 return src.substring(0, src.lastIndexOf('/') + 1);� 1645 } else {� 1646 return '';� 1647 }� 1648 }� 1649 }� 1650 }� 1651 � 1652 var browser = getBrowser();� 1653 � 1654 if (!window.flexiCssMenus) window.flexiCssMenus = {};� 1655 window.flexiCssMenus.browser = getBrowser();� 1656 � 1657 var scriptFolder = getScriptFolder();� 1658 var ssFolder = scriptFolder;� 1659 � 1660 function addEventListener(element, type, listener) {� 1661 if (element.addEventListener) {� 1662 element.addEventListener(type, listener, false); � 1663 } else if (element.attachEvent) {� 1664 element.attachEvent('on' + type, listener);� 1665 }� 1666 }� 1667 � 1668 var addPropertyFails = {};� 1669 � 1670 function addBehavior() {� 1671 function addPropertyInRules(ss, url) {� 1672 if (!addPropertyFails[url]) addPropertyFails[url] = 0;� 1673 if (!ss.rules.length) {� 1674 addPropertyFails[url]++;� 1675 if (ss.owningElement.readyState != "complete" && addPropertyFails[url] < 500) {� 1676 setTimeout( (function(ss, url) {� 1677 return function() {� 1678 addPropertyInRules(ss, url);� 1679 };� 1680 })(ss, url) , 10);� 1681 }� 1682 } else {� 1683 for (var j = ss.rules.length - 1; j >= 0; j--) {� 1684 var rule = ss.rules[j];� 1685 rule.style.behavior = "url(" + url + ")";� 1686 }� 1687 }� 1688 }� 1689 � 1690 var links = document.getElementsByTagName('LINK');� 1691 for (var i = 0; i < links.length; i++) {� 1692 var href = links[i].getAttribute('href');� 1693 if (href) {� 1694 if (href.indexOf('-ie.css') != -1 && href.toLowerCase().indexOf(ssFolder.toLowerCase()) != -1) {� 1695 var url = href.substring(0, href.lastIndexOf('/')) + "/PIE.htc";� 1696 addPropertyInRules(links[i].styleSheet, url);� 1697 }� 1698 }� 1699 }� 1700 }� 1701 � 1702 var parsedLinks = [];� 1703 � 1704 function linkWasParsed(link) {� 1705 for (var i = 0; i < parsedLinks.length; i++) {� 1706 if (parsedLinks[i] == link) {� 1707 return true;� 1708 }� 1709 }� 1710 return false;� 1711 }� 1712 � 1713 function existsInHead(link) {� 1714 var links = document.getElementsByTagName('LINK');� 1715 for (var i = 0; i < links.length; i++) {� 1716 var href = links[i].getAttribute('href');� 1717 if (href == link) {� 1718 return true;� 1719 }� 1720 }� 1721 return false;� 1722 }� 1723 � 1724 function addIE9Links(){� 1725 if (browser.name == "msie" && browser.version <= 9) {� 1726 var links = document.getElementsByTagName('LINK');� 1727 var length = links.length;� 1728 for (var i = 0; i < length; i++) {� 1729 var href = links[i].getAttribute('href');� 1730 if (!linkWasParsed(href)) {� 1731 parsedLinks.push(href);� 1732 if (href && href.indexOf('http://') == -1 && href.indexOf('reset.css') == -1 && href.indexOf('-ie.css') == -1 && href.toLowerCase().indexOf(ssFolder.toLowerCase()) != -1) {� 1733 if (!existsInHead(href.replace('.css', '-ie.css'))){ � 1734 document.createStyleSheet(href.replace('.css', '-ie.css'));� 1735 parsedLinks.push(href.replace('.css', '-ie.css'));� 1736 }� 1737 }� 1738 }� 1739 }� 1740 }� 1741 }� 1742 � 1743 addIE9Links();� 1744 addEventListener(window, "load", function() {� 1745 // this is for link tags added after our script//� 1746 addIE9Links();� 1747� 1748 if (browser.name == "msie" && browser.version == 7) {� 1749 window.setTimeout(function() {� 1750 addBehavior();� 1751 }, 1000);� 1752 }� 1753 � 1754 if (browser.name == "msie" && browser.version <= 9 && browser.version != 7) {� 1755 addBehavior();� 1756 }� 1757 });� 1758})(menus_jQuery);� 1759� 1760� 1761function registerFlexiCSSMenu(name, settings) {� 1762 flexiCssMenus.settings = settings;� 1763� 1764 if(!window.registeredFlexiMenus) { � 1765 window.registeredFlexiMenus = [];� 1766 }� 1767� 1768� 1769 if (window.flexiCssMenus.browser.name == "msie" && window.flexiCssMenus.browser.version < 9) {� 1770 //alert(name + " .. " + window.flexiCssMenus.browser.name + " .. " + window.flexiCssMenus.browser.version);� 1771 menus_jQuery(document).ready(function() {� 1772 menus_jQuery(".FM2_mobile_button").hide();� 1773 });� 1774 settings["effectRest"] = null;� 1775 settings["effectSub"] = null;� 1776 settings["effectSubTwo"] = null;� 1777 � 1778 } � 1779� 1780 registeredFlexiMenus.push({"name" : name, "settings" : settings});� 1781� 1782 menus_jQuery("#"+name+"_container").removeAttr('style');� 1783 //console.log(settings.options['enableMobile']);� 1784 if(!settings.options['enableMobile']) { � 1785 menus_jQuery(document).ready(function() { � 1786 menus_jQuery(".FM2_mobile_button").hide();� 1787 });� 1788 }� 1789� 1790 setTimeout(function() {� 1791 if(!flexiCssMenus.xtdCSSMenuInit(name, settings.options)) {� 1792 flexiCssMenus.bindEffect(name, settings);� 1793 flexiCssMenus.addSelectedClass(name);�
1794 flexiCssMenus.alignMenu(name, settings.options);� 1795 if(settings.stickToTop) { � 1796 flexiCssMenus.stickToTop(name, settings.takeBrowserWidth, settings.options);� 1797 }� 1798 }� 1799 if(settings.stickToTop)� 1800 flexiCssMenus.stickToTop(name, settings.takeBrowserWidth, settings.options)� 1801 � 1802 },500)� 1803 � 1804 � 1805� 1806}� 1807� 1808� 1809(function($) {� 1810 var id;� 1811 if(window.addEventListener) { � 1812 window.addEventListener("orientationchange", function() {� 1813 clearTimeout(id);� 1814 id = setTimeout(doneResizing, 100);� 1815 });� 1816 }� 1817 menus_jQuery(window).unbind('resize.xtd').bind('resize.xtd', function() {� 1818 //menus_jQuery(window).resize(function() { � 1819 var is_touch_device = 'ontouchstart' in document.documentElement;� 1820 if(is_touch_device) { � 1821 menus_jQuery(window).unbind('resize');� 1822 return;� 1823 }� 1824 clearTimeout(id);� 1825 id = setTimeout(doneResizing, 100);� 1826 });� 1827� 1828� 1829 function doneResizing() {� 1830 for(var i=0; i < registeredFlexiMenus.length; i++) {� 1831 var menu = registeredFlexiMenus[i];� 1832� 1833 if(flexiCssMenus.destroy) { � 1834 flexiCssMenus.destroy(menu.name);� 1835 menus_jQuery('.FM_CLOSE').remove();� 1836 flexiCssMenus.xtdUnsetTabletBehavior("#" + menu.name + "_container");� 1837 flexiCssMenus.unbindEffect(menu.name);� 1838 }� 1839 }� 1840� 1841 for(var i=0; i < registeredFlexiMenus.length; i++) { � 1842 var menu = registeredFlexiMenus[i];� 1843� 1844 � 1845 if(!flexiCssMenus.xtdCSSMenuInit(menu.name, menu.settings.options)) {� 1846 flexiCssMenus.bindEffect(menu.name, menu.settings);� 1847 // flexiCssMenus.addSelectedClass(name);� 1848 flexiCssMenus.alignMenu(name, menu.settings.options);� 1849 } � 1850 if(menu.settings.stickToTop) { � 1851 flexiCssMenus.stickToTop(menu.name, menu.settings.takeBrowserWidth,menu.settings.options);� 1852 }� 1853 }� 1854 }� 1855� 1856 var correctedViewportW = (function (win, docElem) {� 1857� 1858 var mM = win['matchMedia'] || win['msMatchMedia']� 1859 , client = docElem['clientWidth']� 1860 , inner = win['innerWidth']� 1861� 1862 return mM && client < inner && true === mM('(min-width:' + inner + 'px)')['matches']� 1863 ? function () { return win['innerWidth'] }� 1864 : function () { return docElem['clientWidth'] }� 1865� 1866 }(window, document.documentElement));� 1867 � 1868 if (!window.flexiCssMenus) window.flexiCssMenus = {};� 1869 window.flexiCssMenus.correctedViewportW = correctedViewportW;� 1870})(menus_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.