( function () { 'use strict'; var resultGroups; $( function () { resultGroups = $( '.facet.groups' ).data( 'facets' ); $( '.tux-searchpage .button' ).click( function () { var query = $( '.tux-searchpage .searchinputbox' ).val(), result = lexOperators( query ), $form = $( '.tux-searchpage form[name=searchform]' ); $.each( result, function ( index, value ) { var $input = $( '' ).prop( 'type', 'hidden' ), $elem = $form.find( 'input[name=' + index + ']' ); if ( $elem.length ) { $elem.val( value ); } else { $form.append( $input .prop( { value: value, name: index } ) ); } } ); } ); buildSelectedBox(); showLanguages(); showMessageGroups(); // Make the whole rows clickable $( '.tux-searchpage .row .facet-item' ).click( function ( event ) { window.location = $( this ).find( 'a' ).attr( 'href' ); event.stopPropagation(); } ); } ); // ES5-compatible Chrome, IE 9+, FF 4+, or Safari 5+ has Object.keys. // Make other old browsers happy if ( !Object.keys ) { Object.keys = function ( obj ) { var keys = [], k; for ( k in obj ) { if ( Object.prototype.hasOwnProperty.call( obj, k ) ) { keys.push( k ); } } return keys; }; } function showLanguages() { var $languages, languages, ulslanguages = [], currentLanguage, resultCount, $count, result, i, selectedClasss = '', languageCode, quickLanguageList = [], unique = [], $ulsTrigger, uri; $languages = $( '.facet.languages' ); languages = $languages.data( 'facets' ); currentLanguage = $languages.data( 'language' ); if ( !languages ) { return; } if ( currentLanguage !== '' ) { uri = new mw.Uri( location.href ); uri.extend( { language: '', filter: '' } ); addToSelectedBox( getLanguageLabel( currentLanguage ), uri.toString() ); } resultCount = Object.keys( languages ).length; quickLanguageList = quickLanguageList.concat( mw.uls.getFrequentLanguageList() ) .concat( Object.keys( languages ) ); // Remove duplicates from the language list quickLanguageList.forEach( function ( lang ) { result = languages[ lang ]; if ( result && unique.indexOf( lang ) === -1 ) { unique.push( lang ); } } ); if ( currentLanguage && quickLanguageList.indexOf( currentLanguage ) >= 0 ) { quickLanguageList = unique.splice( 0, 5 ); if ( quickLanguageList.indexOf( currentLanguage ) === -1 ) { quickLanguageList = quickLanguageList.concat( currentLanguage ); } } else { quickLanguageList = unique.splice( 0, 6 ); } quickLanguageList.sort( sortLanguages ); for ( i = 0; i <= quickLanguageList.length; i++ ) { languageCode = quickLanguageList[ i ]; result = languages[ languageCode ]; if ( !result ) { continue; } if ( currentLanguage === languageCode ) { selectedClasss = 'selected'; } else { selectedClasss = ''; } $languages.append( $( '