var W3CDOM = (document.getElementsByTagName && document.createElement);

///**NASTAVITVE**\\\
var prikaziMsg = false; //e eli da se prikae pod fieldom e sporoilo, ter da se obarva input daj tukaj na true
var prikaziOkno =true; //e eli prikazati box z napakami, daj na true

var inputBorder = "1px solid #c02424"; //obroba inputov e je napaka
var inputBackground = "#fcf4f4"; //ozadje inputov e je napaka

var inputBorderOK = "1px solid #7F7F7F"; //obroba inputov ko ni napake
var inputBackgroundOK = "#fff"; //ozadje inputov ko ni napake
///--------------\\\

var fV = {
	addEvent: function(elm, evType, fn, useCapture) {
		if(elm!=null) {
			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 + "_" + 1);
							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]) {
				length
				if(frm.elements[i].type!='radio' || '_1' == frm.elements[i].id.substring(frm.elements[i].id.length -2))
				{
					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);
						//input element, ki ga lahko kasneje obarvamo
						var inputek = document.getElementById(frm.elements[i].name);
						
						if(failedE && errDisplay) {	
							errDisplay.innerHTML = validationSet[failedE.name]['error'];
							//tukaj lahko postajlamo input ob errorju..
							inputek.style.border=inputBorder;
							inputek.style.background=inputBackground;
						}
						
						if(!failedE && errDisplay) {
							errDisplay.innerHTTML = '';
							//e je kul, mu dajmo original barve nazaj
							inputek.style.border=inputBorderOK;
							inputek.style.background=inputBackgroundOK;
						}
					}
					
					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")) {
				document.location.href = document.location.href.replace('#top', '') + '#top';
				if(prikaziOkno)new Effect.BlindDown("errorMessage", {duration: 0.4});
			}			
			
			if(e && e. preventDefault) {
				
				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);
			//podobna zgodba kot zgoraj
			var inputek = document.getElementById(target.name);
			
			if(failedE && errDisplay) {
				errDisplay.innerHTML = validationSet[failedE.name]['error']; 
				//tudi kle dodano
				inputek.style.border=inputBorder;
				inputek.style.background=inputBackground;
			}
			if(!failedE && !errDisplay) {
				alert(validationSet[failedE.name]['error']);
			}
				
			if(!failedE && errDisplay) {				
				errDisplay.innerHTML = '';
				//pa e kle
				inputek.style.border=inputBorderOK;
				inputek.style.background=inputBackgroundOK;
			}
		}
		
	},
	
	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);
