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 = [];
		frm.submitAllowed = true;
		for (var i=0; i < frm.elements.length; i++) {
			
			if(frm.elements[i].name && validationSet[frm.elements[i].name]) {
			    
                if(frm.elements[i].type!='radio' | (frm.elements[i].type=='radio' && frm.elements[i].id==frm.elements[i].name+"_0")) {
    
                    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'];
                            new Effect.Highlight(errDisplay,{duration:1.5});   
                        }
                        
                        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: 1.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;
			}
             
		} 
		
		frm.submitAllowed = true;
		if(window.event) {
			window.event.cancleBubble = false;
			window.event.returnValue = true;
			return 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);
