/* Bottom navigator display */ ;(function(win, $){ var addHandler = function(el, type, handler){ if(el.addEventListener) el.addEventListener(type, handler, false); else if(el.attachEvent) el.attachEvent("on"+type, handler); else el["on"+type] = handler; },msflag = false; // For ':active' addHandler(document.body, "touchstart", $.noop); // Initialize variables var $scontainer = $('body > #scroll_container'),ua = navigator.userAgent.toLowerCase(), $btmnav = $('body > #mphone_btmnav'),navH = $btmnav.outerHeight(), $sbcontainer = $scontainer.children('#scroll_container_bg'); var $li = $btmnav.find('li'),$mpop = $('body > #mphone_morepop'), cln = $li.filter(':not(.more)').length,step = win.isHandheld?1:2,minliw = 74 * step; // Onload event var canvasH = $('#canvas').height(),footerH = $('#site_footer').height(); $(win).bind("pageloaded", function(){ var maxW = $scontainer.width(),btop = $sbcontainer.height(); // 兼容其他底部浮动层 var $fixedlayer = $scontainer.children('.fixedbottom'); $fixedlayer.length && $fixedlayer.css("bottom", navH+'px'); var $fixedlayer2 = $scontainer.find('.parametercon'); $fixedlayer2.length && $fixedlayer2.css("bottom", navH+'px'); // Mobile-website preview var scframw = 0; if ((regarr = /hdname=([a-z0-9]+)\b/i.exec(location.href)) != null) { step = 1;minliw = 74; maxW = parent.$('#'+regarr[1]+'_frame').width(); scframw = maxW; } // Create placeholder var $placeholder = $scontainer.children('#mphone_placeholder'); if (! $placeholder.length) { $placeholder = $('
').appendTo($scontainer); } if ($scontainer.height() != canvasH + footerH + (navH - 3)) { $scontainer.add($sbcontainer).height(function(n, c){return c + navH - 3}); } $placeholder.css({height: navH+'px',top: btop+'px'}); msflag = true; // Reset navbar-positon var navleft = /micromessenger/i.test(ua)?'auto':($scontainer.offset().left+'px'); $btmnav.css({"bottom": '0px',"left": navleft,"width": maxW+'px',"visibility": 'visible'}); // Reset column-style var liw = Math.floor(maxW / cln); if (minliw > liw) {/* 'more' button */ var moreW = 24 * step,actW = maxW - moreW,cln2 = Math.floor(actW / minliw); newliw = Math.max(minliw, Math.floor(actW / cln2)); $li.filter(':lt('+cln2+')').width(newliw+'px').show().children('a').width(newliw+'px'); $li.filter(':gt('+(cln2 - 1)+')').hide().filter('.more').show(); // 'more' event $li.filter('.more').unbind("click").bind("click", function(){ if($mpop.is(':visible')) return false; $li.filter(':hidden:not(.more)').clone(true).show().appendTo($mpop.children('ul').empty()); if(scframw > 0) $mpop.css("max-width", '160px'); $mpop.css({"bottom": (navH + 15)+'px',"right": ($scontainer.offset().left + 2 * step)+'px'}).show(); }); } else { $li.filter('.more').unbind("click").hide() .siblings().width(liw+'px').show().children('a').width(liw+'px'); // Align center var diff = maxW - cln * liw; if(diff > 0) $btmnav.find('ul').css("margin-left", Math.floor(diff / 2)+'px'); } // Resize & Scroll var etype = (("orientation" in win) && ("onorientationchange" in win))?"orientationchange":"resize"; $scontainer.add(this).bind(etype, function(e){ // Destroy 'more' popup if($mpop.is(':visible')) $mpop.hide().children('ul').empty(); // Reload $(win).triggerHandler("pageloaded"); // Fixed low-version if(ua.indexOf('android 2.3') > -1) $btmnav.css('top', ($(this).height() - navH)+'px'); }).bind("click", function(e){ // Destroy 'more' popup if($mpop.is(':visible') && ! $(e.target).closest(['#mphone_btmnav','#mphone_morepop']).length) $mpop.hide().children('ul').empty(); }); }).load(function(){ var sid = null;if(msflag) return false; sid = setTimeout(function(){$(win).triggerHandler("pageloaded");clearTimeout(sid)}, 500); }); })(window, jQuery);