// Usage
//
// Email Validation: <input type="submit" onClick="return checkmail(this.form.myemail)"  value="Submit" />
// Disable Multiple Submit:  <form method="POST" onSubmit="submitonce(this)">
//
// Enter Key goes to next field: Add this to the input field -- onkeypress="return handleEnter(this, event);"
// NOTE -- Do not add the javascript to textareas, as it will override the default behavior of next line inside the textarea
//
//

var ns6=document.getElementById&&!document.all

function restrictinput(maxlength,e,placeholder){
	if (window.event&&event.srcElement.value.length>=maxlength)
		return false
	else if (e.target&&e.target==eval(placeholder)&&e.target.value.length>=maxlength){
	var pressedkey=/[a-zA-Z0-9\.\,\/]/ //detect alphanumeric keys
	if (pressedkey.test(String.fromCharCode(e.which)))
		e.stopPropagation()
	}
}

function countlimit(maxlength,e,placeholder){
	var theform=eval(placeholder)
	var lengthleft=maxlength-theform.value.length
	var placeholderobj=document.all? document.all[placeholder] : document.getElementById(placeholder)
	if (window.event||e.target&&e.target==eval(placeholder)){
		if (lengthleft<0)
			theform.value=theform.value.substring(0,maxlength)
		placeholderobj.innerHTML=lengthleft
	}
}


function displaylimit(thename, theid, thelimit){
	var theform=theid!=""? document.getElementById(theid) : thename
	var limit_text='<b><span id="'+theform.toString()+'">'+thelimit+'</span></b> characters remaining on your input limit'
	if (document.all||ns6)
		document.write(limit_text)
	if (document.all){
		eval(theform).onkeypress=function(){ return restrictinput(thelimit,event,theform)}
		eval(theform).onkeyup=function(){ countlimit(thelimit,event,theform)}
	} else if (ns6){
		document.body.addEventListener('keypress', function(event) { restrictinput(thelimit,event,theform) }, true); 
		document.body.addEventListener('keyup', function(event) { countlimit(thelimit,event,theform) }, true); 
	}
}

function handleEnter (field, event) {
	var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
	if (keyCode == 13) {
		var i;
		for (i = 0; i < field.form.elements.length; i++)
			if (field == field.form.elements[i])
				break;
		i = (i + 1) % field.form.elements.length;
		field.form.elements[i].focus();
		return false;
	} 
	else
	return true;
}      

/*function submitonce(theform){
	//if IE 4+ or NS 6+
	if (document.all||document.getElementById){
		//screen thru every element in the form, and hunt down "submit" and "reset"
		for (i=0;i<theform.length;i++){
			var tempobj=theform.elements[i]
			if(tempobj.type.toLowerCase()=="submit"||tempobj.type.toLowerCase()=="reset")
				//disable em
				tempobj.disabled=true
		}
	}
	var t=1;
}
*/

function testImageExtension(fieldname) {
	var error="";
	if (document.getElementById(fieldname))  {
		if(!/(\.png|\.gif|\.jpg|\.jpeg)$/i.test(document.getElementById(fieldname).value)) {
			error="Invalid image type";
		}
	}
	return error;
}

function checkfile(fieldname) {
	if (document.getElementById(fieldname))  {
		var filetypetest=( testImageExtension(fieldname));
		if (filetypetest!="") {
			alert (filetypetest);
		}
	}
}

var emailfilter=/^\w+[\+\.\w-]*@([\w-]+\.)*\w+[\w-]*\.([a-z]{2,4}|\d+)$/i

function formtest(form) {
	if (self.checkForm)
		test=checkForm(form);
	else 
		test=true
	return test;
}

function checkEmail(string, desc) {
	var error="";
	var emailtest=emailfilter.test(string);
	if (emailtest==false) {
		error = "You must enter a valid "+desc+".\n";
	}
	return error;
}

function confirmEmail(form, confirmfield, desc) {
	var error="";
	
	var field=confirmfield.replace(/confirm/, '');
	
//	if (form.field.value != form.confirmfield.value) {
 	if ( document.getElementById(field).value != document.getElementById(confirmfield).value) {
		error = "Email addresses do not match.\n";
	}
	return error;
}

function checkString(string, desc) {
	var error = "";
	if (string.length == 0) {
		error = "You must enter the "+desc+".\n"
	}
	return error;
}

function checkReal(numreal, desc) {
	var error = "";
	if (numreal != parseFloat(numreal)) {
		error = "You must enter a number (such as 25.43) for the "+desc+".\n"
	}
	return error;
}

