/*
	checkForm v1.0
	2007 by Stefan Andernach
	Do this instructions for use:

 >> CSS:
 		>> highlights the bg auf the inputs and textareas on error
 ---------------------------------------------------------------
		.form_highlight {
			background: #FF0000;
		}
 ---------------------------------------------------------------

 >> HTML:
 		>> in <HEAD>
 ---------------------------------------------------------------
		<script src="checkForm.js" type="text/javascript"></script>
 ///------------------------------------------------------------

 		>> in your <Form>
 		>> attributes for class:
 			- mandatory
 			- manda_special (id_from_to_highlighting_elem)  //for fields who are the highlighting field an other.
 			- check	 //no mandatory, only check on user writes
 			- check_special (id_from_to_highlighting_elem)  //for fields who are the highlighting field an other.
 			>> allowed datatype (after mandatory or check):
 				- (int)
 				- (mail)
 ---------------------------------------------------------------
		<input name="strasse" type="text" value="" class="mandatory">
 ///------------------------------------------------------------

 >> JS:
 		>> in the Script below:
 		>> for use of groups of checkboxes set:
 		  - use_Checkgroups = 1
			- ary_Checkgroups = new Array("group1","group2","group3");

			- group(group1) check(1)

			??? documentation ends here, not complete, sorry :D

*/


function checkeingabe(){
	var var_return = true;
	var use_Checkgroups = 0;
	var ary_Checkgroups = new Array("","","");


	// check input-fields with class="mandatory", class="mandatory (int)", class="mandatory (mail)"
	var ary_man = getElementsByClassName('mandatory');

	for(var i=0; i < ary_man.length; i++){
		var ok_mandatory = true;
			if(ary_man[i]) {
			var mandatory = ary_man[i];
			var len = mandatory.value.length;
			if(len < 2){
				ok_mandatory=false;
			}

			if(mandatory.className.indexOf('(int)') != -1){
				if(isNaN(mandatory.value)){
					ok_mandatory=false;
				}
					if(mandatory.value.length < 4){
						ok_mandatory=false;
					}
			}

			if(mandatory.className.indexOf('(mail)') != -1){
				if(mandatory.className.length > 5){
						if(mandatory.className.indexOf('@') != -1){
							if(mandatory.className.indexOf('.') == -1){
								ok_mandatory=false;
							}
						}else{
							ok_mandatory=false;
						}
				}else{
					ok_mandatory=false;
				}
			}

			var eleMan = ary_man[i];
			var eleClass = eleMan.className;

			if (ok_mandatory==false){
				if(eleClass.indexOf('form_highlight') == -1){
					eleMan.className = "form_highlight "+eleClass;
				}
				var_return = false;
			}else{
				var eleClass = eleClass.replace(/form_highlight/, "");
				eleMan.className = eleClass;
			}
		}
	}


	// check input-fields with class="manda_special (id)", class="manda_special (id) (int)", class="manda_special (id) (mail)"
	var ary_man = getElementsByClassName('manda_special');

	for(var i=0; i < ary_man.length; i++){
		var ok_mandatory = true;
			if(ary_man[i]) {
			var mandatory = ary_man[i];
			var len = mandatory.value.length;
			if(len < 2){
				ok_mandatory=false;
			}

			if(mandatory.className.indexOf('(int)') != -1){
				if(isNaN(mandatory.value)){
					ok_mandatory=false;
				}
					if(mandatory.value.length < 4){
						ok_mandatory=false;
					}
			}

			if(mandatory.className.indexOf('(mail)') != -1){
				if(mandatory.className.length > 5){
						if(mandatory.className.indexOf('@') != -1){
							if(mandatory.className.indexOf('.') == -1){
								ok_mandatory=false;
							}
						}else{
							ok_mandatory=false;
						}
				}else{
					ok_mandatory=false;
				}
			}

			if(mandatory.className.indexOf('(') != -1 && mandatory.className.indexOf(')') != -1){
				var a = mandatory.className.indexOf('(');
				var b = mandatory.className.indexOf(')');
				var highlight_id = mandatory.className.substr(a+1,b-a-1);
			}

			var eleMan = document.getElementById(highlight_id);
			var eleClass = eleMan.className;

			if (ok_mandatory==false){
				if(eleClass.indexOf('form_highlight') == -1){
					eleMan.className = "form_highlight "+eleClass;
				}
				var_return = false;
			}else{
				var eleClass = eleClass.replace(/form_highlight/, "");
				eleMan.className = eleClass;
			}
		}
	}


	// check input-fields with class="check (int)", class="check (mail)"
	var ary_man = getElementsByClassName('check');

	for(var i=0; i < ary_man.length; i++){
		var ok_mandatory = true;
			if(ary_man[i]) {
			var mandatory = ary_man[i];
			var len = mandatory.value.length;
			if(len > 0){

				if(mandatory.className.indexOf('(int)') != -1){
					if(isNaN(mandatory.value)){
						ok_mandatory=false;
					}
					if(mandatory.value.length < 4){
						ok_mandatory=false;
					}
				}else if(mandatory.className.indexOf('(mail)') != -1){
					if(mandatory.value.length > 5){
							if(mandatory.value.indexOf('@') != -1){
								if(mandatory.value.indexOf('.') == -1){
									ok_mandatory=false;
								}
							}else{
								ok_mandatory=false;
							}
					}else{
						ok_mandatory=false;
					}
				}

				var eleMan = ary_man[i];
				var eleClass = eleMan.className;

				if (ok_mandatory==false){
					if(eleClass.indexOf('form_highlight') == -1){
						eleMan.className = "form_highlight "+eleClass;
					}
					var_return = false;
				}else{
					var eleClass = eleClass.replace(/form_highlight/, "");
					eleMan.className = eleClass;
				}

			}else{
					var eleMan = ary_man[i];
					var eleClass = eleMan.className;
					var eleClass = eleClass.replace(/form_highlight/, "");
					eleMan.className = eleClass;
			}
		}
	}


	// check input-fields with class="check_special (id) (int)", class="check_special (id) (mail)"
	var ary_man = getElementsByClassName('check_special');

	for(var i=0; i < ary_man.length; i++){
		var ok_mandatory = true;
			if(ary_man[i]) {
			var mandatory = ary_man[i];
			var len = mandatory.value.length;
			if(len > 0){

				if(mandatory.className.indexOf('(int)') != -1){
					if(isNaN(mandatory.value)){
						ok_mandatory=false;
					}
					if(mandatory.value.length < 4){
						ok_mandatory=false;
					}
				}else if(mandatory.className.indexOf('(mail)') != -1){
					if(mandatory.value.length > 5){
							if(mandatory.value.indexOf('@') != -1){
								if(mandatory.value.indexOf('.') == -1){
									ok_mandatory=false;
								}
							}else{
								ok_mandatory=false;
							}
					}else{
						ok_mandatory=false;
					}
				}

				if(mandatory.className.indexOf('(') != -1 && mandatory.className.indexOf(')') != -1){
					var a = mandatory.className.indexOf('(');
					var b = mandatory.className.indexOf(')');
					var highlight_id2 = mandatory.className.substr(a+1,b-a-1);
				}

				var eleMan = document.getElementById(highlight_id2);
				var eleClass = eleMan.className;

				if (ok_mandatory==false){
					if(eleClass.indexOf('form_highlight') == -1){
						eleMan.className = "form_highlight "+eleClass;
					}
					var_return = false;
				}else{
					var eleClass = eleClass.replace(/form_highlight/, "");
					eleMan.className = eleClass;
				}

			}else{
					var eleMan = ary_man[i];
					var eleClass = eleMan.className;
					var eleClass = eleClass.replace(/form_highlight/, "");
					eleMan.className = eleClass;
			}
		}
	}


	// check Checkboxen-Groups
	if(use_Checkgroups) {
		for(var n=0; n < ary_Checkgroups.length; n++){
			var curGroup = ary_Checkgroups[n];
			for(var i=0; i < 20; i++){
				var oneChecked = false;
				if(window.document.getElementById('group('+curGroup+')check('+i+')')){
					if(window.document.getElementById('group('+curGroup+')check('+i+')').checked == true){
						oneChecked = true;
						break;
					}
				}
			}

			var eGroup = document.getElementById(curGroup);
			var eGroupClass = eGroup.className;

			if(oneChecked == false){
				if(eGroupClass.indexOf('head_highlight') == -1){
					eGroup.className = "head_highlight "+eGroupClass;
				}
				var_return = false;
			}else{
				var eGroupClass = eGroupClass.replace(/head_highlight/, "");
				eGroup.className = eGroupClass;
			}
		}
	}


	// prüfen ob Form abschicken oder nicht
	var out=1;
	if(window.document.getElementById('checkFormError')) {
		var error = window.document.getElementById('checkFormError');

	}else if(window.document.getElementById('formError')) {
		var error = window.document.getElementById('formError');

	}else{
		out=0;
	}
	if(var_return == false){
		if(out){ error.style.display="block";}
		window.scrollTo(0, 800);
		return false;
	}else{
		if(out){ error.style.display="none";}
		return true;
	}
}

function getElementsByClassName(strClass, strTag, objContElm) {
  strTag = strTag || "*";
  objContElm = objContElm || document;
  var objColl = objContElm.getElementsByTagName(strTag);
  if (!objColl.length &&  strTag == "*" &&  objContElm.all) objColl = objContElm.all;
  var arr = new Array();
  var delim = strClass.indexOf('|') != -1  ? '|' : ' ';
  var arrClass = strClass.split(delim);
  for (var i = 0, j = objColl.length; i < j; i++) {
    var arrObjClass = objColl[i].className.split(' ');
    if (delim == ' ' && arrClass.length > arrObjClass.length) continue;
    var c = 0;
    comparisonLoop:
    for (var k = 0, l = arrObjClass.length; k < l; k++) {
      for (var m = 0, n = arrClass.length; m < n; m++) {
        if (arrClass[m] == arrObjClass[k]) c++;
        if (( delim == '|' && c == 1) || (delim == ' ' && c == arrClass.length)) {
          arr.push(objColl[i]);
          break comparisonLoop;
        }
      }
    }
  }
  return arr;
}

/*
document.getElementsByClassName = function(className, parentElement) {
  var children = ($(parentElement) || document.body).getElementsByTagName('*');
  return $A(children).inject([], function(elements, child) {
    if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
      elements.push(child);
    return elements;
  });
}
*/
