function leto_rojstva(field) {
	var currentTime = new Date();
	var year = currentTime.getFullYear();
	if(field.value>(year-150) && field.value<year) {
		return false;		
	} else {
		return true;
	}
}

var W3CDOM = (document.getElementsByTagName && document.createElement);

var prikaziMsg = false; //če želiš da se prikaže pod fieldom še sporočilo daj tukaj na true

var fV = {
	addEvent: function(elm, evType, fn, useCapture) {
		
		if(elm.addEventListener) {
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if(elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn;
		}
	},
	
	init: function() {
		for (var i in validationSet) {
			if(document.getElementsByName(i)) {
				var formField = document.getElementsByName(i)[0];
				if(!formField) {
					alert(i);
				} else {
					if(formField.type=="radio") {
						elm1 = document.getElementsByName(formField.name);	
						for (j = 0 ; j<elm1.length ; j++){
							formField1 = document.getElementById(formField.name + "_" + j);
							fV.addEvent(formField1, 'blur', fV.checkValid, false);
						}						
					} else {
						fV.addEvent(formField, 'blur', fV.checkValid, false);
					}				
					if(!formField.form.validateSubmit) {
	
						fV.addEvent(formField.form, 'submit', fV.checkValidSubmit, false);
						formField.form.onsubmit = fV.checkSubmit;  //Safari
						formField.form.validateSubmit = true;
					}
				}
			}
		}
	},
	
	checkValidSubmit: function(e) {
		var frm = window.event ? window.event.srcElement : e ? e.target : null;
		if(!frm) return;
		var errText = [];
		
		if (frm.elements!=undefined) {
			for (var i=0; i < frm.elements.length; i++) {
				
				if(frm.elements[i].name && validationSet[frm.elements[i].name]) {
					
					var failedE = fV.handleValidity(frm.elements[i]);
					
					if (W3CDOM && failedE) { 
						if (!Element.hasClassName(frm.elements[i],'errorElement')) {
						  	Element.addClassName(frm.elements[i],'errorElement');
						}
						frm.elements[i].onchange = fV.removeError;		
					}			
					
					if(prikaziMsg) {
						var errDisplay = document.getElementById('error_' + frm.elements[i].name);
						
						if(failedE && errDisplay) {	
							errDisplay.innerHTML = validationSet[failedE.name]['error'];
						}
						
						if(!failedE && errDisplay) {
							errDisplay.innerHTTML = '';
						}
					}
					
					if(failedE) {
						var labels = document.getElementsByTagName('label');
						if(validationSet[failedE.name]['error']!='')
						{
							
							errText[errText.length] = validationSet[failedE.name]['error'];
							for(var j=0; j < labels.length; j++) {						
								if(labels[j].htmlFor == failedE.id) {
									errText[errText.length - 1] += ' (\'' + labels[j].firstChild.nodeValue + '\')';
								}
							}
						}
					}
				}
			}			
		}


		
		if(errText.length > 0) {
			frm.submitAllowed = false;
			if (!W3CDOM) {
				alert(errText.join('\n'));
			}			
			Element.update('errorMessage', '<ul><li>'+errText.join('</li><li>')+'</li></ul>' )
			if (!Element.visible("errorMessage")) {
				new Effect.BlindDown("errorMessage", {duration: 0.4});
			}			
			//alert('aa');
			
			if(e && e.stopPropagation && e. preventDefault) {
				e.StopPropagation();
				e.preventDefault();
			}
			if(window.event) {
				window.event.cancleBubble = true;
				window.event.returnValue = false;
				return false;
			}
		} else {
			frm.submitAllowed = true;
		}

	},
	
	checkSubmit: function() {
		if(this.submitAllowed==undefined) fV.checkValidSubmit();
		return this.submitAllowed;
	},
	
	removeError: function() {
	  Element.removeClassName(this,'errorElement');
	  this.onchange = null;
	},	
	
	checkValid: function(e) {
		var target=window.event ? window.event.srcElement : e ? e.target : null;
		if (!target) return;
		
		var failedE = fV.handleValidity(target);
		if (W3CDOM && failedE) { 
			if (!Element.hasClassName(target,'errorElement')) {
			  	Element.addClassName(target,'errorElement');
			}
			target.onchange = fV.removeError;		
		}			
		
		if(prikaziMsg) {
			var errDisplay = document.getElementById('error_' + target.name);
	
			if(failedE && errDisplay) {
				errDisplay.innerHTML = validationSet[failedE.name]['error']; 
			}
			if(!failedE && !errDisplay) {
				alert(validationSet[failedE.name]['error']);
			}
				
			if(!failedE && errDisplay) {				
				errDisplay.innerHTML = '';
			}
		}
		
	},
	
	notempty: function(field) {
		if(field.value=="") {		
			return true;		
		} else {
			return false;
		}
	},
	
	
	handleValidity: function(field) {
		var func = validationSet[field.name]['func'];
		var re = validationSet[field.name]['regexp'];
		var notempty = validationSet[field.name]['notempty'];
		
		if(notempty) {
			var empty = fV.notempty(field);
			if(empty) {
				return field;
			}			
		} else {
			if(!field.value) {
				return null;
			}			
		}
		
		if(func == '-') {
		} else {	
			if(func=='leto_rojstva') {
				var nileto = leto_rojstva(field);
				if(nileto) {
					return field;
				}			
			} else {
				aa = getFunc(func, field);
				if (!aa) {
					return field;
				}
			}
		}

		if(re!='-') {
			if(!field.value.match(re)) {
				return field;
			} else {
				return null;
			}
		}
	}	
	
}


	
fV.addEvent(window, 'load', fV.init, false);
