function doSyntaxCheck() { var filter = document.getElementById(wgFilterBoxName).value; injectSpinner( document.getElementById( 'mw-abusefilter-syntaxcheck' ), 'abusefilter-syntaxcheck' ); document.getElementById( 'mw-abusefilter-syntaxcheck' ).disabled = true; sajax_do_call( 'AbuseFilter::ajaxCheckSyntax', [filter], processSyntaxResult ); } function processSyntaxResult( request ) { var response = request.responseText; removeSpinner( 'abusefilter-syntaxcheck' ); document.getElementById( 'mw-abusefilter-syntaxcheck' ).disabled = false; var el = document.getElementById( 'mw-abusefilter-syntaxresult' ); el.style.display = 'block'; if (response.match( /OK/ )) { // Successful changeText( el, wgAbuseFilterMessages['abusefilter-edit-syntaxok'] ); el.syntaxOk = true; el.className = 'mw-abusefilter-syntaxresult-ok'; } else { var errorData = eval(response.substr(4)); var msg = wgAbuseFilterMessages['abusefilter-edit-syntaxerr']; msg = msg.replace( '$1', errorData[0] ); changeText( el, msg ); el.syntaxOk = false; el.className = 'mw-abusefilter-syntaxresult-error'; var position = errorData[1]; var textArea = document.getElementById( wgFilterBoxName ); textArea.focus(); if (document.selection) { var sel = document.selection.createRange(); sel.moveStart( 'character', -textArea.value.length ); sel.moveStart( 'character', position ); sel.select(); } else if (textArea.selectionStart && textArea.selectionEnd) { textArea.selectionStart = position; textArea.selectionEnd = position; } } } function addText() { if (document.getElementById('wpFilterBuilder').selectedIndex == 0) { return; } insertAtCursor(document.getElementById(wgFilterBoxName), document.getElementById('wpFilterBuilder').value + " "); document.getElementById('wpFilterBuilder').selectedIndex = 0; } function fetchFilter() { var filter = document.getElementById( 'mw-abusefilter-load-filter' ).value; sajax_do_call( 'AbuseFilter::ajaxGetFilter', [filter], function(request) { var filter = request.responseText; document.getElementById( wgFilterBoxName ).value = filter; } ); } //From http://clipmarks.com/clipmark/CEFC94CB-94D6-4495-A7AA-791B7355E284/ function insertAtCursor(myField, myValue) { //IE support if (document.selection) { myField.focus(); sel = document.selection.createRange(); sel.text = myValue; } //MOZILLA/NETSCAPE support else if (myField.selectionStart || myField.selectionStart == '0') { var startPos = myField.selectionStart; var endPos = myField.selectionEnd; myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length); } else { myField.value += myValue; } } function setupActions() { var checkboxen = getElementsByClassName( document, 'input', 'mw-abusefilter-action-checkbox' ); for( var i=0; i