/*
         ___                         _____       __
        /  /\        ________       /    /\     / /\
(-----//  /  \//----/_____/__\\--) /____/  \___/_/ //--------------------------)
      /  /   /      \     | //     \    \  /    /\/    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['image']='Bitte ein JPEG, PNG oder GIF auswählen!';
}
function validateForm(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)) {
				markLabel(labels[i]);
				if(!firstErrorElement){
					firstErrorElement=document.getElementById(labels[i].htmlFor);
				}
			}else if(labels[i].className.indexOf("email") != -1){
				if (!isEmail(labels[i].htmlFor)) {
					markLabel(labels[i]);
					if(!firstErrorElement){
						firstErrorElement=document.getElementById(labels[i].htmlFor);
						errorType='email';
					}
				}
			}else if(labels[i].className.indexOf("date") != -1){
				if (!isDate(labels[i].htmlFor)) {
					markLabel(labels[i]);
					if(!firstErrorElement){
						firstErrorElement=document.getElementById(labels[i].htmlFor);
						errorType='date';
					}
				}
			}else if(labels[i].className.indexOf("time") != -1){
				if (!isTime(labels[i].htmlFor)) {
					markLabel(labels[i]);
					if(!firstErrorElement){
						firstErrorElement=document.getElementById(labels[i].htmlFor);
						errorType='time';
					}
				}
			}else if(labels[i].className.indexOf("anzahl") != -1){
				if (!isAnzahl(labels[i].htmlFor)) {
					markLabel(labels[i]);
					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;
	}
	return true;
}

function isFilled(fieldID) {
	var field=document.getElementById(fieldID);
	var value;
	if(field.nodeName.search(/fieldset/i)>-1){
		var select=field.getElementsByTagName('select');
		if(select.length>0){
			if(getLabel(fieldID).className.indexOf('all') != -1){
				for(var i=0; i<select.length; i++){
					value=trimString(select[i].value);
					if(value.length <= 0 || value==-9){
						return false;
					}
				}
				return true;
			}else{
				for(var i=0; i<select.length; i++){
					value=trimString(select[i].value);
					if(value.length > 0 && value!=-9){
						return true;
					}
				}
				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){
			return false;
		}else{
			return true;
		}
	}
}
function isEmail(fieldID){
	var field=document.getElementById(fieldID);
//	if(field.value.indexOf("@") == -1 || field.value.indexOf(".") == -1){
	var pattern= new RegExp(/^[\w.+-]{1,64}\@[\w.-]{1,255}\.[a-z]{2,6}$/);
	if(field.value.search(pattern)==-1){
		return false;
	}else{
		return true;
	}
}
function prepareForms() {
	var forms=document.getElementsByTagName('form');
	for(var i=0; i< forms.length; i++) {
		var thisform = forms[i];
		//semplan spezial
		if(document.getElementById('nextStatus')){
			var nextStatus=document.getElementById('nextStatus');
			if(nextStatus.defaultValue.indexOf('Abgeschlossen')!=-1){
				nextStatus.onclick = function() {
					if(!validateForm(document.forms[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)) {
							markLabel(label);
							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 validateForm(this);
				}
			}
		}else{
			thisform.onsubmit = function(){
				return validateForm(this);
			}
		}
	}
}

function isDate(fieldID){
	var field=document.getElementById(fieldID);
	return checkDate(trimString(field.value));
}
function isTime(fieldID){
	var field=document.getElementById(trimString(fieldID));
	return checkTime(field.value);
}
function isAnzahl(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;
}
function markLabel(label){
	//var labels=whichform.getElementsByTagName('label');
	addClass(label,'error');
	//for(var i=0; i<labels.length; i++) {
	//	if(labels[i].htmlFor==label)
	//		addClass(labels[i],'error');
			//labels[i].className='error';
	//}
}
function cleanMarkLabel(whichform){
	var labels=whichform.getElementsByTagName('label');
	for(var i=0; i<labels.length; i++) {
		removeClass(labels[i],'error');
		//labels[i].className='';
	}
}
function getLabelText(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;
}

function getLabel(inputID){
	var labels=document.getElementsByTagName('label');
	for(var i=0; i<labels.length; i++) {
		if(labels[i].htmlFor==inputID)
			return labels[i];
	}
	return false;
}
addLoadEvent(prepareForms);
