1/* 2top.js 3last update 414:12 2017-02-06 59:54 2018-03-26 lang 615:35 2018-05-29 for feedin.js 714:14 2019-12-13 update DoYouKnow function via GovHK 811:16 2020-01-03 update for webcast 916:59 2020-12-10 jquery3 fix (load) 1015:45 2021-09-29 emblem update 11*/ 12var doYouKnowRecord; 13// 9:51 2018-03-26 got the lang again (same as govhk.js) 14var lang = $('html').attr('lang') 15 16$(document).ready(function () { 17 $('#doYouKnow').addClass('init-collapsed'); 18 initTopSection(); 19 var isMobile = (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)); 20 edgeSvgFixed($('.searchHolder .searchMainBtn')); 21 edgeSvgFixed($('.subSearchBtn')); 22 23 var scrollAction = 'scroll'; 24 if (isMobile) { 25 scrollAction = 'scroll touchmove'; 26 //$('#innerLogo').addClass('mobile'); 27 } 28 $(window).on(scrollAction, _.throttle(function () { 29 setFromTop(); 30 scroll(); 31 hmNewfixedMenuHandler(); 32 }, 150)); 33}); 34 35$(window).on('resize', _.debounce(function () { 36 hmNewDoYouKnowHolderHandler(); 37 setTimeout(function(){ 38 hmNewDoYouKnowHolderHandler(); 39 }, 300); 40 hmNewfixedMenuHandler(); 41}, 50)); 42 43// 17:03 2020-12-10 jquery3 fix 44//$(window).load(function () { 45$(window).on( "load", function () { 46 edgeSvgFixed($('.header nav .subMenu .searchWrapper .subSearchBtn')); 47 hmNewDoYouKnowHolderHandler(); 48 initDoYouKnow(); 49 hmNewfixedMenuHandler(); 50 $('body').addClass('pageAllReady'); 51}); 52 53function initTopSection() { 54 //doyouknow 55 $('#navToggle').click(function () { 56 if (windowQueryWidth < 1200) { 57 setFromTop(); 58 scroll(); 59 } 60 }); 61 $('#doYouKnow .closeBtn').click(function (event) { 62 event.preventDefault(); 63 if (windowQueryWidth > 1200){ 64 $('#doYouKnow').addClass('init-collapsed'); 65 } 66 doYouKnowRecord = 1; 67 $.cookie("doYouKnow-" + lang, 1, { 68 expires: 1, 69 path: '/' 70 }); 71 closeDoYouKnow(); 72 73 hmNewfixedMenuHandler(); 74 }); 75 $('#doYouKnowBtn a').click(function (event) { 76 event.preventDefault(); 77 if (windowQueryWidth > 1200){ 78 $('#doYouKnow').removeClass('collapsed'); 79 $('#doYouKnow').removeClass('init-collapsed'); 80 } 81 if (!$(this).hasClass('active')) { 82 doYouKnowRecord = 0; 83 openDoYouKnow(); 84 } else { 85 doYouKnowRecord = 1; 86 closeDoYouKnow(); 87 } 88 }); 89 $('.mobileToggle').click(function (event) { 90 event.preventDefault(); 91 if (!$('.doYouKnowOn').length) { 92 doYouKnowRecord = 0; 93 openDoYouKnow(); 94 } else { 95 doYouKnowRecord = 1; 96 closeDoYouKnow(); 97 $.cookie("doYouKnow-" + lang, 1, { 98 expires: 1, 99 path: '/' 100 }); 101 } 102 }); 103} 104 105 106 107// home page 108function initDoYouKnow() { 109 doYouKnowRecord = $.cookie("doYouKnow-" + lang); 110 if (isHomePage) { 111 $('#doYouKnowBtn a').addClass('active'); 112 var activeTxt = $('#doYouKnowBtn a').data('title-active'); 113 $('#doYouKnowBtn a').attr('title', activeTxt); 114 $('header, body').addClass('doYouKnowOn'); 115 } 116 //doYouKnowRecord = false; //TEST 117 118 /* 119 // 16:27 2021-09-23 120 // if (!doYouKnowRecord) { // org 121 if (doYouKnowRecord) { 122 openDoYouKnow(); 123 //$.cookie("doYouKnow", 1, { expires : 1, path: '/' }); 124 } else { 125 closeDoYouKnow(); 126 //$.cookie("doYouKnow", 1, { expires : 1, path: '/' }); 127 } 128 */ 129 // 15:44 2021-09-29 just close do you know by default 130 closeDoYouKnow(); 131 132 $('#doYouKnow').removeClass('notReady'); 133} 134 135function openDoYouKnow(mode, aniMode) { 136 // 11:20 2018-05-23 for search autocomplete - no use 137 //if (doyouknow_suppress==1) return false; 138 $('#doYouKnow').removeClass('closing'); 139 var aniTime = 300; 140 if (aniMode == 'still') { 141 $('#doYouKnow').removeAttr('style').show(); 142 var curHeight = 0; 143 var autoHeight = $('.hmNewDoYouKnowHolder__inner').outerHeight(); 144 if(isSafari){ 145 $('body').addClass('doYouKnowOpening'); 146 $('.hmNewPageContentHolder').css({'top': ''}).animate({top: autoHeight}); 147 } 148 openProcess(); 149 } else { 150 var $doYouKnow = $('#doYouKnow'); 151 $doYouKnow.show(); 152 var curHeight = 0; 153 var autoHeight = $('.hmNewDoYouKnowHolder__inner').outerHeight(); 154 if(isSafari){ 155 $('body').addClass('doYouKnowOpening'); 156 $('.hmNewPageContentHolder').css({'top': ''}).animate({top: autoHeight}); 157 } 158 $doYouKnow.height(curHeight).animate({height: autoHeight}, aniTime, function(){ 159 openProcess(); 160 }); 161 } 162 163 function openProcess() { 164 var $doYouKnowBtn = $('#doYouKnowBtn a'); 165 var activeTxt = $doYouKnowBtn.data('title-active'); 166 $doYouKnowBtn.addClass('active').attr('title', activeTxt); 167 $('header, body').addClass('doYouKnowOn'); 168 $('body').removeClass('doYouKnowOpening'); 169 } 170} 171 172function closeDoYouKnow(mode, aniMode) { 173 var aniTime = 300; 174 var windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 175 //if (aniMode == 'still' || windowWidth<1201) { 176 $('header, body').removeClass('doYouKnowOn'); 177 if (aniMode == 'still') { 178 $('#doYouKnow').hide(); 179 closeProcess(); 180 } else {
181 $('#doYouKnow').finish().slideUp(aniTime, function () { 182 closeProcess(); 183 }); 184 } 185 186 function closeProcess() { 187 var $doYouKnowBtn = $('#doYouKnowBtn a'); 188 var inactiveTxt = $doYouKnowBtn.data('title-inactive'); 189 $doYouKnowBtn.removeClass('active').attr('title', inactiveTxt); 190 $('header, body').removeClass('doYouKnowOn doYouKnowOpening'); 191 } 192} 193 194function hmNewfixedMenuHandler() { 195 if ($('header.cleanHeader').length > 0) { 196 return false; 197 } 198 var fromTop = $(document).scrollTop(); 199 var windowWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; 200 var endPos = windowHeight * 0.12; 201 var doYouKnowOffset = 0; 202 if (!isHomePage) { 203 if (fromTop > endPos) { 204 $('body').addClass("menuFixed"); 205 } else { 206 $('body').removeClass("menuFixed"); 207 } 208 } else { 209 if($('#doYouKnow:visible').length){ 210 doYouKnowOffset = $('#doYouKnow').height(); 211 } 212 213 endPos = $('.hmNewTopPanel__main').offset().top + $('.hmNewTopPanel__main').outerHeight()*3/4 - doYouKnowOffset; 214 if (fromTop > endPos) { 215 $('body').addClass("menuFixed"); 216 } else { 217 $('body').removeClass("menuFixed"); 218 } 219 } 220 var $webCast = $('.webCast:visible'); 221 var webCastHeight = 0; 222 if($webCast.length){ 223 webCastHeight = $('.webCast').outerHeight(); 224 } 225 var menuPos = webCastHeight; 226 if(windowWidth>767){ 227 //menuPos = endPos; 228 } 229 if(fromTop>menuPos || menuPos == 0){ 230 $('body').addClass('isMobileMenuFixed'); 231 if($('body').hasClass('iphone')){ 232 $('.hmNewDoYouKnowHolder').css('margin-top', '-'+webCastHeight+'px'); 233 } else { 234 $('.hmNewDoYouKnowHolder__inner').css('margin-top', ''); 235 } 236 $('.hmNewHeader .menuBar').css('margin-top', '-'+webCastHeight+'px'); 237 } else { 238 $('body').removeClass('isMobileMenuFixed'); 239 if($('body').hasClass('iphone')){ 240 $('.hmNewDoYouKnowHolder').css('margin-top', ''); 241 } else { 242 $('.hmNewDoYouKnowHolder__inner').css('margin-top', ''); 243 } 244 $('.hmNewHeader .menuBar').css('margin-top', ''); 245 } 246} 247var isDoYouKnowHolderReady = false; 248function hmNewDoYouKnowHolderHandler(){ 249 var $hmNewDoYouKnowHolder = $('.hmNewDoYouKnowHolder'); 250 if (!isHomePage || !$hmNewDoYouKnowHolder.length) { 251 return false; 252 } 253 var $hmNewDoYouKnowHolderInner = $hmNewDoYouKnowHolder.find('.hmNewDoYouKnowHolder__inner'); 254 var $hmNewDoYouKnowHolderWrapper = $hmNewDoYouKnowHolder.find('.hmNewDoYouKnowHolder__wrapper'); 255 $hmNewDoYouKnowHolderWrapper.height($hmNewDoYouKnowHolderInner.outerHeight()); 256 var autoHeight = $('.hmNewDoYouKnowHolder__inner').outerHeight(); 257 if(isSafari){ 258 $('.hmNewPageContentHolder').css({'top':autoHeight}); 259 } 260 $hmNewDoYouKnowHolder.css({'height':''}); 261 if(!isDoYouKnowHolderReady){ 262 $hmNewDoYouKnowHolder.addClass('isReady'); 263 isDoYouKnowHolderReady = true; 264 } 265} 266 267 268// --- by GovHK 269// ------------- 270// callback from ISD 271// 14:14 2019-12-13 change by GovHK 272function DoYouKnow(r) { 273 274 var htmlHl = ''; //Highlight Item 275 var htmlList = ''; //List Item 276 var data = r.popup; 277 var j=-1; 278 // 9:34 2016-12-08 : add 6 dots on chinese 279 var do_you_know_txt = getTxtByLang2(['Do You Know?','æ³ä½ ç¥......','æ³ä½ ç¥......']); 280 var readmore_txt = getTxtByLang2(['Read more','é±è®æ´å¤','é 读æ´å¤']); 281 282 // 11:29 2016-07-18 cannot assume feed-in is right 283 //doyouknow_items = Number(data.render_a1_items) + Number(data.render_tvapi_items); 284 doyouknow_items = 0; // init 285 //alert('doyouknow_items at data ='+ doyouknow_items); 286 287 console.log('data'); 288 console.log(data); 289 290 a1_item = 0; 291 tv_item = 0; 292 293 // 12:24 2019-12-13 change back from FS, must loop all items 294 // for(var i=0;i<4;i++) { 295 for(var i in data.items) { 296 var obj = data.items[i]; 297 298 // 14:03 2019-12-13 increase count first 299 if (obj.type == "a1") { a1_item++; } 300 if (obj.type == "tvapi") { tv_item++; } 301 302 /* Skip non-rendering, fix 11:28 2016-07-18 */ 303 /* note: the 'false' is a text on data, not javascript true false */ 304 if ( obj.render=='false' || 305 (obj.type == "a1" && a1_item > data.render_a1_items) || 306 (obj.type == "tvapi" && tv_item > data.render_tvapi_items) ) { 307 continue; 308 } 309 310 // doyouknow_items++; 14:05 2019-12-13 no need 311 //alert('2) pass: obj.render ' + obj.render); 312 // 15:29 2016-06-22 i may be skip, so it may not be 0,1,2,3... 313 // j will be 0,1,2... (after Skip non-rendering) 314 j++; 315 // global variable for remove excessive items later 316 317 318 // 15:26 2016-05-26 KC: amend for icon 319 var videoThumb = obj.video_icon ? 'videoThumb' : ''; 320 var win_name = obj.video_icon ? 'doyouknow-popup' : 'doyouknow-full'; 321 322 // youtube popup window 323 if (obj.video_url.indexOf('youtube')>0) { 324 win_name = 'doyouknow-full'; 325 } 326 // note: "read more" alway pop full window 327 328 var img_url = (obj.video_url || obj.article_url || '#'); 329 // 14:58 2016-07-26 readmore_url is use article_url first 330 var readmore_url = (obj.article_url || obj.video_url || '#'); 331 332 //Get img host 333 var imgHost = "/"; 334 var fullUrl = window.location.href; 335 if(fullUrl.indexOf('//www.gov.hk') < 0){ 336 imgHost = fullUrl.split('/'+language+'/')[0]+'/'; 337 } 338 339 // 14:09 2019-12-13 CAUTION: desktop layout different: 340 // format first item in left side, second plus at right side 341 if(j==0){ 342 htmlHl += '<div class="hmNewDoYouKnow__hlItem">'; 343 htmlHl += '<a target="_blank" href="'+img_url+'" data-govhk-window='+win_name+' title="'+obj.title+'" class="hmNewDoYouKnow__hlThumb '+videoThumb+'">'; 344 htmlHl += '<img src="'+obj.img+'" alt="'+obj.title+'" />'; 345 htmlHl += '</a>'; 346 htmlHl += '<a target="_blank" href="'+readmore_url+'" data-govhk-window='+win_name+' title="'+obj.title+'" class="hmNewDoYouKnow__hlTxt">'; 347 htmlHl += '<div class="hmNewDoYouKnow__hlTitle">'; 348 htmlHl += '<span>'+obj.title+'</span>'; 349 htmlHl += '</div>'; 350 htmlHl += '<div class="hmNewDoYouKnow__hlLink">'; 351 htmlHl += '<span>'+readmore_txt+'</span>'; 352 htmlHl += '</div>'; 353 htmlHl += '</a>'; 354 htmlHl += '</div>'; 355 } else { 356 htmlList += '<a target="_blank" href="'+img_url+'" title="'+obj.title+'" class="hmNewDoYouKnow__listItem">'; 357 htmlList += '<div class="hmNewDoYouKnow__listThumb">'; 358 htmlList += '<img src="'+obj.img+'" alt="'+obj.title+'" />'; 359 htmlList += '</div>'; 360 htmlList += '<div class="hmNewDoYouKnow__listTitle">'; 361 htmlList += '<span>'+obj.title+'<img class="hmNewDoYouKnow__listArrow" src="'+imgHost
361+'images/home-enhancement/icon-arrow.svg" alt="" /></span>'; 362 htmlList += '</div>'; 363 htmlList += '</a>'; 364 } 365 366 }; 367 368 369 $('.hmNewDoYouKnow__highlight').html(htmlHl); 370 $('.hmNewDoYouKnow__list').html(htmlList); 371 372 // handle doYouKnow Popup Window 373 popDoYouKnowWindow(); 374 375} 376 377 378function getParameterByName(name, url) { 379 if (!url) url = window.location.href; 380 name = name.replace(/[\[\]]/g, "\\$&"); 381 var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), 382 results = regex.exec(url); 383 if (!results) return null; 384 if (!results[2]) return ''; 385 return decodeURIComponent(results[2].replace(/\+/g, " ")); 386}
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.