|
|
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 11: |
Zeile 11: |
| | | |
| var autoCollapse = 2; | | var autoCollapse = 2; |
| var collapseCaption = "hide"; | | var collapseCaption = "Verbergen"; |
| var expandCaption = "show"; | | var expandCaption = "Anzeigen"; |
| | | |
| function hasClass( element, className ) { | | function hasClass( element, className ) { |
Zeile 94: |
Zeile 94: |
| | | |
| addOnloadHook( createCollapseButtons ); | | addOnloadHook( createCollapseButtons ); |
|
| |
|
| |
| /** Dynamic Navigation Bars (experimental) *************************************
| |
| *
| |
| * Description: See [[Wikipedia:NavFrame]].
| |
| * Maintainers: UNMAINTAINED
| |
| */
| |
|
| |
| // set up the words in your language
| |
| var NavigationBarHide = '[' + collapseCaption + ']';
| |
| var NavigationBarShow = '[' + expandCaption + ']';
| |
|
| |
| // shows and hides content and picture (if available) of navigation bars
| |
| // Parameters:
| |
| // indexNavigationBar: the index of navigation bar to be toggled
| |
| function toggleNavigationBar(indexNavigationBar)
| |
| {
| |
| var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
| |
| var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
| |
|
| |
| if (!NavFrame || !NavToggle) {
| |
| return false;
| |
| }
| |
|
| |
| // if shown now
| |
| if (NavToggle.firstChild.data == NavigationBarHide) {
| |
| for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
| |
| if ( hasClass( NavChild, 'NavPic' ) ) {
| |
| NavChild.style.display = 'none';
| |
| }
| |
| if ( hasClass( NavChild, 'NavContent') ) {
| |
| NavChild.style.display = 'none';
| |
| }
| |
| }
| |
| NavToggle.firstChild.data = NavigationBarShow;
| |
|
| |
| // if hidden now
| |
| } else if (NavToggle.firstChild.data == NavigationBarShow) {
| |
| for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
| |
| if (hasClass(NavChild, 'NavPic')) {
| |
| NavChild.style.display = 'block';
| |
| }
| |
| if (hasClass(NavChild, 'NavContent')) {
| |
| NavChild.style.display = 'block';
| |
| }
| |
| }
| |
| NavToggle.firstChild.data = NavigationBarHide;
| |
| }
| |
| }
| |
|
| |
| // adds show/hide-button to navigation bars
| |
| function createNavigationBarToggleButton()
| |
| {
| |
| var indexNavigationBar = 0;
| |
| // iterate over all < div >-elements
| |
| var divs = document.getElementsByTagName("div");
| |
| for (var i = 0; NavFrame = divs[i]; i++) {
| |
| // if found a navigation bar
| |
| if (hasClass(NavFrame, "NavFrame")) {
| |
|
| |
| indexNavigationBar++;
| |
| var NavToggle = document.createElement("a");
| |
| NavToggle.className = 'NavToggle';
| |
| NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
| |
| NavToggle.setAttribute('href', 'javascript:toggleNavigationBar(' + indexNavigationBar + ');');
| |
|
| |
| var NavToggleText = document.createTextNode(NavigationBarHide);
| |
| for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
| |
| if ( hasClass( NavChild, 'NavPic' ) || hasClass( NavChild, 'NavContent' ) ) {
| |
| if (NavChild.style.display == 'none') {
| |
| NavToggleText = document.createTextNode(NavigationBarShow);
| |
| break;
| |
| }
| |
| }
| |
| }
| |
|
| |
| NavToggle.appendChild(NavToggleText);
| |
| // Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
| |
| for(var j=0; j < NavFrame.childNodes.length; j++) {
| |
| if (hasClass(NavFrame.childNodes[j], "NavHead")) {
| |
| NavFrame.childNodes[j].appendChild(NavToggle);
| |
| }
| |
| }
| |
| NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
| |
| }
| |
| }
| |
| }
| |
|
| |
| addOnloadHook( createNavigationBarToggleButton );
| |
|
| |
|
| |
| //Shuffle for election candidates
| |
| function dshuf(){
| |
| var shufsets=new Object()
| |
| var rx=new RegExp('dshuf'+'\\s+(dshufset\\d+)', 'i')
| |
| var divs=document.getElementsByTagName("div")
| |
| for (var i=0; i<divs.length; i++){
| |
| if (rx.test(divs[i].className)){
| |
| if (typeof shufsets[RegExp.$1]=="undefined"){
| |
| shufsets[RegExp.$1]=new Object()
| |
| shufsets[RegExp.$1].inner=[]
| |
| shufsets[RegExp.$1].member=[]
| |
| }
| |
| shufsets[RegExp.$1].inner.push(divs[i].innerHTML)
| |
| shufsets[RegExp.$1].member.push(divs[i])
| |
| }
| |
| }
| |
| for (shufset in shufsets){
| |
| shufsets[shufset].inner.sort(function() {return 0.5 - Math.random()})
| |
| for (var i=0; i<shufsets[shufset].member.length; i++){
| |
| shufsets[shufset].member[i].innerHTML=shufsets[shufset].inner[i]
| |
| shufsets[shufset].member[i].style.display="block"
| |
| }
| |
| }
| |
|
| |
| }
| |
|
| |
| addOnloadHook(dshuf);
| |
|
| |
| /*************
| |
| *** AJAX transclusion table <http://meta.wikimedia.org/wiki/User:Pathoschild/Scripts/AJAX_transclusion_table>
| |
| *** by [[m:user:Pathoschild]]
| |
| *************/
| |
| function attLoader() {
| |
| if(getElementsByClassName(document.getElementsByTagName('body')[0],'table','attable').length) {
| |
| document.write('<script type="text/javascript" src="'
| |
| + 'http://meta.wikimedia.org/w/index.php?title=User:Pathoschild/Scripts/AJAX_transclusion_table.js'
| |
| + '&action=raw&ctype=text/javascript&dontcountme=s"></script>');
| |
| }
| |
| }
| |
| addOnloadHook(attLoader);
| |
|
| |
| /** JSconfig ************
| |
| * Global configuration options to enable/disable and configure
| |
| * specific script features from [[MediaWiki:Common.js]] and
| |
| * [[MediaWiki:Monobook.js]]
| |
| * This framework adds config options (saved as cookies) to [[Special:Preferences]]
| |
| * For a more permanent change you can override the default settings in your
| |
| * [[Special:Mypage/monobook.js]]
| |
| * for Example: JSconfig.keys[loadAutoInformationTemplate] = false;
| |
| *
| |
| * Maintainer: [[User:Dschwen]]
| |
| */
| |
|
| |
| var JSconfig =
| |
| {
| |
| prefix : 'jsconfig_',
| |
| keys : {},
| |
| meta : {},
| |
|
| |
| //
| |
| // Register a new configuration item
| |
| // * name : String, internal name
| |
| // * default_value : String or Boolean (type determines configuration widget)
| |
| // * description : String, text appearing next to the widget in the preferences
| |
| // * prefpage : Integer (optional), section in the preferences to insert the widget:
| |
| // 0 : User profile
| |
| // 1 : Skin
| |
| // 2 : Math
| |
| // 3 : Files
| |
| // 4 : Date and time
| |
| // 5 : Editing
| |
| // 6 : Recent changes
| |
| // 7 : Watchlist
| |
| // 8 : Search
| |
| // 9 : Misc
| |
| //
| |
| // Access keys through JSconfig.keys[name]
| |
| //
| |
| registerKey : function( name, default_value, description, prefpage )
| |
| {
| |
| if( typeof(JSconfig.keys[name]) == 'undefined' )
| |
| JSconfig.keys[name] = default_value;
| |
| else {
| |
|
| |
| // all cookies are read as strings,
| |
| // convert to the type of the default value
| |
| switch( typeof(default_value) )
| |
| {
| |
| case 'boolean' : JSconfig.keys[name] = ( JSconfig.keys[name] == 'true' ); break;
| |
| case 'number' : JSconfig.keys[name] = JSconfig.keys[name]/1; break;
| |
| }
| |
|
| |
| }
| |
|
| |
| JSconfig.meta[name] = { 'description' : description, 'page' : prefpage || 0, 'default_value' : default_value };
| |
| },
| |
|
| |
| readCookies : function()
| |
| {
| |
| var cookies = document.cookie.split("; ");
| |
| var p =JSconfig.prefix.length;
| |
| var i;
| |
|
| |
| for( var key in cookies )
| |
| {
| |
| if( cookies[key].substring(0,p) == JSconfig.prefix )
| |
| {
| |
| i = cookies[key].indexOf('=');
| |
| //alert( cookies[key] + ',' + key + ',' + cookies[key].substring(p,i) );
| |
| JSconfig.keys[cookies[key].substring(p,i)] = cookies[key].substring(i+1);
| |
| }
| |
| }
| |
| },
| |
|
| |
| writeCookies : function()
| |
| {
| |
| for( var key in JSconfig.keys )
| |
| document.cookie = JSconfig.prefix + key + '=' + JSconfig.keys[key] + '; path=/; expires=Thu, 2 Aug 2009 10:10:10 UTC';
| |
| },
| |
|
| |
| evaluateForm : function()
| |
| {
| |
| var w_ctrl,wt;
| |
| //alert('about to save JSconfig');
| |
| for( var key in JSconfig.meta ) {
| |
| w_ctrl = document.getElementById( JSconfig.prefix + key )
| |
| if( w_ctrl )
| |
| {
| |
| wt = typeof( JSconfig.meta[key].default_value );
| |
| switch( wt ) {
| |
| case 'boolean' : JSconfig.keys[key] = w_ctrl.checked; break;
| |
| case 'string' : JSconfig.keys[key] = w_ctrl.value; break;
| |
| }
| |
| }
| |
| }
| |
|
| |
| JSconfig.writeCookies();
| |
| return true;
| |
| },
| |
|
| |
| setUpForm : function()
| |
| {
| |
| var prefChild = document.getElementById('preferences');
| |
| if( !prefChild ) return;
| |
| prefChild = prefChild.childNodes;
| |
|
| |
| //
| |
| // make a list of all preferences sections
| |
| //
| |
| var tabs = new Array;
| |
| var len = prefChild.length;
| |
| for( var key = 0; key < len; key++ ) {
| |
| if( prefChild[key].tagName &&
| |
| prefChild[key].tagName.toLowerCase() == 'fieldset' )
| |
| tabs.push(prefChild[key]);
| |
| }
| |
|
| |
| //
| |
| // Create Widgets for all registered config keys
| |
| //
| |
| var w_div, w_label, w_ctrl, wt;
| |
| for( var key in JSconfig.meta ) {
| |
| w_div = document.createElement( 'DIV' );
| |
|
| |
| w_label = document.createElement( 'LABEL' );
| |
| w_label.appendChild( document.createTextNode( JSconfig.meta[key].description ) )
| |
| w_label.htmlFor = JSconfig.prefix + key;
| |
|
| |
| wt = typeof( JSconfig.meta[key].default_value );
| |
|
| |
| w_ctrl = document.createElement( 'INPUT' );
| |
| w_ctrl.id = JSconfig.prefix + key;
| |
|
| |
| // before insertion into the DOM tree
| |
| switch( wt ) {
| |
| case 'boolean' : w_ctrl.type = 'checkbox'; break;
| |
| case 'string' : w_ctrl.type = 'text'; break;
| |
| }
| |
|
| |
| w_div.appendChild( w_label );
| |
| w_div.appendChild( w_ctrl );
| |
| tabs[JSconfig.meta[key].page].appendChild( w_div );
| |
|
| |
| // after insertion into the DOM tree
| |
| switch( wt ) {
| |
| case 'boolean' : w_ctrl.defaultChecked = w_ctrl.checked = JSconfig.keys[key]; break;
| |
| case 'string' : w_ctrl.defaultValue = w_ctrl.value = JSconfig.keys[key]; break;
| |
| }
| |
|
| |
| }
| |
| addHandler(document.getElementById('preferences').parentNode, 'submit', JSconfig.evaluateForm );
| |
| }
| |
| }
| |
|
| |
| JSconfig.readCookies();
| |
| addOnloadHook(JSconfig.setUpForm);
| |
|
| |
| // ability to pull [[MediaWiki:Gadget-rtl.css]] on individual page loads by [[testwiki:User:Splarka]] and [[wm2008:User:Mr.Z-man]]
| |
| function importStylesheet(page) {
| |
| if (page.indexOf('http://') == -1 && page.indexOf('https://') == -1 && page.indexOf('file:///') == -1)
| |
| page = wgScript + '?action=raw&ctype=text/css&smaxage=0&title='
| |
| + encodeURIComponent(page.replace(/ /g,'_'))
| |
| return document.createStyleSheet ? document.createStyleSheet(page) : appendCSS('@import "' + page + '";')
| |
| }
| |
|
| |
| function appendCSS(text){
| |
| var s = document.createElement('style')
| |
| s.setAttribute('type', 'text/css')
| |
| if (s.styleSheet) s.styleSheet.cssText = text //IE
| |
| else s.appendChild(document.createTextNode(text))
| |
| document.getElementsByTagName('head')[0].appendChild(s)
| |
| return s
| |
| }
| |
|
| |
| if(document.URL.indexOf('rtl=1') != -1) importStylesheet('http://meta.wikimedia.org/w/index.php?title=MediaWiki:Gadget-rtl.css&action=raw&ctype=text/css');
| |
|
| |
| //import module
| |
| importedScripts = {}
| |
| function importScript(page, lang) {
| |
| page = '?title=' + encodeURIComponent(page.replace(' ','_'))
| |
| if (lang) page = 'http://' + lang + '.wikipedia.org/w/index.php' + page
| |
| else page = wgScript + page
| |
| if (importedScripts[page]) return
| |
| importedScripts[page] = true
| |
| var s = document.createElement('script')
| |
| s.type = 'text/javascript'
| |
| s.src = page + '&action=raw&ctype=text/javascript'
| |
| document.getElementsByTagName('head')[0].appendChild(s)
| |
| }
| |
|
| |
| // Fix links like User:Example@somewiki. Author: VasilievVV, with modifications by Kalan and attempted rewrite by Splarka
| |
| if(wgCanonicalSpecialPageName == 'Log' || wgCanonicalSpecialPageName == 'Recentchanges')
| |
| importScript('MediaWiki:Common.js/interlinker.js')
| |
|
| |
| if(wgCanonicalSpecialPageName == 'GlobalBlock' && window.wgUserGroups && wgUserGroups.join(' ').indexOf('steward') != -1)
| |
| addOnloadHook(function() {
| |
| document.getElementById('wpAnonOnly').checked = true;
| |
| addHandler(document.forms['uluser'],'submit',addblocktype);
| |
| });
| |
|
| |
| function addblocktype() { // DerHexer
| |
| if (document.getElementById('wpAnonOnly').checked == true) {
| |
| document.getElementById('mw-globalblocking-block-reason').getElementsByTagName('input')[0].value += ' (sb)';
| |
| } else {
| |
| document.getElementById('mw-globalblocking-block-reason').getElementsByTagName('input')[0].value += ' (hb)';
| |
| }
| |
| }
| |
|
| |
| // stolen from [[commons:MediaWiki:Common.js]] by [[commons:User:Remember the dot]] - thanks
| |
| // Import language-specific stylesheet, especially useful for languages like German that have (un)usual capitalization rules
| |
| //
| |
| importStylesheet("MediaWiki:" + skin + ".css/" + wgUserLanguage);
| |
|
| |
| /**
| |
| * Implements language selection for multilingual elements
| |
| *
| |
| * In certain environments, it's not feasible to neatly box away each
| |
| * different language into its own section of the site. By marking elements
| |
| * multilingual, you can emulate this behavior by only displaying the
| |
| * message in the user's language. This reduced the "Tower of Babel" effect.
| |
| *
| |
| * @author Edward Z. Yang (Ambush Commander)
| |
| * @version $Id: language_select.js 1358 2007-02-19 15:34:59Z Edward $
| |
| */
| |
|
| |
| /* Configuration: */
| |
|
| |
| // in your monobook.js, set ls_enable = false to stop the javascript
| |
| // maybe it should be cookie configurable. However, you can achieve
| |
| // something almost to this effect through cookie settings
| |
| var ls_enable = true;
| |
|
| |
| // the cookie name we use to stash the info.
| |
| // change this if you are porting it to another wiki!
| |
| var ls_cookie = 'metawiki_language_js';
| |
|
| |
| // link to the language select page
| |
| var ls_help_url = 'http://meta.wikimedia.org/wiki/Meta:Language_select';
| |
|
| |
| // strings that are part of the widgets
| |
| var ls_string_help = 'Language select:';
| |
| var ls_string_select = 'Select';
| |
| var ls_string_showall = 'Show all';
| |
|
| |
| // define some meta-variables
| |
| var ls__first = true; // the first iteration?
| |
|
| |
| // node compatability fix
| |
| if (!window.Node) {
| |
| var Node = {
| |
| ELEMENT_NODE : 1,
| |
| ATTRIBUTE_NODE: 2,
| |
| TEXT_NODE: 3,
| |
| COMMENT_NODE: 8,
| |
| DOCUMENT_NODE: 9,
| |
| DOCUMENT_FRAGMENT_NODE: 11
| |
| };
| |
| }
| |
|
| |
| // autodetects a browser language
| |
| function ls_getBrowserLanguage() {
| |
| var language;
| |
| // borrowed from Wikimedia's site error notice
| |
| // find the language
| |
| if (navigator.userLanguage) {
| |
| // use the user's preferred language (non-Gecko)
| |
| language = navigator.userLanguage;
| |
| } else if (navigator.appName == 'Netscape') {
| |
| // use the only language information available to Gecko
| |
| language = navigator.language;
| |
| } else {
| |
| // get the browser language information in non-Gecko browsers
| |
| // (IE, Opera, Konqueror)
| |
| language = navigator.browserLanguage;
| |
| }
| |
| return language;
| |
| }
| |
|
| |
| // grabs language from cookie
| |
| function ls_getCookieLanguage() {
| |
| var allcookies = document.cookie;
| |
| var marker = ls_cookie + '=';
| |
| var pos = allcookies.indexOf(marker);
| |
|
| |
| // cookie isn't set, so no behavior defined
| |
| if (pos === -1) return null;
| |
|
| |
| // cookie is set
| |
| var start = pos + marker.length;
| |
| var end = allcookies.indexOf(';', start);
| |
| if (end == -1) end = allcookies.length;
| |
|
| |
| var raw = allcookies.substring(start,end);
| |
| var value = unescape(raw);
| |
|
| |
| return value;
| |
| }
| |
|
| |
| // sets a new language to the cookie
| |
| function ls_setCookieLanguage(language) {
| |
| var today = new Date();
| |
| var expiry = new Date(today.getUTCFullYear() + 30, 1);
| |
| document.cookie = ls_cookie + '=' + escape(language) + '; expires=' + expiry.toGMTString();
| |
| }
| |
|
| |
| // deletes the cookie
| |
| function ls_deleteCookieLanguage(language) {
| |
| document.cookie = ls_cookie + '=; expires=Fri, 02-Jan-1970 00:00:00 GMT';
| |
| }
| |
|
| |
| // grabs the ISO 639 language code based
| |
| // on either the browser or a supplied cookie
| |
| // return of "mul" will display all available strings
| |
| function ls_getLanguage() {
| |
| var language = '';
| |
|
| |
| // Priority:
| |
| // 1. Cookie
| |
| // 2. wgUserLanguage global variable
| |
| // 3. Browser autodetection
| |
|
| |
| // grab according to cookie
| |
| language = ls_getCookieLanguage();
| |
|
| |
| // grab according to wgUserLanguage
| |
| if (!language && window.wgUserLanguage) {
| |
| language = wgUserLanguage;
| |
| }
| |
|
| |
| // grab according to browser if none defined
| |
| if (!language) {
| |
| language = ls_getBrowserLanguage();
| |
| }
| |
|
| |
| // inflexible: can't accept multiple languages
| |
|
| |
| // remove dialect/region code, leaving only the ISO 639 code
| |
| var length;
| |
| // possible bug: supposedly the language string could be en_US
| |
| // switch to regexps when we get the chance
| |
| if ((length = language.indexOf('-')) !== -1) {
| |
| language = language.substr(0, length);
| |
| }
| |
|
| |
| return language;
| |
| }
| |
|
| |
| // walks all child elements and finds all elements with multilingual in them
| |
| function ls_getAllMultilingualElements(n) {
| |
| var elements = new Array();
| |
| // possible bug if we have a classname that includes the word multilingual
| |
| // but it's unlikely
| |
| if (n.className && n.className.indexOf('multilingual') != -1) {
| |
| elements = elements.concat(n);
| |
| }
| |
| var children = n.childNodes;
| |
| for(var i=0; i < children.length; i++) {
| |
| if (children[i].nodeType !== Node.ELEMENT_NODE) continue;
| |
| elements = elements.concat(ls_getAllMultilingualElements(children[i]));
| |
| }
| |
| return elements;
| |
| }
| |
|
| |
| // walks a hash and hides all non-matching languages
| |
| function ls_hideAllExcept(lang_element_hash, language) {
| |
| for (var n in lang_element_hash) {
| |
| if (n == language) {
| |
| lang_element_hash[n].style.display = '';
| |
| } else {
| |
| lang_element_hash[n].style.display = 'none';
| |
| }
| |
| }
| |
| }
| |
|
| |
| // walks a hash and shows all languages
| |
| function ls_showAll(lang_element_hash) {
| |
| for (var n in lang_element_hash) {
| |
| if (lang_element_hash[n].style.display) {
| |
| lang_element_hash[n].style.display = '';
| |
| }
| |
| }
| |
| }
| |
|
| |
| // build widget for changing the language cookie
| |
| function ls_buildWidget(language) {
| |
|
| |
| // set up the floating form
| |
| var form = document.createElement('form');
| |
| form.className = 'lang_info';
| |
| form.onsubmit = function() {
| |
| if (this.elements[2].ls_mul_flag) {
| |
| this.elements[2].ls_mul_flag = false;
| |
| var language = 'mul';
| |
| var temporary = true;
| |
| } else {
| |
| ls_setCookieLanguage(this.elements[0].value);
| |
| var language = this.elements[0].value;
| |
| var temporary = false;
| |
| }
| |
| ls_applyLanguageSelect(language, temporary);
| |
|
| |
| return false; // don't perform action
| |
| };
| |
| form.appendSpace = function() {
| |
| this.appendChild(document.createTextNode(' '));
| |
| };
| |
|
| |
| // link to language select description page
| |
| var link = document.createElement('a');
| |
| link.href = ls_help_url;
| |
| link.className = 'ls_link';
| |
| link.appendChild(document.createTextNode(ls_string_help));
| |
| form.appendChild(link);
| |
|
| |
| form.appendSpace();
| |
|
| |
| // input box for the language
| |
| var input = document.createElement('input');
| |
| input.setAttribute('type', 'text');
| |
| input.setAttribute('size', '2');
| |
| // input.setAttribute('maxlength', '7');
| |
| input.onclick = function() { this.select(); };
| |
| input.className = 'ls_input';
| |
| input.value = language;
| |
| form.appendChild(input);
| |
|
| |
| form.appendSpace();
| |
|
| |
| // save button
| |
| var submit = document.createElement('input');
| |
| submit.setAttribute('type', 'submit');
| |
| submit.value = ls_string_select;
| |
| submit.className = 'ls_select';
| |
| form.appendChild(submit);
| |
|
| |
| form.appendSpace();
| |
|
| |
| // show all button
| |
| // equivalent to setting input box to "mul" and pressing save
| |
| var showall = document.createElement('input');
| |
| showall.setAttribute('type', 'submit');
| |
| showall.value = ls_string_showall;
| |
| showall.onclick = function() {
| |
| this.ls_mul_flag = true;
| |
| };
| |
| form.appendChild(showall);
| |
|
| |
| return form;
| |
|
| |
| }
| |
|
| |
| // main body of the function
| |
| function ls_applyLanguageSelect(language, temporary) {
| |
|
| |
| // possible site for cookie checking to disable language select
| |
| if (!ls_enable) return;
| |
|
| |
| // if language is blank, delete the cookie and then recalculate
| |
| if (!language) {
| |
| ls_deleteCookieLanguage();
| |
| language = ls_getLanguage();
| |
| }
| |
|
| |
| // grab the body element (only one)
| |
| var body = document.getElementsByTagName('body')[0];
| |
|
| |
| // grab an array of multilingual elements
| |
| var mls = ls_getAllMultilingualElements(body);
| |
|
| |
| // this will get overwritten many times, temporary variable
| |
| var form, language_element_hash;
| |
|
| |
| // iterate through all those elements
| |
| for (var i = 0; i < mls.length; i++) {
| |
| var ml = mls[i]; // the current multilingual container
| |
| var ml_c = ml.childNodes; // children of the container
| |
|
| |
| // if it's the first iteration...
| |
| if (ls__first) {
| |
| form = ls_buildWidget(language);
| |
| ml.appendChild(form, ml_c[0]);
| |
| } else {
| |
| // update widget
| |
| form = ml_c[ml_c.length - 1]; // form is last element
| |
| if (!temporary) {
| |
| form.elements[0].value = language;
| |
| form.elements[0].removeAttribute('disabled');
| |
| form.elements[2].removeAttribute('disabled');
| |
| } else {
| |
| form.elements[0].setAttribute('disabled', 'disabled');
| |
| form.elements[2].setAttribute('disabled', 'disabled');
| |
| }
| |
| }
| |
|
| |
| form.elements[0].style.background="#FFF";
| |
|
| |
| // tells us whether or not to blindly perform the keep
| |
| var message_exists = false;
| |
|
| |
| // iterate through all languages and set up a hash
| |
| // with references to each of the language nodes
| |
| lang_element_hash = new Object();
| |
| for (var j = 0; j < ml_c.length; j++) {
| |
| var n = ml_c[j];
| |
| if (n.nodeType != Node.ELEMENT_NODE) continue; // skip non-elements
| |
| if (!n.lang) continue; // skip non-language specific elements
| |
| if (n.lang.indexOf(language) === 0) {
| |
| // it turns out our language is here
| |
| message_exists = true;
| |
| }
| |
| lang_element_hash[n.lang] = n;
| |
| }
| |
|
| |
| // if a preferred language was kept, do quickest processing
| |
| if (message_exists) {
| |
| ls_hideAllExcept(lang_element_hash, language);
| |
| continue;
| |
| }
| |
|
| |
| // otherwise, nothing happened, this means that it wasn't found
| |
|
| |
| // if it's not the first time, repaint all of them
| |
| if (!ls__first) {
| |
| ls_showAll(lang_element_hash);
| |
| }
| |
|
| |
| if (language != 'mul') {
| |
| form.elements[0].style.background="#FCC";
| |
| }
| |
|
| |
| }
| |
|
| |
| // we've already processed once
| |
| ls__first = false;
| |
|
| |
| }
| |
|
| |
| function ls_applyDefaultLanguageSelect() {
| |
| ls_applyLanguageSelect(ls_getLanguage(), false);
| |
| }
| |
|
| |
| // register as onload function (there must be a better way)
| |
| if (window.addEventListener) {
| |
| window.addEventListener("load", ls_applyDefaultLanguageSelect, false);
| |
| } else if (window.attachEvent) {
| |
| window.attachEvent("onload", ls_applyDefaultLanguageSelect);
| |
| }
| |