diff options
Diffstat (limited to 'skins/common/prefs.js')
-rw-r--r-- | skins/common/prefs.js | 217 |
1 files changed, 0 insertions, 217 deletions
diff --git a/skins/common/prefs.js b/skins/common/prefs.js deleted file mode 100644 index ca55632..0000000 --- a/skins/common/prefs.js +++ /dev/null @@ -1,217 +0,0 @@ -// generate toc from prefs form, fold sections -// XXX: needs testing on IE/Mac and safari -// more comments to follow -function tabbedprefs() { - var prefform = document.getElementById( 'preferences' ); - if ( !prefform || !document.createElement ) { - return; - } - if ( prefform.nodeName.toLowerCase() == 'a' ) { - return; // Occasional IE problem - } - prefform.className = prefform.className + 'jsprefs'; - var sections = []; - var children = prefform.childNodes; - var seci = 0; - for ( var i = 0; i < children.length; i++ ) { - if ( children[i].nodeName.toLowerCase() == 'fieldset' ) { - children[i].id = 'prefsection-' + seci; - children[i].className = 'prefsection'; - if ( is_opera ) { - children[i].className = 'prefsection operaprefsection'; - } - var legends = children[i].getElementsByTagName('legend'); - sections[seci] = {}; - if ( legends[0] ) { - legends[0].className = 'mainLegend'; - } - if ( legends[0] && legends[0].firstChild.nodeValue ) { - sections[seci].text = legends[0].firstChild.nodeValue; - } else { - sections[seci].text = '# ' + seci; - } - sections[seci].secid = children[i].id; - seci++; - if ( sections.length != 1 ) { - children[i].style.display = 'none'; - } else { - var selectedid = children[i].id; - } - } - } - var toc = document.createElement( 'ul' ); - toc.id = 'preftoc'; - toc.selectedid = selectedid; - for ( i = 0; i < sections.length; i++ ) { - var li = document.createElement( 'li' ); - if ( i === 0 ) { - li.className = 'selected'; - } - var a = document.createElement( 'a' ); - a.href = '#' + sections[i].secid; - a.onmousedown = a.onclick = uncoversection; - a.appendChild( document.createTextNode( sections[i].text ) ); - a.secid = sections[i].secid; - li.appendChild( a ); - toc.appendChild( li ); - } - prefform.parentNode.insertBefore( toc, prefform.parentNode.childNodes[0] ); - document.getElementById( 'prefsubmit' ).id = 'prefcontrol'; -} - -function uncoversection() { - var oldsecid = this.parentNode.parentNode.selectedid; - var newsec = document.getElementById( this.secid ); - if ( oldsecid != this.secid ) { - var ul = document.getElementById( 'preftoc' ); - document.getElementById( oldsecid ).style.display = 'none'; - newsec.style.display = 'block'; - ul.selectedid = this.secid; - var lis = ul.getElementsByTagName( 'li' ); - for ( var i = 0; i< lis.length; i++ ) { - lis[i].className = ''; - } - this.parentNode.className = 'selected'; - } - return false; -} - -// Timezone stuff -// tz in format [+-]HHMM -function checkTimezone( tz, msg ) { - var localclock = new Date(); - // returns negative offset from GMT in minutes - var tzRaw = localclock.getTimezoneOffset(); - var tzHour = Math.floor( Math.abs( tzRaw ) / 60 ); - var tzMin = Math.abs( tzRaw ) % 60; - var tzString = ( ( tzRaw >= 0 ) ? '-' : '+' ) + ( ( tzHour < 10 ) ? '0' : '' ) + tzHour + ( ( tzMin < 10 ) ? '0' : '' ) + tzMin; - if ( tz != tzString ) { - var junk = msg.split('$1'); - document.write( junk[0] + 'UTC' + tzString + junk[1] ); - } -} - -function timezoneSetup() { - var tzSelect = document.getElementById( 'mw-input-timecorrection' ); - var tzTextbox = document.getElementById( 'mw-input-timecorrection-other' ); - - if ( tzSelect && tzTextbox ) { - addHandler( tzSelect, 'change', function( e ) { updateTimezoneSelection( false ); } ); - addHandler( tzTextbox, 'blur', function( e ) { updateTimezoneSelection( true ); } ); - } - - updateTimezoneSelection( false ); -} - -// in [-]HH:MM format... -// won't yet work with non-even tzs -function fetchTimezone() { - // FIXME: work around Safari bug - var localclock = new Date(); - // returns negative offset from GMT in minutes - var tzRaw = localclock.getTimezoneOffset(); - var tzHour = Math.floor( Math.abs( tzRaw ) / 60 ); - var tzMin = Math.abs( tzRaw ) % 60; - var tzString = ( ( tzRaw >= 0 ) ? '-' : '' ) + ( ( tzHour < 10 ) ? '0' : '' ) + tzHour + - ':' + ( ( tzMin < 10 ) ? '0' : '' ) + tzMin; - return tzString; -} - -function guessTimezone() { - var textbox = document.getElementById( 'mw-input-timecorrection-other' ); - var selector = document.getElementById( 'mw-input-timecorrection' ); - - selector.value = 'other'; - textbox.value = fetchTimezone(); - textbox.disabled = false; // The changed handler doesn't trip, obviously. - updateTimezoneSelection( true ); -} - -function updateTimezoneSelection( force_offset ) { - var selector = document.getElementById( 'mw-input-timecorrection' ); - - if ( selector.value == 'guess' ) { - return guessTimezone(); - } - - var textbox = document.getElementById( 'mw-input-timecorrection-other' ); - var localtimeHolder = document.getElementById( 'wpLocalTime' ); - var servertime = document.getElementsByName( 'wpServerTime' )[0].value; - var minDiff = 0; - - // Compatibility code. - if ( !selector.value ) { - selector.value = selector.options[selector.selectedIndex].value; - } - - // Handle force_offset - if ( force_offset ) { - selector.value = 'other'; - } - - // Get min_diff - if ( selector.value == 'other' ) { - // Grab data from the textbox, parse it. - var diffArr = textbox.value.split(':'); - if ( diffArr.length == 1 ) { - // Specification is of the form [-]XX - minDiff = parseInt( diffArr[0], 10 ) * 60; - } else { - // Specification is of the form [-]XX:XX - minDiff = Math.abs( parseInt( diffArr[0], 10 ) ) * 60 + parseInt( diffArr[1], 10 ); - if ( parseInt( diffArr[0], 10 ) < 0 ) { - minDiff = -minDiff; - } - } - } else { - // Grab data from the selector value - var diffArr = selector.value.split('|'); - minDiff = parseInt( diffArr[1], 10 ); - } - - // Gracefully handle non-numbers. - if ( isNaN( minDiff ) ) { - minDiff = 0; - } - - // Determine local time from server time and minutes difference, for display. - var localTime = parseInt( servertime, 10 ) + minDiff; - - // Bring time within the [0,1440) range. - while ( localTime < 0 ) { - localTime += 1440; - } - while ( localTime >= 1440 ) { - localTime -= 1440; - } - - // Split to hour and minute - var hour = String( Math.floor( localTime / 60 ) ); - if ( hour.length < 2 ) { - hour = '0' + hour; - } - var min = String(localTime%60); - if ( min.length < 2 ) { - min = '0' + min; - } - changeText( localtimeHolder, hour + ':' + min ); - - // If the user selected from the drop-down, fill the offset field. - if ( selector.value != 'other' ) { - hour = String( Math.abs( Math.floor( minDiff / 60 ) ) ); - if ( hour.length < 2 ) { - hour = '0' + hour; - } - if ( minDiff < 0 ) { - hour = '-' + hour; - } - min = String(minDiff%60); - if ( min.length < 2 ) { - min = '0' + min; - } - textbox.value = hour + ':' + min; - } -} - -addOnloadHook( timezoneSetup ); -addOnloadHook( tabbedprefs ); |