/*
Alledgedly useable Javascript was coerced to do something cool.
Do not touch - JavaScript blows.
*/

lng=1;

function checkNumber(theValue,isDec){

			if (isDec==1){
				theValue=theValue.replace(".","");
				if (theValue==""){return false;}
				lc="1234567890";
			}else{
				lc="1234567890";
			}
			var tonum=1;  
			for (var k=0; k < theValue.length; k++){
				var subs=theValue.substring(k, tonum);
				if (lc.indexOf(subs)==-1){
					return false;
					break;
				}else{
					tonum+=1;
				}
			}
			return true;

}

function checkAlpha(theValue,ext){

			lc="1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + ext;

			var tonum=1;  
			for (var k=0; k < theValue.length; k++){
				var subs=theValue.substring(k, tonum);
				if (lc.indexOf(subs)==-1){
					return false;
					break;
				}else{
					tonum+=1;
				}
			}
			return true;

}

var erridx=0;
var herridx=0;
function prepareForm(){
	if (erridx>herridx){
		  for (z=herridx;z<=erridx;z++){
			if (z>0){
			document.getElementById('err' + z).style.display='none';
			herridx=z;}
		  }

	}

}
function validateFormCore(f){
	prepareForm();
	var errs='';
	var reseterrorvalue=0;
	var hasgotanerror=1; 
	var hasgotanerrortt=0;
	var cnterrs=0;

	hasgotanerror=reseterrorvalue;
	firstbustedelement=null;
	for (x=0;x<f.elements.length;x++){

		var ffeed = f.elements[x].getAttribute('validation');
		var fname = f.elements[x].getAttribute('valname');
		var fldname = f.elements[x].getAttribute('name');
		var homicidalcrap=null;
		hasgotanerrortt=0;


		if (ffeed!=null){

			var fixcell = f.elements[x].parentNode;
			fixcell.setAttribute("id","c" + fldname);


			var farr = ffeed.split(",");
		
			if ((farr[0]=="required")||(farr[0]=="optional")){
				switch (farr[1]){
					case "number":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){

								
								erridx++;
								var appendToCell = document.getElementById('c' + f.elements[x].name);
								var carryvalue = f.elements[x].value;
								appendToCell.innerHTML = appendToCell.innerHTML + '<span class=\'ferror\' id=err' + erridx + '><br>cannot be empty!</span>';
								f.elements[x].value=carryvalue;hasgotanerror=1;hasgotanerrortt=1;cnterrs++;

              						}
						}else{
							if (!checkNumber(f.elements[x].value,0)){
								
								erridx++;
								var appendToCell = document.getElementById('c' + f.elements[x].name);
								var carryvalue = f.elements[x].value;
								appendToCell.innerHTML = appendToCell.innerHTML + '<span class=\'ferror\' id=err' + erridx + '><br>must be a number!</span>';
								f.elements[x].value=carryvalue;hasgotanerror=1;hasgotanerrortt=1;cnterrs++;

							}
						}
					break;
					case "decimal":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){
								
								erridx++;
								var appendToCell = document.getElementById('c' + f.elements[x].name);
								appendToCell.innerHTML = appendToCell.innerHTML + '<span class=\'ferror\' id=err' + erridx + '><br>cannot be empty!</span>';hasgotanerror=1;hasgotanerrortt=1;cnterrs++;

				              }
						}else{
							if (!checkNumber(f.elements[x].value,1)){
								
								erridx++;
								var appendToCell = document.getElementById('c' + f.elements[x].name);
								var carryvalue = f.elements[x].value;
								appendToCell.innerHTML = appendToCell.innerHTML + '<span class=\'ferror\' id=err' + erridx + '><br>must be a number, with one period for decimals.</span>';
								f.elements[x].value=carryvalue;hasgotanerror=1;hasgotanerrortt=1;cnterrs++;

							}
						}
					break;
					case "ndecimal":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){
								
								erridx++;
								var appendToCell = document.getElementById('c' + f.elements[x].name);
								appendToCell.innerHTML = appendToCell.innerHTML + '<span class=\'ferror\' id=err' + erridx + '><br>cannot be empty!</span>';hasgotanerror=1;hasgotanerrortt=1;cnterrs++;

				              }
						}else{
							if (!checkNumber(f.elements[x].value.replace('-',''),1)){
								
								erridx++;
								var appendToCell = document.getElementById('c' + f.elements[x].name);
								var carryvalue = f.elements[x].value;
								appendToCell.innerHTML = appendToCell.innerHTML + '<span class=\'ferror\' id=err' + erridx + '><br>must be a number, with one period for decimals.</span>';
								f.elements[x].value=carryvalue;hasgotanerror=1;hasgotanerrortt=1;cnterrs++;

							}
						}
					break;
					case "text":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){

								
								erridx++;
								var appendToCell = document.getElementById('c' + f.elements[x].name);
								var carryvalue = f.elements[x].value;
								appendToCell.innerHTML = appendToCell.innerHTML + '<span class=\'ferror\' id=err' + erridx + '><br>cannot be empty!</span>';
								f.elements[x].value=carryvalue;hasgotanerror=1;hasgotanerrortt=1;cnterrs++;
				                	}

						}
					break;
					case "alpha":
						if (f.elements[x].value==0){
							if (farr[0]=="required"){
								
								erridx++;
								var appendToCell = document.getElementById('c' + f.elements[x].name);
								appendToCell.innerHTML = appendToCell.innerHTML + '<span class=\'ferror\' id=err' + erridx + '><br>cannot be empty!</span>';hasgotanerror=1;hasgotanerrortt=1;cnterrs++;
							
				                        }
						}else{
							if (!checkAlpha(f.elements[x].value,farr[2])){

								
								erridx++;
								var appendToCell = document.getElementById('c' + f.elements[x].name);
								var carryvalue = f.elements[x].value;
								appendToCell.innerHTML = appendToCell.innerHTML + '<span class=\'ferror\' id=err' + erridx + '><br>must be alphanumeric!</span>';
								f.elements[x].value=carryvalue;hasgotanerror=1;hasgotanerrortt=1;cnterrs++;

							}
						}
					break;
					case "email":
						if (f.elements[x].value==0){

							if (farr[0]=="required"){
								
								erridx++;
								var appendToCell = document.getElementById('c' + f.elements[x].name);
								appendToCell.innerHTML = appendToCell.innerHTML + '<span class=\'ferror\' id=err' + erridx + '><br>cannot be empty!</span>';hasgotanerror=1;hasgotanerrortt=1;cnterrs++;

				             		 }
						}else{

							filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
							if (!filter.test(f.elements[x].value)){
								
								erridx++;
								var appendToCell = document.getElementById('c' + f.elements[x].name);
								var carryvalue = f.elements[x].value;
								appendToCell.innerHTML = appendToCell.innerHTML + '<span class=\'ferror\' id=err' + erridx + '><br>invalid email!</span>';hasgotanerror=1;hasgotanerrortt=1;cnterrs++;
								f.elements[x].value=carryvalue;

							}

							

						}
					break;

				}

				if ((cnterrs==1)&&(hasgotanerrortt==1)){
					firstbustedelement=f.elements[x];
				}
			}
		}

	}
	if (hasgotanerror==1){
		firstbustedelement.focus();
	}
	return hasgotanerror;

}

function validateForm(f){
	var fcheck=0;
	fcheck= validateFormCore(f);
	if (fcheck==0){
		return true;
	}else{
		return false;
	}

}

