User:Func/wpfunc/searchhelp.js

//	Currently, restructures the checkboxes in a table, //	adding multiple-select checkboxes: //	//		√ all       √ all      √ everything //		√ (Main)    √ ...talk  √ both //		√ User      √ ...talk  √ both //		√ Wikipedia √ ...talk  √ both //		√ Image     √ ...talk  √ both //		√ MediaWiki √ ...talk  √ both //		√ Template  √ ...talk  √ both //		√ Help      √ ...talk  √ both //		√ Category  √ ...talk  √ both //		√ Portal    √ ...talk  √ both //	//	More stuff to add in the future.... // function SearchHelp {	var form = document.getElementById( 'powersearch' ); if ( ! form ) return;

//	Stupid ECMA.... //		//	Eh, good place to do something else here anyway. //	var labels = [], temp = form.getElementsByTagName( 'label' ); for ( var x = 0; x < temp.length; x++ ) {		labels[ x ] = temp[ x ]; labels[ x ].onclick = function {	this.checked = ! this.checked; SearchHelpUpdate; return true; }	}

form.labels = labels; // allow event handlers to access, numerically

var i, text, input, label, td, tr, table;

for ( i = 1; i < labels.length; i += 2 ) labels[ i ].lastChild.nodeValue = '...talk';

table = document.createElement( 'table' );

//	can't see what's going on.... // form.insertBefore( table, form.firstChild.nextSibling );

tr = document.createElement( 'tr' );

td = document.createElement( 'td' );

label = document.createElement( 'label' );

input = document.createElement( 'input' ); input.type = 'checkbox'; form.col1 = input; input.onclick = function {	var checked = ! this.checked; for ( var i = 0; i < this.form.labels.length; i += 2 ) this.form.labels[ i ].firstChild.checked = checked; this.checked = checked; SearchHelpUpdate( this.form ); return true; }

label.appendChild( input ); label.appendChild( document.createTextNode( 'all' ) ); label.style.fontStyle = 'italic';

td.appendChild( label );

tr.appendChild( td );

td = document.createElement( 'td' );

label = document.createElement( 'label' );

input = document.createElement( 'input' ); input.type = 'checkbox'; form.col2 = input; input.onclick = function {	var checked = ! this.checked; for ( var i = 1; i < this.form.labels.length; i += 2 ) this.form.labels[ i ].firstChild.checked = checked; this.checked = checked; SearchHelpUpdate( this.form ); return true; }

label.appendChild( input ); label.appendChild( document.createTextNode( 'all' ) ); label.style.fontStyle = 'italic';

td.appendChild( label );

tr.appendChild( td );

td = document.createElement( 'td' );

label = document.createElement( 'label' );

input = document.createElement( 'input' ); input.type = 'checkbox'; form.allVals = input; input.onclick = function {	for ( var i = 0; i < this.form.labels.length; i += 2 ) {	this.form.labels[ i    ].firstChild.checked = this.checked; this.form.labels[ i + 1 ].firstChild.checked = this.checked; //this.form[ 'both' + i ] .firstChild.checked = checked; }						this.form.col1.checked = this.checked; this.form.col2.checked = this.checked; return true; }

label.appendChild( input ); label.appendChild( document.createTextNode( 'everything' ) ); label.style.fontStyle = 'italic';

td.appendChild( label );

tr.appendChild( td );

table.appendChild( tr );

for ( i = 0; i < labels.length; i += 2 ) {			tr = document.createElement( 'tr' );

td = document.createElement( 'td' ); td.appendChild( labels[ i ] );

tr.appendChild( td );

td = document.createElement( 'td' ); td.appendChild( labels[ i + 1 ] );

tr.appendChild( td );

td = document.createElement( 'td' );

label = document.createElement( 'label' );

input = document.createElement( 'input' ); input.type = 'checkbox'; form[ 'both' + i ] = input; input.box1 = labels[ i    ].firstChild; input.box2 = labels[ i + 1 ].firstChild; input.onclick = function {	this.box1.checked = this.box2.checked = ! this.checked; this.checked = ! this.checked; SearchHelpUpdate( this.form ); return true; }

label.appendChild( input ); label.appendChild( document.createTextNode( 'both' ) ); label.style.fontStyle = 'italic'; td.appendChild( label );

tr.appendChild( td );

table.appendChild( tr );

}	SearchHelpUpdate( form ); }

function SearchHelpUpdate( form ) {	var val1, val2, col1 = true, col2 = true;

var labels = form.labels;

for ( var i = 0; i < form.labels.length; i += 2 ) {		val1 = labels[ i    ].firstChild.checked; val2 = labels[ i + 1 ].firstChild.checked;

form[ 'both' + i ].checked = ( val1 && val2 );

if ( ! val1 ) col1 = false; if ( ! val2 ) col2 = false; }

form.col1.checked = col1; form.col2.checked = col2;

form.allVals.checked = col1 && col2; }

if ( window.addEventListener ) window.addEventListener( 'load', SearchHelp, false ); else if ( window.attachEvent ) window.attachEvent(   'onload', SearchHelp );