// ==UserScript==
// @name          Greasemonkey Evaluator
// @namespace     tag:domnit.org,2008-12:gmeval
// @description   Helper for domnit.org/gmeval/
// @include       http://domnit.org/gmeval/
// ==/UserScript==


var version = document.getElementById('version'),
    runButton = document.getElementById('run-button'),
    scriptText = document.getElementById('script-text');

if(version.innerHTML != '1') {
  version.style.color = 'red';
  version.style.textDecoration = 'blink';
}

runButton.disabled = false;
scriptText.disabled = false;


function doit() {
  eval(scriptText.value);
}


function numLines(text) {
  var n = text.length - text.replace(/\r?\n|\r/g, '').length;
  if(text[text.length-1] != '\n')
    n++;
  return n;
}

var minRows = scriptText.rows;

scriptText.addEventListener('keypress', function() {
  scriptText.rows = Math.max(minRows, 1 + numLines(scriptText.value));
}, false);


var securityMessage = 'Are you sure you want to run the script?\n\n' +
                      'Choose Cancel to inspect the HTML source before running ' +
                      'a script in the priveleged Greasemonkey environment ' +
                      '(recommended).';

runButton.addEventListener('click', function click() {
  if(confirm(securityMessage)) {
    runButton.removeEventListener('click', click, false);
    runButton.addEventListener('click', doit, false);
    doit();
  }
}, false);

