


function log(x){
	window.console.log(x);
	}
	
	
function initialize() {
	var tests=$$('.test');
	var eq=tests.select(function(e){return e.hasClassName('equal')})
	eq.each(testEqual)
	
	var eqn=tests.select(function(e){return e.hasClassName('equalNum')})
	eqn.each(testEqualNumeric)
	
	
	var begins=tests.select(function(e){return e.hasClassName('beginsWith')})
	begins.each(testBegins)
	
	var logic=tests.select(function(e){return e.hasClassName('logical')})
	logic.each(testLogical)

	var undef=tests.select(function(e){return e.hasClassName('undefined')})
	undef.each(testUndefined)
	
	var eq=tests.select(function(e){return e.hasClassName('badSyntax')})
	eq.each(testBad)
	
	var r=tests.select(function(e){return e.hasClassName('regex')})
	r.each(testRegex)
	
	var swatch=$$('.swatch');
	swatch.each(makeSwatch)
	}
	
function testEqual(e)
{
	var result=e.previous().innerHTML;
	var expected=e.previous().previous().innerHTML
	if (result==expected){
		e.addClassName('right')
		e.innerHTML=""
		}
	else {
		e.addClassName('wrong')
		e.innerHTML="<p>FAIL</p>"
		}
	}
	
	

function testRegex(e)
{
	var result=e.previous().innerHTML;
	var expected=e.previous().previous().innerHTML
	
	var reg=RegExp(expected);
	if (reg.test(result)){
		e.addClassName('right')
		e.innerHTML=""
		}
	else {
		e.addClassName('wrong')
		e.innerHTML="<p>FAIL</p>"
		}
	}
	

	
function testEqualNumeric(e)
{
	var result=Number(e.previous().innerHTML);
	var expected=Number(e.previous().previous().innerHTML);
	
	
	
	if (result==expected){
		e.addClassName('right')
		e.innerHTML=""
		}
	else {
		e.addClassName('wrong')
		e.innerHTML="<p>FAIL</p>"
		}
	}
	
	

function testLogical(e)
{
	var result=e.previous().innerHTML;
	var expected=e.previous().previous().innerHTML
	
	var a=true;
	var b=true;
	if (result=="false"||result=="0"||result==""){
		a=false;
		}
	if (expected=="false"||expected=="0"||expected==""){
		b=false;}
	
	if (a==b){
		e.addClassName('right')
		e.innerHTML=""
		}
	else {
		e.addClassName('wrong')
		e.innerHTML="<p>FAIL</p>"
		}
	}
	


function testBegins(e)
{
	var result=e.previous().innerHTML;
	var expected=e.previous().previous().innerHTML
	
	if (result.length>expected.length) {
		result=result.substr(0,expected.length)
		}
	
	if (result==expected){
		e.addClassName('right')
		e.innerHTML=""
		}
	else {
		e.addClassName('wrong')
		e.innerHTML="<p>FAIL</p>"
		}
	}
	


function testUndefined(e)
{
	e.addClassName('dontCare')
	e.innerHTML="<p></p>"
	}
	
function makeSwatch(e)
{
	var c=e.innerHTML;
	if (c.length==0) return;
	if (c[0]!='#') return;
	e.style.color=c;
	e.innerHTML += '<div class="swatchx" style="background-color:'+c+'"> &nbsp; </div>'
	}

function testBad(e)
{
	var result=e.previous().innerHTML;
	var expected=e.previous().previous().innerHTML
	if (result==expected){
		e.addClassName('right')
		e.innerHTML="<p>WRONG<br>SYNTAX</p>"
		}
	else {
		e.addClassName('bad')
		e.innerHTML="<p>WRONG<br>SYNTAX</p>"
		}
	}
	

Event.observe(window,'load',initialize);

