/*
         ___                         _____       __
        /  /\        ________       /    /\     / /\
(-----//  /  \//----/_____/__\\--) /____/  \___/_/ //--------------------------)
      /  /   /      \     | //     \    \  /    /\/    this code was created by
     /__/   /        \    |///-----\\____\/____/  \                       sigea
(---\\  \  /   (-----\\___|/        /    /\    \  /       
      \__\/                        /____/ /\____\/            __       sigea.ch
                                   \____\/  \  /             /\_\--------------)
                                         \___\//-------------\/_/  

*/
if(!formAlert){
	var formAlert= new Object();
	formAlert['default']='Bitte "[label]" eingeben!';
	formAlert['email']='Bitte im Feld "[label]" eine korrekte E-Mail-Adresse eingeben!';
	formAlert['date']='Bitte im Feld "[label]" eine korrektes Datum (TT.MM.JJJJ) eingeben!';
	formAlert['time']='Bitte im Feld "[label]" eine korrekte Zeit (hh:mm) eingeben!';
	formAlert['anzahl']='Bitte im Feld "[label]" einen gültige Wert eingeben!';
	formAlert['wochentag']='Bitte Datum und/oder Wochentag anpassen!';
	formAlert['vonbis']='Bitte Zeit von/bis überprüfen!';
	formAlert['vonbis2']=formAlert['vonbis'];
	formAlert['image']='Bitte ein JPEG, PNG oder GIF auswählen!';
}
var checkForm;
function CheckForm(){
	var addErrorElement=new Object();
	addErrorElement['wochentag']=false;
	addErrorElement['vonbis']=false;
	addErrorElement['vonbis2']=false;
	this.prepare=function(){
		for(var i=0; i<document.getElementsByTagName('form').length; i++) {
			var thisform = document.getElementsByTagName('form')[i];
			//semplan spezial
			if(document.getElementById('nextStatus')){
				var nextStatus=document.getElementById('nextStatus');
				if(nextStatus.defaultValue.indexOf('Abgeschlossen')!=-1){
					nextStatus.onclick = function() {
						if(!checkForm.validate(document.getElementsByTagName('form')[0])){
							return false;
						}else if(!confirm('Wollen Sie wirklich Abschliessen?')){
							return false;
						}else{
							return true;
						}
					}
				//verantwortliche definiert
				}else if(nextStatus.defaultValue.indexOf('Verantw. Def.')!=-1){
					if(document.getElementById('personList1') || document.getElementById('personList0')){
						var label;
						if(document.getElementById('personList1'))
							label=getLabel('personList1');
						else
							label=getLabel('personList0');
						nextStatus.onclick = function() {
							if (!isFilled(label.htmlFor)) {
								addClass(label,'error');
								alert(formAlert['default'].replace(/\[label\]/,getLabelText(label.htmlFor)));
								label.focus();
								return false;
							}else{
								return true;
							}
						}
					}
				}else if(document.getElementById('status') && parseInt(document.getElementById('status').value)>1){
					thisform.onsubmit = function(){
						return checkForm.validate(this);
					}
				}
			}else{
				thisform.onsubmit = function(){
					return checkForm.validate(this);
				}
			}
		}
	}
	this.validate=function(whichform){
		var firstErrorElement=false;
		var errorType='default';
		cleanMarkLabel(whichform);
		var labels=whichform.getElementsByTagName('label');
		for(var i=0; i<labels.length; i++) {
			//var element = whichform.elements[i];
			if(labels[i].className.indexOf("required") != -1) {
				if (!isFilled(labels[i].htmlFor)) {
					addClass(labels[i],'error');
					if(!firstErrorElement){
						firstErrorElement=document.getElementById(labels[i].htmlFor);
					}
				}else if(labels[i].className.indexOf("email") != -1){
					if (!isEmail(labels[i].htmlFor)) {
						addClass(labels[i],'error');
						if(!firstErrorElement){
							firstErrorElement=document.getElementById(labels[i].htmlFor);
							errorType='email';
						}
					}
				}else if(labels[i].className.indexOf("date") != -1){
					if (!isDate(labels[i].htmlFor)) {
						addClass(labels[i],'error');
						if(!firstErrorElement){
							firstErrorElement=document.getElementById(labels[i].htmlFor);
							errorType='date';
						}
					}
				}else if(labels[i].className.indexOf("time") != -1){
					if (!isTime(labels[i].htmlFor)) {
						addClass(labels[i],'error');
						if(!firstErrorElement){
							firstErrorElement=document.getElementById(labels[i].htmlFor);
							errorType='time';
						}
					}
				}else if(labels[i].className.indexOf("anzahl") != -1){
					if (!isAnzahl(labels[i].htmlFor)) {
						addClass(labels[i],'error');
						if(!firstErrorElement){
							firstErrorElement=document.getElementById(labels[i].htmlFor);
							errorType='anzahl';
						}
					}
				}
			}
		}
		if(firstErrorElement){
			alert(formAlert[errorType].replace(/\[label\]/,getLabelText(firstErrorElement.id)));
			//alert(formAlert);
			if(firstErrorElement.nodeName.search(/fieldset/i)==-1)
				firstErrorElement.focus();
			return false;
		}else if(addErrorElement['wochentag'] || addErrorElement['vonbis']){
			var addErrorType;
			if(addErrorElement['wochentag'])
				addErrorType='wochentag';
			else if(addErrorElement['vonbis'])
				addErrorType='vonbis';
			else
				addErrorType='vonbis2';
			alert(formAlert[addErrorType].replace(/\[label\]/,getLabelText(addErrorElement[addErrorType].id)));
			//alert(formAlert);
			if(addErrorElement[addErrorType].nodeName.search(/fieldset/i)==-1)
				addErrorElement[addErrorType].focus();
			return false;
		}
		return true;
	}
	var isFilled=function(fieldID){
		var field=document.getElementById(fieldID);
		var value;
		if(field.nodeName.search(/fieldset/i)>-1){
			if(field.className.indexOf('all') != -1){
				var allFlag=true;
			}else{
				var allFlag=false;
			}
			var select=field.getElementsByTagName('select');
			if(select.length>0){
				var selectCount=0;
				for(var i=0; i<select.length; i++){
					value=trimString(select[i].value);
					if(value.length > 0 && value!=-9){
						if(allFlag){
							selectCount++;
						}else{
							return true;
						}
					}
				}
				if(selectCount==select.length){
					return true;
				}else{
					return false;
				}
			}
			var input=field.getElementsByTagName('input');
			if(input.length>0){
				for(var i=0; i<input.length; i++){
					if(input[i].checked){
						return true;
					}
				}
				return false;
			}
			return true;
		}else{
			value=trimString(field.value);
			if(value.length < 1 || value==-9 || value=='#DEL#'){
				return false;
			}else{
				return true;
			}
		}
	}
	var isEmail=function(fieldID){
		var field=document.getElementById(fieldID);
		if(field.value.indexOf("@") == -1 || field.value.indexOf(".") == -1){
			return false;
		}else{
			return true;
		}
	}
	var isDate=function(fieldID){
		var field=document.getElementById(fieldID);
		return checkDate(trimString(field.value));
	}
	var isTime=function(fieldID){
		var field=document.getElementById(trimString(fieldID));
		return checkTime(field.value);
	}
	var isAnzahl=function(fieldID){
		var value=trimString(document.getElementById(fieldID).value);
		var pattern= new RegExp("^((ca)|(max)|(min))*(\\.){0,1}( ){0,1}(\\d)*( ){0,1}((-)|(bis)|<|>)*( ){0,1}(\\d)+(\\+){0,1}$");
		if(value.search(pattern)==-1)
			return false;
		else
			return true;
	}
	var cleanMarkLabel=function(whichform){
		var labels=whichform.getElementsByTagName('label');
		for(var i=0; i<labels.length; i++) {
			removeClass(labels[i],'error');
			//labels[i].className='';
		}
	}
	this.getLabelText=function(id){
		return getLabelText(id);
	}
	var getLabelText=function(id){
		var labels=document.getElementsByTagName('label');
		for(var i=0; i<labels.length; i++) {
			if(labels[i].htmlFor==id)
				return labels[i].firstChild.nodeValue;
		}
		return false;
	}
	this.setError=function(errorElement,type){
		addErrorElement[type]=errorElement;
	}
	this.removeError=function(type){
		addErrorElement[type]=false;
	}
}

function prepareCheckForm(){
	checkForm=new CheckForm();
	checkForm.prepare();
}
addLoadEvent(prepareCheckForm);
