/*! * Piwik - Web Analytics * * @link http://piwik.org * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later */ $(document).ready(function () { var languageSelector = $("#languageSelection"); // no Language sector on the page if (languageSelector.size() == 0) return; languageSelector.find("input").hide(); var select = $("#language").hide(); var langSelect = $("") .insertAfter(select) .text(select.children(':selected').text()) .autocomplete({ delay: 0, position: { my : "right top", at: "right bottom" }, minLength: 0, appendTo: '#languageSelection', source: function (request, response) { response(select.children("option").map(function () { var text = $(this).text(); return { label: text, value: this.value, title: $(this).attr('title'), href: $(this).attr('href'), option: this }; })); }, select: function (event, ui) { event.preventDefault(); ui.item.option.selected = true; if (ui.item.value) { langSelect.text(ui.item.label); $('#languageSelection').find('form').submit(); } else if (ui.item.href) { window.open(ui.item.href); } } }) .click(function () { // close if already visible if ($(this).autocomplete("widget").is(":visible")) { $(this).autocomplete("close"); return; } // pass empty string as value to search for, displaying all results $(this).autocomplete("search", ""); }); langSelect.data( "ui-autocomplete" )._renderItem = function( ul, item ) { $(ul).attr('id', 'languageSelect'); return $( "
  • " ) .data( "item.ui-autocomplete", item ) .append( "
    " + item.label + "" ) .appendTo( ul ); }; $('body').on('mouseup', function (e) { if (!$(e.target).parents('#languageSelection').length && !$(e.target).is('#languageSelection') && !$(e.target).parents('#languageSelect').length) { langSelect.autocomplete("close"); } }); });