// JavaScript Document
function check(){
	var msg="";valid=true;
	var arr= getElements();//new Array("select","salut","company","checkbox","radiobutton","comment","Optionsschaltergruppe1");//
	for (var i = 0; i < arr.length; ++i) {
		if(document.getElementById(arr[i])){
			var el=document.getElementById(arr[i]);var flags=document.getElementById(arr[i]).getAttribute('flags');
		}else if(document.getElementsByName(arr[i])[0]){
			var el=document.getElementsByName(arr[i])[0];var flags=document.getElementsByName(arr[i])[0].getAttribute('flags');
		}else{alert("Element ist nicht vorhanden:"+arr[i]);}		
		if(flags!=null&&flags!=""){
		var flag = flags.split(",");
		// reading the name Flag for Fieldname creating.
		for (var k = 0; k < flag.length; ++k){if(flag[k].substr(0, 5)=="NAME:"){var namearr = flag[k].split(":");var fieldname=namearr[1];}else {var fname=el.name;var firstletter=fname.substring(0, 1);var letters = fname.substring(1, fname.length);var fieldname=firstletter.toUpperCase()+letters;}}if(fieldname.length>0){msg+=fieldname+":\n";}
		//Reading the other flags options
			for (var j = 0; j < flag.length; ++j) {
				if(flag[j]=="R"){if(isRequired(arr[i])){valid = false;sS(el,arr[i]);msg+=isRequiredMsg+"\n";}else{rS(el,arr[i])}}
				if(flag[j]=="isEmail"){if(check_email(el.value)){valid = false;sS(el,arr[i]);msg+=isNotEmail+"\n";}else{rS(el,arr[i])}}
				if(flag[j]=="isURL"){if(check_url(el.value)){valid = false;sS(el,arr[i]);msg+=isNotURL+"\n";}else{rS(el,arr[i])}}
				if(flag[j]=="E"){if(check_empty(el.value)){valid = false;sS(el,arr[i]);msg+=isEmpty+"\n";}else{rS(el,arr[i])}}
				if(flag[j]=="NaN"){if(isNaN(el.value)){valid = false;sS(el,arr[i]);msg+=isNAN+"\n";}else{rS(el,arr[i])}}
				if(flag[j].substr(0, 8)=="minChar:"){var mcarr = flag[j].split(":");if(minChars(el.value,mcarr[1])){var isMinCharMsg1 = isMinCharMsg.replace(/##charslength##/, mcarr[1]);valid = false;sS(el,arr[i]);msg+=isMinCharMsg1+"\n";}else{rS(el,arr[i])}}				
			}//forif (isNaN(val)) 
			msg+="\n";
		}
	}
	//alert(isErrorhead+msg);
	if (!valid)
        alert (isErrorhead+msg);
  	return valid;
}

function getElements(){
	//
	var textareas=document.getElementsByTagName("textarea");
	var inputs=document.getElementsByTagName("input");
	var selects=document.getElementsByTagName("select");
	var out1="";//inputs.length
	var out=new Array();//inputs.length
	// Checking inputs
	for (var i = 0; i < inputs.length; ++i) {
		var elitag=inputs[i].getAttribute('id');//get id
		var elntag=inputs[i].getAttribute('name');// get name
		var flags=inputs[i].getAttribute('flags');// get flags		
		if(flags!=null&&flags!=""){
			//alert(elntag);
			if(elitag!=null&&elitag!=""){
			var eli=document.getElementById(elitag);
			out1+=eli.name+": "+eli.type+", "+flags+"\n\n";//", "+flag.length+
			out.push(eli.name);
			}else if(elntag!=null&&elntag!=""){
				var eln=document.getElementsByName(elntag);
				for (var j = 0; j < eln.length; ++j) {var elnt=eln[j];}
				out1+=elnt.name+": "+elnt.value+", "+flags+"\n\n";
				out.push(elnt.name);
			} else {/*out[i]="";*/}
		}
	}
	// Checking Textareas
	for (var k = 0; k < textareas.length; ++k) {
		var elitagtxt=textareas[k].getAttribute('id');
		var elntagtxt=textareas[k].getAttribute('name');
		if(elitagtxt!=null&&elitagtxt!=""){
		var elitxt=document.getElementById(elitagtxt);
		out.push(elitxt.name);
		}else if(elntagtxt!=null&&elntagtxt!=""){
			var elntxt=document.getElementsByName(elntagtxt);
			out.push(elntxt.name);
		} else {}
	}
	
	// Checking Selects
	for (var l = 0; l < selects.length; ++l) {
		var elitagsel=selects[l].getAttribute('id');
		var elntagsel=selects[l].getAttribute('name');
		if(elitagsel!=null&&elitagsel!=""){
		var elisel=document.getElementById(elitagsel);
		out.push(elisel.name);
		}else if(elntagsel!=null&&elntagsel!=""){
			var elnsel=document.getElementsByName(elntagsel);
			out.push(elnsel.name);
		} else {}
	}
	//alert(out1);
	return out;
}

function isRequired(elstr){
	if(document.getElementById(elstr)){var el=document.getElementById(elstr);	}else if(document.getElementsByName(elstr)[0]){var el=document.getElementsByName(elstr)[0];}else{alert("Element ist nicht vorhanden:"+el);}if(document.getElementsByName(elstr)){var optel=document.getElementsByName(elstr);}
	if(document.getElementById(elstr)){var elopt=document.getElementById(elstr);}else{var elopt=document.getElementsByName(elstr);}
		if((el.type=="text"||el.type=="hidden"||el.type=="textarea"||el.type=="file")&&el.value==""){return true;}
		else if(optel[0]&&optel[1]){var check = 0; 
			for(i = 0; i < optel.length; ++i){if(optel[i].checked == true)check = 1;}if(check ==0)return true;} 
		else if((el.type=="checkbox"||el.type=="radio")&&el.checked==false&&!optel[1]){return true;}
		else if(el.type=="select-multiple"||el.type=="select-one"){var ellength=el.length;//
			for (var i = 0; i < ellength; ++i) {if (el.options[i].selected == true) {return false;break;}}return true;}
		else if((el.type=="button"||el.type=="submit"||el.type=="reset")&&el.checked==false){return false;}
		else{return false;}
}

function check_empty(text) {return (text.length < 0);}
function minChars(val,lgth) {return (val.length < lgth);}

function check_url(address) {
  if ((address == "")|| (address.indexOf ('http://') == -1) || (address.indexOf ('.') == -1))
      return true;
  return false;
}

function check_email(address) {
  if ((address == "")|| (address.indexOf ('@') == -1)|| (address.indexOf ('.') == -1))
      return true;
  return false;
}

function sS(el,elname){
	if(document.getElementsByName(elname)){var optel=document.getElementsByName(elname);}
	
		if(el.type=="text"||el.type=="hidden"||el.type=="textarea"||el.type=="file"){el.className='txterror';}
		else if(optel[0]&&optel[1]){var check = 0; 
			for(i = 0; i < optel.length; ++i){if(optel[i].checked != true)optel[i].className='radioerror';}}
		else if(el.type=="checkbox"){el.className='checkboxerror';}
		else if(el.type=="radio"){el.className='radioerror';}
		else if(el.type=="select-multiple"||el.type=="select-one"){el.className='selecterror';}
		else if(el.type=="button"||el.type=="submit"||el.type=="reset"){el.className='txterror';}
		else{el.className='error';}
	if(!document.getElementById("errorpic_"+elname)){var errordiv = document.createElement("div");errordiv.id="errorpic_"+elname;errordiv.className="errorpic";el.parentNode.insertBefore(errordiv, el);}
}

function rS(el,elname) {
	if(el.type=="text"||el.type=="hidden"||el.type=="textarea"||el.type=="file"){el.className='text';}
		else if(el.type=="checkbox"){el.className='';}
		else if(el.type=="radio"){el.className='';}
		else if(el.type=="select-multiple"||el.type=="select-one"){el.className='select';}
		else if(el.type=="button"||el.type=="submit"||el.type=="reset"){el.className='';}
		else{el.className='error';}
	if(document.getElementById("errorpic_"+elname)){var Knoten = document.getElementById("errorpic_"+elname);el.parentNode.removeChild(Knoten);}
}
