var val_rules=new Object();
var val_functions=new Object();

val_functions['is checked']=function(form,item_obj)
{
	return form[item_obj['name']].checked;
}

val_functions['minimum length']=function(form,item_obj)
{
	arguments[2]=new String(form[item_obj['name']].value);
	if(arguments[2].length<item_obj.value)
	{
		return false;
	}
	return true;
}

val_functions['valid email']=function(form,item_obj)
{
	arguments[2]=new String(form[item_obj['name']].value);
	
	return /^[a-zA-Z0-9\w\.-]*@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/.test(arguments[2]);
}

val_functions['maximum length']=function(form,item_obj)
{
	arguments[2]=new String(form[item_obj['name']].value);
	if(arguments[2].length>item_obj.value)
	{
		return false;
	}
	return true;
}

val_functions['equal_to']=function(form,item_obj)
{
	arguments[2]='';
	arguments[3]='';
	arguments[2]=new String(form[item_obj['name']].value)+'';
	arguments[3]=new String(form[item_obj['min']].value)+'';
	return (arguments[2]==arguments[3]);
	
}

val_functions['length range']=function(form,item_obj)
{
	arguments[2]=new String(form[item_obj['name']].value);
	if(arguments[2].length<item_obj.min)
	{
		return false;
	}
	if(arguments[2].length>item_obj.max)
	{
		return false;
	}
	return true;
}

val_functions['list not equal to']=function(form,item_obj)
{	
	arguments[2]=form[item_obj['name']].options[form[item_obj['name']].selectedIndex].value;
	if(arguments[2]==item_obj['value'])
	{
		return false;
	}
	return true;
}


val_functions['valid date']=function(form,item_obj)
{	
	return true;
}

function validate_form()
{
	//alert('starting validation');
	form=document.forms[arguments[0]];
	//alert(form);
	items=val_rules[arguments[0]];
	has_errors=false;
	error_string='The following errors have occurred:\n__________________________\n\n';
	error_items=new Object();
	for(var a=0;a<items.length;a++)
	{
		if(!val_functions[items[a]['type']](form,items[a]))
		{
			has_errors=true;
			error_string+=items[a]['msg']+'\n';
		}
	}
	if(has_errors)
	{
		error_string+='__________________________\n\nPlease correct these errors and try again.';
		alert(error_string);
		return false;
	}
	return true;
}

String.prototype.trim = function() {
	a = this.replace(/^\s+/, '');
	return a.replace(/\s+$/, '');
}


function doCaptcha()
{
	if(new String(arguments[0].sender_message.value).trim() == ''){
		alert('Please enter a message.');
		return false;
	}
	num1= Math.floor( Math.random() * 10);
	num2= Math.floor( Math.random() * 10);
	if(handlePrompt(num1,num2,'')){
		arguments[0].whostheman.value='mike is!';
	}
}

function handlePrompt(num1,num2,extraMessage){
	userVal = prompt(extraMessage+'what is '+num1+' + '+num2+'?')
	if(userVal == (num1+ num2)){
		return true;
	}
	else{
		return handlePrompt(num1,num2,'Incorrect, Please try again.\n');
	}	
}

