var ov_form_type = new Array();
var ov_errormsg  = new Array();
var typed        = new Array();

function ov_add_type(fname,ename,fid,name,fparam,fvalue,fmust){
	if(typeof(ov_form_type[fname])=="undefined"){ ov_form_type[fname] = new Array();}

	if(typeof(ov_form_type[fname][ename])=="undefined"){ ov_form_type[fname][ename] = new Array();}
	if(typeof(ov_form_type[fname][ename][fid])=="undefined"){ ov_form_type[fname][ename][fid] = new Array();}

	ov_form_type[fname][ename][fid][fparam] = fvalue;

	if (fparam=="type") {
		ov_form_type[fname][ename][fid]['must'] = fmust;
		ov_form_type[fname][ename][fid]['name'] = name;
	}
}

function ov_check_form(form_name){
//  var form = eval("document."+form_name);
	var form = document.forms[form_name];

	var errormsg= "";
	var block   = 0;
	var ename   = "";

	for(i=0; i<form.elements.length; i++) {
		if(typeof(ov_form_type[form_name][form.elements[i].name.substr(0,form.elements[i].name.indexOf("["))])!="undefined"){
			bpos  = form.elements[i].name.indexOf("[");
			ename = form.elements[i].name.substr(0,bpos);
			fid   = form.elements[i].name.substr(bpos+1,(form.elements[i].name.length-bpos-2));

			switch(ov_check(i,fid,form,ov_form_type[form_name][ename][fid])){
				case 2:
					if(typeof(ov_errormsg[form_name])!="undefined" && typeof(ov_errormsg[form_name]["empty"])!="undefined" && ov_form_type[form_name][ename][fid]["name"]){
						errormsg+= ov_errormsg[form_name]["empty"].replace(/XfeldnameX/,ov_form_type[form_name][ename][fid]["name"]);
					}
					form_error(fid,i,2,ename);
					block = 1;
					break;
				case 1:
					if(typeof(ov_errormsg[form_name])!="undefined" && typeof(ov_errormsg[form_name]["wrong"])!="undefined" && ov_form_type[form_name][ename][fid]["name"]){
						errormsg+= ov_errormsg[form_name]["wrong"].replace(/XfeldnameX/,ov_form_type[form_name][ename][fid]["name"]);
					}
					block = 1;
					form_error(fid,i,1,ename);
					break;
				case 3:
					form_error(fid,i,0,ename);
					break;
			}
		}
	}

	if(typeof(ov_errormsg[form_name])!="undefined" &&  typeof(ov_errormsg[form_name]["start"])!="undefined"){ errormsg = ov_errormsg[form_name]["start"]+errormsg;}
	if(typeof(ov_errormsg[form_name])!="undefined" &&  typeof(ov_errormsg[form_name]["end"])!="undefined"){  errormsg += ov_errormsg[form_name]["end"];}
  if(block ==1 && errormsg.length>0){
		alert(errormsg);
/*    var divMess = document.getElementById('errormess');
    divMess.innerHTML = errormsg;*/
	}else{
//		form.submit();
		document.forms[form_name].submit();		
		
	}
}

// 2 = Mussfeld leer
// 1 = falscher Wert
// 3 = alles Okay
function ov_check(eid,fid,form,types){

	if (typeof(types)!= "undefined") {
		var content = form.elements[eid].value;

		if (content.length>0) {
			switch(types["type"]){
				case 'text':
					if(types["length"] && content.length > types["length"])return 1;
					if(types["minlength"] && content.length <= types["minlength"])return 1;
					break;
				case 'checkbox':
					if (form.elements[eid].checked==false) {
						return 1;
					}
					break;
				case 'date':
					if (form.elements[eid+'_1'].value.length==0) {
						return 1;
					}
					if (form.elements[eid+'_2'].value.length==0) {
						return 1;
					}
					break;
			    case 'number':
					if(isNaN(content)) return 1;
					if(types["length"] && content.length < types["length"])return 1;
					break;
				case 'email':
//					if(content.search("^[\\w-_\.]*[\\w-_\.]\@[\\w-_\.]*\\.+[\\w]+[\\w]$")) return 1;
					if( emailCheck(content) == false) {
						return 1;
					}
					break;
				case 'plain':
					if(content.search("^[a-zA-Z0-9_]*$")==-1) return 1;
					break;
				default:
					alert("unknown type: "+types["type"]);
			}
		} else {
			if(types["must"] == 1) return 2;
		}
 		return 3;
	} else {
		return -1;
	}
}

function checkform(form_name,mode){
  var f = eval("document."+form_name);
  var doit = true;
  var errmsg = '';
  if(mode=="login" || mode=="pwd"){
  	if(f.usr.value==''){ doit=false; form_error(1,0,1); errmsg+=ov_errormsg['usr']; }
  }
  if(mode == "login"){
  	if(f.pwd.value==''){ doit=false; form_error(2,0,1); errmsg+=ov_errormsg['pwd']; }
  }
  if(doit==false){
  	alert(ov_errormsg['start']+errmsg);
  } else {
		if(mode=="pwd"){ f.mode.value="pwd"; }
		f.submit();
	}
}



function emailCheck (emailStr) {
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)
	if (matchArray==null) {
//	alert('Die angegebene E-Mail Adresse ist falsch!');
	 return false
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	
	if (user.match(userPat)==null) {
//	alert('Die angegebene E-Mail Adresse ist falsch!');
	    return false
	}
	
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
	   for (var i=1;i<=4;i++) {
	     if (IPArray[i]>255) {
 //        alert('Die angegebene E-Mail Adresse ist falsch!');
	       return false
	     }
	    }
	    return true
	}
	
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
	//  alert('Die angegebene E-Mail Adresse ist falsch!');
	  return false
	}
	
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
	if (domArr[domArr.length-1].length<2 || 
	    domArr[domArr.length-1].length>5) {
	 // alert('Die angegebene E-Mail Adresse ist falsch!');
	   return false
	}
	
	if (len<2) {
	 // alert('Die angegebene E-Mail Adresse ist falsch!');
	  return false
	}
	var tonlinePat = /t.?online.?de/
	if(domain.search(tonlinePat)!=-1){
	if(domain!='t-online.de') { alert('Die angegebene E-Mail Adresse ist falsch!'); return false;}
	}
	return true;
}
function checkforemail() {
	if ((document.forms[0].email.value != '' && !emailCheck(document.forms[0].email.value))) {
		document.forms[0].email.value='';
		return false;
	} else {
		return true;
	}
}
function Convertto(val) {
	nval = 0;
	val = String(val);
	dezimalen = 0;
	nachkomma = "00";
	var lengostr = val.length;
	var lastdec = val.lastIndexOf(",");
	if(lastdec > 0) {
		dezimalen = val.substr(0,lastdec);
		nachkomma = val.substr(lastdec+1,lengostr);
	}
	
	return dezimalen+"."+nachkomma;
}
function Convertfrom(val) {
	nval = 0;
	val = String(val);
	dezimalen = 0;
	nachkomma = "00";
	var lengostr = val.length;
	var lastdec = val.lastIndexOf(".");
	if(lastdec > 0) {
		dezimalen = val.substr(0,lastdec);
		nachkomma = val.substr(lastdec+1,lengostr);
		if(lastdec == lengostr-2) nachkomma = nachkomma + "0";
		if((lengostr-1-lastdec) > 2) {
			nval = String(Math.round(100.00 * val));
			dezimalen = nval.substr(0,nval.length-2);
			nachkomma = nval.substr(nval.length-2,nval.length);
		}
	} else {
		dezimalen = val;
	}
	
	return dezimalen+","+nachkomma;
}


function saveFeedback(form_name, targetfield){

	var sText = '';

	for (i=0; i< document.forms[form_name].elements.length; i++) {
		if (document.forms[form_name].elements[i].name=='in[6]') {
			sText += 'E-Mail: '+document.forms[form_name].elements[i].value+'\n';
			break;
		}
	}


	for ( i=0; i< document.forms[form_name].elements.length; i++ ){
		if ( document.forms[form_name].elements[i].name.substr(0,4) == 'fl_[' ) {
			var sLabel = document.forms[form_name].elements[i].value;
			sText += '\n' + sLabel + ': ';
		}
		
		if ( document.forms[form_name].elements[i].name.substr(0,3) == 'f_[' ) {
			var fType = document.forms[form_name].elements[i].type;
			var sVal = document.forms[form_name].elements[i].value;
			
			switch (fType) {
				case 'checkbox':
					if ( document.forms[form_name].elements[i].checked ) {
						sText += '\n - ' + sVal;
					}
				break;
				case 'radio':
					if ( document.forms[form_name].elements[i].checked ) {
						sText += sVal;
					}
				break;
				case 'select-one':
					sText += document.forms[form_name].elements[i].options[document.forms[form_name].elements[i].selectedIndex].value;
				break;	
				case 'textarea':
					sText += '\n' + sVal;
				break;	
				case 'text':
				default:
					sText += sVal;
				break;
			}
			
		}
		
	}

	document.forms[form_name].elements[targetfield].value = sText;

}
