/*
	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="checkEingabe.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">
 ///------------------------------------------------------------

 		>> set an error text with id="error" and display=none
 ---------------------------------------------------------------
		<p id="error" style="display: none;"><b>Bitte vervollst&auml;ndigen Sie die markierten Felder.</b></p>
 ///------------------------------------------------------------

 >> 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

*/

/* BEGIN script checkeingabe */
function checkeingabe(modus) {
	var ary_steps = new Array(""); /* "step1","step2","step3" */
	var ary_Checkgroups = new Array("agb");
	var ary_Selectfields = new Array(""); /* new Array("bundesland") */

	var var_return = true;

	/* check inputfields & textareas with class="mandatory", class="mandatory (int)", class="mandatory (mail)" */
	if (modus=='steps' && ary_steps.length > 1) {
		for(var i=0; i < ary_steps.length; i++){
			var parent = document.getElementById(ary_steps[i]);
			curStep = i+1;
			nextStep = i+2;
			if(parent.style.display=='block') break;
		}
		var ary_man = getElementsByClassName('mandatory','input',parent);
		var ary_man2 = getElementsByClassName('mandatory','textarea',parent);
		for(var x=0; x < ary_man2.length; x++){
			if(ary_man2[x]){
				ary_man.push(ary_man2[x]);
			}
		}
	}else{
		var ary_man = getElementsByClassName('mandatory','input');
		var ary_man2 = getElementsByClassName('mandatory','textarea');
		for(var x=0; x < ary_man2.length; x++){
			if(ary_man2[x]){
				ary_man.push(ary_man2[x]);
			}
		}
	}

	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 < 2){
						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 selectfields with class="mandatory" */
	if (modus=='steps' && ary_steps.length > 1) {
		for(var i=0; i < ary_steps.length; i++){
			var parent = document.getElementById(ary_steps[i]);
			curStep = i+1;
			nextStep = i+2;
			if(parent.style.display=='block') break;
		}
		var ary_man = getElementsByClassName('mandatory','select',parent);
	}else{
		var ary_man = getElementsByClassName('mandatory','select');
	}

	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(in_array(mandatory.name,ary_Selectfields)){
				/*alert("in array");*/
				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{
				/*alert("not in array");*/
			}
		}
	}


	/* check input-fields with class="check (int)", class="check (mail)" */
	if (modus=='steps' && ary_steps.length > 1) {
		for(var i=0; i < ary_steps.length; i++){
			var parent = document.getElementById(ary_steps[i]);
			curStep = i+1;
			nextStep = i+2;
			if(parent.style.display=='block') break;
		}
		var ary_man = getElementsByClassName('check','*',parent);
	}else{
		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 < 2){
						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 Checkboxen-Groups */
	for(var n=0; n < ary_Checkgroups.length; n++){
		var curGroup = ary_Checkgroups[n];
		for(var i=0; i < 2; 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;
				}
			}else{
			}
		}

		if(document.getElementById(curGroup)){
			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 */
	if(var_return == false){
		window.document.getElementById('error').style.display="block";
		window.scrollTo(0, 430);
		return false;
	}else{
		window.document.getElementById('error').style.display="none";

		if (modus=='steps' && ary_steps.length > 1){
			var lastStep = ary_steps.length-1;
			if(document.getElementById(ary_steps[lastStep]).style.display=='block') {
				return true;
			}else{
				var tabStep = document.getElementById('tabStep'+nextStep);
				onlyShowBox(tabStep,curStep,'box_tabGroup');
			}
		}else{
			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;
}

function in_array(item,arr) {
	for(var p=0; p < arr.length ;p++){
	 if (item == arr[p]) return true;
	}
	return false;
}

/*
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;
  });
}
*/

/* END script checkeingabe */

