function insertBanner(bannerJson) { jQuery('div#centralNotice').prepend( bannerJson.banner ); } function toggleNotice() { var notice = document.getElementById('centralNotice'); if (!wgNoticeToggleState) { notice.className = notice.className.replace('collapsed', 'expanded'); toggleNoticeCookie('0'); } else { notice.className = notice.className.replace('expanded', 'collapsed'); toggleNoticeCookie('1'); } wgNoticeToggleState = !wgNoticeToggleState; } function toggleNoticeStyle(elems, display) { if(elems) for(var i=0;i'; $( '#siteNotice' ).prepend( '
'+bannerScript+'
' ); }, 'loadBannerList': function( geoOverride ) { if ( geoOverride ) { var geoLocation = geoOverride; // override the geo info } else { var geoLocation = Geo.country; // pull the geo info } var bannerListQuery = $.param( { 'language': wgContentLanguage, 'project': wgNoticeProject, 'country': geoLocation } ); var bannerListURL = wgScript + '?title=' + encodeURIComponent('Special:BannerListLoader') + '&cache=/cn.js&' + bannerListQuery; var request = $.ajax( { url: bannerListURL, dataType: 'json', success: $.centralNotice.fn.chooseBanner } ); }, 'chooseBanner': function( bannerList ) { // Convert the json object to a true array bannerList = Array.prototype.slice.call( bannerList ); // Make sure there are some banners to choose from if ( bannerList.length == 0 ) return false; var groomedBannerList = []; for( var i = 0; i < bannerList.length; i++ ) { // Only include this banner if it's intended for the current user if( ( wgUserName && bannerList[i].display_account ) || ( !wgUserName && bannerList[i].display_anon == 1 ) ) { // add the banner to our list once per weight for( var j=0; j < bannerList[i].weight; j++ ) { groomedBannerList.push( bannerList[i] ); } } } // Return if there's nothing left after the grooming if( groomedBannerList.length == 0 ) return false; // Load a random banner from our groomed list $.centralNotice.fn.loadBanner( groomedBannerList[ Math.floor( Math.random() * groomedBannerList.length ) ].name ); }, 'getQueryStringVariables': function() { document.location.search.replace( /\??(?:([^=]+)=([^&]*)&?)/g, function () { function decode( s ) { return decodeURIComponent( s.split( "+" ).join( " " ) ); } $.centralNotice.data.getVars[decode( arguments[1] )] = decode( arguments[2] ); } ); } } } $( document ).ready( function () { // Initialize the query string vars $.centralNotice.fn.getQueryStringVariables(); if( $.centralNotice.data.getVars['banner'] ) { // if we're forcing one banner $.centralNotice.fn.loadBanner( $.centralNotice.data.getVars['banner'] ); } else { // Look for banners ready to go NOW $.centralNotice.fn.loadBannerList( $.centralNotice.data.getVars['country'] ); } } ); //document ready } )( jQuery );