summaryrefslogtreecommitdiffstats
path: root/skins/common/prefs.js
diff options
context:
space:
mode:
Diffstat (limited to 'skins/common/prefs.js')
-rw-r--r--skins/common/prefs.js217
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 );