/*
         ___                         _____       __
        /  /\        ________       /    /\     / /\
(-----//  /  \//----/_____/__\\--) /____/  \___/_/ //--------------------------)
      /  /   /      \     | //     \    \  /    /\/    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!';
	formAlert['pdf']='Bitte ein PDF auswählen!';
	formAlert['agb']='Bitten den AGBs zustimmen!';
}
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';
					}
				}
			}else if(labels[i].className.indexOf('image') != -1){
				if (!isImage(labels[i].htmlFor)) {
					markLabel(labels[i]);
					if(!firstErrorElement){
						firstErrorElement=document.getElementById(labels[i].htmlFor);
						errorType='image';
					}
				}
			}else if(labels[i].className.indexOf('pdf') != -1){
				/*if (!isPdf(labels[i].htmlFor)) {
					markLabel(labels[i]);
					if(!firstErrorElement){
						firstErrorElement=document.getElementById(labels[i].htmlFor);
						errorType='pdf';
					}
				}*/
			}else if(labels[i].className.indexOf('agb') != -1){
				if(!document.getElementById(labels[i].htmlFor).checked){
					markLabel(labels[i]);
					if(!firstErrorElement){
						firstErrorElement=document.getElementById(labels[i].htmlFor);
						errorType='agb';
					}
				}
			}
		}
	}
	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 isImage(fieldID){
	var field=document.getElementById(fieldID);
	var extension=field.value.substr(field.value.lastIndexOf('.')+1).toLowerCase();
	if(extension=='jpeg' || extension=='jpg' || extension=='png' || extension=='gif'){
		return true;
	}else{
		return false;
	}
}
/*function isPdf(fieldID){
	var field=document.getElementById(fieldID);
	var extension=field.value.substr(field.value.lastIndexOf('.')+1).toLowerCase();
	if(extension=='pdf'){
		return true;
	}else{
		return false;
	}
}*/
function prepareForms() {
	for(var i=0; i<document.forms.length; i++) {
		var thisform = document.forms[i];
		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);
