/*

         ___                         _____       __

        /  /\        ________       /    /\     / /\

(-----//  /  \//----/_____/__\\--) /____/  \___/_/ //--------------------------)

      /  /   /      \     | //     \    \  /    /\/    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);
