// --- -------------------------------------------------------------------- ---
// --- Javascript form validation routines.
// --- -------------------------------------------------------------------- ---

var reWhitespace = /^\s+$/;
var reLetter = /^[a-zA-Z]$/;
var reAlphabetic = /^[a-zA-Z]+$/;
var reAlphanumeric = /^[a-zA-Z0-9]+$/;
//var reAlphanumeric = /^[a-zA-Z0-9\u0268\u0269]+$/;
//var reAlphanumeric = /^\w+$/;
var reDigit = /^\d/;
var reLetterOrDigit = /^([a-zA-Z]|\d)$/;
var reInteger = /^[-]?(\d{1,3}(\.\d{3})*|(\d+))?$/;
var reFloat = /^[-]?(\d{1,3}(\.\d{3})*|(\d+))(\,\d{1,})?$/;
var reEmail = /^\w+([\.\-]\w+)*@\w+([\.\-]\w+)*\.[a-z]{2,4}$/i;
var reDate = /^(?:(?:31(-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$/;
var reTime = /^([0-9]|[0-1][0-9]|[2][0-3]):([0-5][0-9])$/;
var reTelnum = /^(((\+{1,2})\d)|\d)[0-9\()\ ]{1,}$/;
//var digitSeparators = false;
//var modifiyValues = false;

// --- -------------------------------------------------------------------- ---
function isEmpty(s) { return ((s == null) || (s.length == 0)); } 
function isLenMin(s,l,e) { return (l.toString() == '') ? true : (e) ? (s.length >= l) : (s.length > l); }
function isLenMax(s,l,e) { return (l.toString() == '') ? true : (e) ? (s.length <= l) : (s.length < 1); }
function isValMin(s,v,e) { return (v.toString() == '') ? true : (e) ? (s >= v) : (s > v); }
function isValMax(s,v,e) { return (v.toString() == '') ? true : (e) ? (s <= v) : (s < v); }
function isDTMin(d,l,e) { return isValMin(d,l,e); } // samo zaradi compatibilnosti (ne uporabljaj vec !!!)
function isDTMax(d,l,e) { return isValMax(d,l,e); } // samo zaradi compatibilnosti (ne uporabljaj vec !!!)

// --- -------------------------------------------------------------------- ---
function getIdValue(s) { try { if (s.indexOf('ID:') != -1) { var el = document.getElementById(s.split(':')[1]); if (el) return el.value; } else { return s; } } catch(e) {}; return s; }
function createDT(v) { return (v == '') ? '' : createDate(v); } /*MM/DD/YYYY HH:MM*/
function createDate(v) { if (v == '') return ''; var dt = v.split(' '); var d = dt[0].split('.'); if (dt.length == 2) { var t = dt[1].split(':'); return new Date(d[2], d[1]-1, d[0], t[0], t[1]); } else { return new Date(d[2], d[1]-1, d[0]); } } /*MM/DD/YYYY*/
function createTime(v) { if (v == '') return ''; var t = v.split(':'); return new Date(1900,0,0,t[0],t[1],0); } /*HH:MM*/
// --- -------------------------------------------------------------------- ---
var lastValError = '';
var fieldValError = '';
var currValEl = '';
var valRequired = '';
var valMessage = '';
var valValidateList = '';
var valValidateListMode = 'validate';
function validateForm(frm, showmsg, errrequired) {
	//var start = new Date().getTime();
	if (typeof(tinyMCE) != 'undefined') tinyMCE.triggerSave();
	if (document.getElementById) {
		valProgress(true);
		try {
			lastValError = '';
			fieldValError = '';
			if (typeof(showmsg)=='undefined') showmsg = true;
			if (typeof(errrequired)=='undefined') errrequired = true;
			
			valRequired = errrequired;
			valMessage = showmsg;
			//if (valValidateList != '') var arrEls = valValidateList.split(',');
			var formValidated = true;	
			var els = frm.elements;
			var l = els.length;
			for (var i=0; i<l; i++) {
				var el = els[i];
				var vName = el.name; 
				var validated = true;
				var vParams = el.getAttribute('validate');
				if (!vParams) { 
					if (el.type == 'hidden' && el.name.match('validate_')) vParams = el.value;
					if (vParams) { vName = el.name.replace('validate_', ''); el = document.getElementById(vName); if (el == null) el = document.getElementsByName(vName)[0]; } if (el == null) continue;
				}
				// ce je field disablan ali readonly ne izvaja validacije !
				var valReadonly = (vParams && vParams.indexOf('validateReadonly') != -1) ? true : false;
				if (el.disabled || el.readOnly) { if (!valReadonly) vParams = ''; }
				// ce je dolocena lista elementov se [ne] validirajo elementi iz liste 
				if (valValidateList != '' && vParams) { var found = valValidateList.indexOf(vName); if (valValidateListMode == 'validate') { if (found == -1) vParams = ''; } else { if (found > -1) vParams = ''; } }
				if (vParams) {
					vParams = vParams.split(';');
					var vType = '';
					var vReg = '';
					var vReq = false;
					var vFld = '';
					var vFnc = '';
					var vMsg = '';
					var vMin = ''; var vMax = '';
					var lMin = ''; var lMax = '';
					for (var v=0; v < vParams.length; v++) {
						vP = vParams[v].split('=');
						switch(vP[0]) {
							case 'alwaysRequired': vReq = true; break;
							case 'required': vReq = true; break;
							case 'regexp': vReg = vP[1]; break;
							case 'fnc': vFnc = vP[1]; break;
							case 'fld': vFld = vP[1]; break;
							case 'min': vMin = vP[1]; break;
							case 'max': vMax = vP[1]; break;
							case 'lmin': lMin = vP[1]; break;
							case 'lmax': lMax = vP[1]; break;
							case 'msg': vMsg = vP[1]; break;
							case 'sklic': vType = 'sklic'; vFld = vP[1]; break;
							default: vType = vP[0]; break;
						}
					}
					//alert(vName+' (vType:'+vType+') required:'+vReq+'\n\nvMin:'+vMin+', vMax:'+vMax+'\n\nlMin:'+lMin+', lMax:'+lMax+'\n\nvReg:'+vReg+'\n\nvMsg:'+vMsg+'\n\nvFnc:'+vFnc+'\n\nvFld:'+vFld);
					currValEl = el; // Trenutni element validacije
					if (vReq && errrequired) validated = validateRequired(el,vFld,valReadonly);
					
					if (vFnc != '' && validated) { try { if (vFnc.indexOf("(") == -1) validated = eval(vFnc+'()'); else validated = eval(vFnc); } catch (e) { validated = false; lastValError = 'Error executing '+vFnc; } }  if (!validated && vMsg != '') lastValError = vMsg;
					if (validated && vReg != '') validated = validateRegExp(el,vReg); if (!validated && vMsg != '') lastValError = vMsg;
					if (validated && vType != '') { 
						switch(vType) {
							case 'integer': validated = validateInteger(el); break;
							case 'float': validated = validateFloat(el); break;
							case 'string': validated = validateString(el); break;
							case 'datetime': validated = validateDT(el); break;
							case 'date': validated = validateDate(el); break;
							case 'time': validated = validateTime(el); break;
							case 'email': validated = validateEmail(el); break;
							case 'telnum': validated = validateTelnum(el); break;
							case 'sklic': validated = validateSklic(el,vFld); break;
						}
					}
					if (validated && (vMin != '' || vMax != '')) {
						switch(vType) {
							case 'datetime': validated = validateDTRange(el,vMin,vMax); break;
							case 'date': validated = validateDateRange(el,vMin,vMax); break;
							case 'time': validated = validateTimeRange(el,vMin,vMax); break;
							default: validated = validateRange(el,vMin,vMax); break;
						}
					}
					if (validated && (lMin != '' || lMax != '')) validated = validateLength(el,lMin,lMax);
					setValidationStatus(el, vFld, vReq, validated, lastValError);
					formValidated = formValidated & validated;
					if (!validated) fieldValError = vName;
				}
			}
			delete el;
			
			//time = new Date().getTime() - start;
			//window.status = 'validation time: '+ time + 'ms';
			valProgress(false);
			if (!formValidated && showmsg) { window.status = fieldValError+':'+lastValError; alert(valStrForm); } 
			return formValidated;
		} catch(err) {
			valProgress(false);
			window.status = vName+': vType:'+vType+', required:'+vReq+', vMin:'+vMin+', vMax:'+vMax+', lMin:'+lMin+', lMax:'+lMax+', vReg:'+vReg+', vFnc:'+vFnc+', vFld:'+vFld;
			alert(currValEl.id + ' - Ups, napaka pri izvajanju validacije :(');
			return false; 
		}
	} else return false;
}

function valProgress(show) {
	var d = document.getElementById("divHide");
	if (d == null) { d = document.createElement("DIV"); d.id = "divHide"; d.className = "hideDiv"; d.style.zIndex = 10000; document.body.appendChild(d); }
	if (show) {
		var db = (document.compatMode=="CSS1Compat") ? document.documentElement : document.body;
		var h = (db.clientHeight && !window.opera) ? db.clientHeight: window.innerHeight; h  = (db.offsetHeight > db.scrollHeight) ? db.offsetHeight : db.scrollHeight;
		var s = d.style; s.left = 0; s.top = 0; s.width = 100+"%"; s.height = h+"px"; s.visibility = "visible"; s.display = "block";
		if (document.all && document.getElementById) { // IE hack, ker je butast in ne zna narisat diva cez select
			var iFrm = document.getElementById("divFrameHide");
			if (iFrm == null) { iFrm = document.createElement('IFRAME'); iFrm.setAttribute('src', ''); iFrm.id = "divFrameHide"; iFrm.className = "hideFrame"; document.body.appendChild(iFrm); }
			var s = iFrm.style; s.left = 0; s.top = 0; s.width = 100+"%"; s.height = h+"px"; s.zIndex = d.style.zIndex - 1; s.visibility = "visible"; s.display = "block";
			document.body.scrollTop = document.body.scrollTop + 1;
		}
	} else { 
		d.style.display = 'none';
		var iFrm = document.getElementById("divFrameHide"); if (iFrm) iFrm.style.display = "none";
	}
}

// --- -------------------------------------------------------------------- ---
function elHighlight(e, v, msg) { 
	if (v) { if (e.className && e.className.indexOf('valErrorHighlight') != -1) e.className = e.className.replace(/valErrorHighlight/g, ''); e.title = ''; } 
	else { if (e.className.indexOf('valErrorHighlight') == -1) e.className += ' valErrorHighlight'; e.title = msg; } 
}

function elSpan(e, req, v, msg) {
	if (v) { var s = e.getAttribute('star'); if (s == null) s = '*'; if (req) e.innerHTML = s; else { if (s != '') e.innerHTML = '&nbsp;';  else e.innerHTML = ''; } } 
	else { if (msg != '') { e.innerHTML = '<a class="valError" href="javascript:alert(\''+msg+'\')">! </a>'; } else { e.innerHTML = '<span class="valError">? </span>'; } }
} 

function setValidationStatus(el, ll, req, val, msg) {
	var e; var e = document.getElementById('s'+el.name); if (e) elSpan(e, req, val, msg);
	var highlight = true; var h = el.getAttribute('valhighlight'); if (h != null && h.length > 0) highlight = eval(h);
	if (highlight) { 
		var a = msg.split('\\n'); while(a[a.length-1] == '') a.length--; msg = a.join('\n'); if (el) elHighlight(el, val, msg); a = ll.split(',');
		for (var i=0; i < a.length; i++) { l = a[i].replace('|', ''); e = document.getElementById(l); if (e) elHighlight(document.getElementById(l), val, msg); }
	}
};

// --- -------------------------------------------------------------------- ---
function validateRegExp(el, regex) { 
	if (el.disabled || el.readOnly) return true; else { var re = new RegExp(regex); return re.test(el.value); }
}

// --- -------------------------------------------------------------------- ---
function validateRequired(el,ll,vr) {	
	var result = validateRequiredObj(el,vr); var l,e,r,or;
	if (typeof(ll) == 'object') result = result && validateRequiredObj(ll, true); 
	if (typeof(ll) == 'string' && ll != '') { 
		var a = ll.split(',');
		for (var i=0; i < a.length; i++) {
		 	l = a[i]; 
 			if (typeof(el.srch) == 'object' && el.srch.multiEls != null) {
 					if (el.srch.multiMin > el.srch.multiEls.length) { lastValError = valStrSelMin+' '+el.srch.multiMin; return false; }
					if (el.srch.multiMax < el.srch.multiEls.length) { lastValError = valStrSelMax+' '+el.srch.multiMax; return false; }
					if (el.srch.multiEls.length == 0) return false;
					for(var j=0; j<el.srch.multiEls.length; j++) { e = document.getElementById(el.srch.multiEls[j]); result = validateRequiredObj(e, true); if (!result) return false; }
 			} else {
			 	if (l.indexOf('|') == 0) { or = true; l = l.replace('|', ''); } else or = false;
				e = document.getElementById(l); if (e) { r = validateRequiredObj(e, true); if (or) { if (r) return true; } else result = result && r; }
 			}
		}
	}
	return result;
}

function validateRequiredObj(el,validateAll) {
	var i,rg,c,result = '';
	if (el) {
		result = false;
		//alert('validateRequiredObj ('+el.id+') type:'+el.type);
		if ((typeof(validateAll) == 'undefined' || !validateAll) && (el.disabled || el.readOnly)) return true;
		switch (el.type) {
			case 'textarea': case 'text': case 'file': case 'password': { result = !(isEmpty(el.value) || reWhitespace.test(el.value)); if (!result) lastValError = valStrRequired; break; }
			case 'hidden': { result = !(isEmpty(el.value) || reWhitespace.test(el.value)); if (!result) lastValError = valStrRequiredHidden; break; }
			case 'select-one': { i = el.selectedIndex; if (i < 0) { result = false; lastValError = valStrSelectRequired; break; } if (el.options.length && i <= el.options.length) result = (el.options[i].value != '' && el.options[i].value != 'NULL'); else result=false; if (!result) lastValError = valStrSelectRequired; break; }
			case 'select-multiple': { c = false; for(i=0; i<el.options.length; i++) { if (el.options[i].selected && el.options[i].value != '' && el.options[i].value != 'NULL') { c = true; break; } } result = c; if (!c) lastValError = valStrSelectRequired; break; }
			case 'radio': { rg = el.form.elements[el.name]; if (rg.type == "radio") c = rg.checked; else { c = false; for(i=0; i<rg.length; i++) { if (rg[i].checked) { c = true; break; } } } result = c; if (!c) lastValError = valStrRadioRequired; break; }
			case 'checkbox': { rg = el.form.elements[el.name]; if (rg.type == "checkbox") c = rg.checked; else { c = false; for(i=0; i<rg.length; i++) { if (rg[i].checked) { c = true; break; } } } result = c; if (!c) lastValError = valStrRadioRequired; break; }
			//default: { result = true; break; }
		}
		//alert('validateRequiredObj ('+el.id+') type:'+el.type+', result:'+result);
		return result;
	} else return true;
}

// --- -------------------------------------------------------------------- ---
function validateInteger(el) {
	if (!el.value.length || el.disabled) result = true; else { var val = el.value; result = reInteger.test(val); lastValError = valStrInteger; }
	return result;
}

function validateFloat(el) {
	if (typeof(sep) == 'undefined' || sep == '') sep = 0;
	if (typeof(pre) == 'undefined' || pre == '') pre = 0;
	var sign = ( val < 0 ? '-': '' );
	if (!el.value.length || el.disabled) result = true; else { var val = el.value; result = reFloat.test(val); lastValError = valStrFloat; }
	return result;
}

function validateString(el) {
	if (!el.value.length || el.disabled) result = true; else { result = reAlphanumeric.test(el.value); if (!result) lastValError = valStrString; }
	return result;
}

// --- -------------------------------------------------------------------- ---
function validateDT(el) {
	if (!el.value.length || el.disabled) result = true; else { 
		var dt = el.value.split(' ');
		if (dt.length == 2 && dt[0] != '' && dt[1] != '') {
			var t = dt[1].split(':');
			if (t.length == 2 && t[0] != '' && t[1].length == 2) result = reDate.test(dt[0]) && (t[0] >= 0 && t[0] <= 24) && (t[1] >= 0 && t[1] <= 59); else result = false;
		} else result = false;
		if (!result) lastValError = valStrDatetime;
	}
	return result;
}

function validateDate(el) {
	if (!el.value.length || el.disabled) result = true; else { result = reDate.test(el.value); if (!result) lastValError = valStrDate; }
	return result;
}

function validateTime(el) {
	if (!el.value.length || el.disabled) result = true; else { result = reTime.test(el.value); if (!result) lastValError = valStrTime; }
	return result;
}

// --- -------------------------------------------------------------------- ---
function validateEmail(el) {
	if (!el.value.length || el.disabled) result = true; else { result = reEmail.test(el.value); if (!result) lastValError = valStrEmail; }
	return result;
}

function validateTelnum(el) {
	if (!el.value.length || el.disabled) result = true; else { result = reTelnum.test(el.value); if (!result) lastValError = valStrTelnum; }
	return result;
}

// --- -------------------------------------------------------------------- ---
function validateRange(el,mn,mx) {
	if (!el.value.length || el.disabled) result = true; else { 
		var elV = el.value.replace(/\./g,'').replace(',','.'); if (elV != '') elV = Number(elV);
		var mnE = true; if (mn.indexOf('!') == 0) { mn = mn.replace('!', ''); mnE = false; } var mnV = getIdValue(mn); var mnVV = mnV.replace(',','.'); if (mnVV != '') mnVV = Number(mnVV);  
		var mxE = true; if (mx.indexOf('!') == 0) { mx = mx.replace('!', ''); mxE = false; } var mxV = getIdValue(mx); var mxVV = mxV.replace(',','.'); if (mxVV != '') mxVV = Number(mxVV); 
		result = isValMin(elV, mnVV, mnE) && isValMax(elV, mxVV, mxE);
		if (!result) lastValError = valStrRange(elV, mnV, mnE, mxV, mxE);
	}
	return result;
}

// --- -------------------------------------------------------------------- ---
function validateDTRange(el,mn,mx) {
	if (!el.value.length || el.disabled) result = true; else { 
		var elDT = createDT(el.value);
		var mnE = true; if (mn.indexOf('!') == 0) { mn = mn.replace('!', ''); mnE = false; } var mnV = getIdValue(mn); var mnDT = createDT(mnV);
		var mxE = true; if (mx.indexOf('!') == 0) { mx = mx.replace('!', ''); mxE = false; } var mxV = getIdValue(mx); var mxDT = createDT(mxV);
		result = isValMin(elDT, mnDT, mnE) && isValMax(elDT, mxDT, mxE);
		if (!result) lastValError = valStrRange(el.value, mnV, mnE, mxV, mxE);
	}
	return result;
}

function validateDateRange(el,mn,mx) {
	if (!el.value.length || el.disabled) result = true; else { 
		var elD = createDate(el.value);
		var mnE = true; if (mn.indexOf('!') == 0) { mn = mn.replace('!', ''); mnE = false; } var mnV = getIdValue(mn); var mnD = createDate(mnV);
		var mxE = true; if (mx.indexOf('!') == 0) { mx = mx.replace('!', ''); mxE = false; } var mxV = getIdValue(mx); var mxD = createDate(mxV);
		result = isValMin(elD, mnD, mnE) && isValMax(elD, mxD, mxE);
		if (!result) lastValError = valStrRange(el.value, mnV, mnE, mxV, mxE);
	}
	return result;
}

function validateTimeRange(el,mn,mx) {
	if (!el.value.length || el.disabled) result = true; else { 
		var elT = createTime(el.value);
		var mnE = true; if (mn.indexOf('!') == 0) { mn = mn.replace('!', ''); mnE = false; } var mnV = getIdValue(mn); var mnT = createTime(mnV);
		var mxE = true; if (mx.indexOf('!') == 0) { mx = mx.replace('!', ''); mxE = false; } var mxV = getIdValue(mx); var mxT = createTime(mxV);
		result = isValMin(elT, mnT, mnE) && isValMax(elT, mxT, mxE);
		if (!result) lastValError = valStrRange(el.value, mnV, mnE, mxV, mxE);
	}
	return result;
}

// --- -------------------------------------------------------------------- ---
function validateLength(el,mn,mx) {
    if (!el.value.length || el.disabled) result = true; else { 
		var mnE = true; if (mn.indexOf('!') == 0) { mn = mn.replace('!', ''); mnE = false; } var mnL = getIdValue(mn);
		var mxE = true; if (mx.indexOf('!') == 0) { mx = mx.replace('!', ''); mxE = false; } var mxL = getIdValue(mx);
		result = isLenMin(el.value, mnL, mnE) && isLenMax(el.value, mxL, mxE); 
		if (!result) lastValError = valStrLength(el.value.length, mnL, mnE, mxL, mxE);
	}
	return result;
}

// --- -------------------------------------------------------------------- ---
function formatValue(el,type) {
	if (type == 'float') { val = el.value; }
	return;
}

// --- -------------------------------------------------------------------- ---
var valStrForm = valStrForm_1 + valStrForm_2 + valStrForm_3 + valStrForm_4 + valStrForm_5;

// --- -------------------------------------------------------------------- ---
function valStrRange(val,mn,mnE,mx,mxE) {
	var result = valStrRange_1;
	if (mn != "" && mx != "") { result += valStrRange_2; if (!mnE) result += " !"; result += " ["+mn+"] " + valStrRange_5; if (!mxE) result += " !"; result += " ["+mx+"]."; }
	if (mn != "" && mx == "") { result += valStrRange_3; if (!mnE) result += " !"; result += " ["+mn+"]."; }
	if (mn == "" && mx != "") { result += valStrRange_4; if (!mxE) result += " !"; result += " ["+mx+"]."; }
	return result;
}

function valStrLength(val,mn,mnE,mx,mxE) {
	var result = valStrLength_1;
	if (mn != "" && mx != "") { result += valStrLength_2; if (!mnE) result += " !"; result += " ["+mn+"] " + valStrLength_6; if (!mxE) result += " !"; result += " ["+mx+"]."; }
	if (mn != "" && mx == "") { result += valStrLength_3; if (!mnE) result += " !"; result += " ["+mn+"]."; }
	if (mn == "" && mx != "") { result += valStrLength_4; if (!mxE) result += " !"; result += " ["+mx+"]."; }
	result += valStrLength_5 + " ["+val+"].";
	return result;
}

function valStrPrecision(pr) { 
	var result = valStrPrecision_1 + " " + pr;
	switch (pr) {
		case 1: result += valStrPrecision_2; break;
		case 2: result += valStrPrecision_3; break;
		case 3: case 4: result += valStrPrecision_4; break;
		default: result += valStrPrecision_5; break;
	}
	return result;
}

//--- -------------------------------------------------------------------- ---
//izracun kontrolne stevilke po modulu 11
function sklicKS(p) { 
	var l = p.length; var v = 0; var m = 2;
	var ks = parseInt(p.charAt(l-1)); 
	for (i=l-2; i >= 0; i--) { v = v + (parseInt(p.charAt(i)) * m); m++; }
	var o = v % 11; var i = 11 - o;
	if (i >=10) i = 0; //ce je rezultat vecji ali enak 10, se smatra, da je 0
	if (i == ks) return 1; else return 0;
}

function validateSklic(elS, mId) {
	var elM = document.getElementById(mId);
	var p = elS.value.split('-'); var l = p.length; var result = 1; var v = 0; var sMax = 12; var pMax = 3; var pMin = 1;
	if (elM.value == '12') { sMax = 13; pMax = 1; } //izjema je model 12, kjer je lahko 13 znakov v sklopu
	for (var i=0; i < l; i++) { //preverimo, ce so vsi znaki v vseh sklicih numericni
		if (/[^0-9]/.test(p[i])) { /*alert('ni številka !');*/ result = 0; break; }
		else {
			if (elM.value != '00') { // samo ce je model razlicen od 00
				if (i > 0) {
					//ce je vodilna nicla pri sklopu 2 ali sklopu 3
					if (p[i].charAt(0) == '0') { /*alert('Vodilna ničla ne sme biti v '+ (i+1) +'. sklopu podatkov');*/ result = 0; break; }
				}
				//ce je posamezni sklop podatkov daljsi od dovoljenega
				if (p[i].length > sMax) { /*alert('Sklop podatka je daljsi od ' + maxStZnakovSklop + ' znakov');*/ result = 0; break; } else v = v + p[i].length;
			}
		}
	}
	
	if (result) {
		//ce skupaj znaki presegajo 20 znakov
		if (v > 20) { /*alert('skupna vsota znakov presega 20');*/ result = 0; }
		if ('07,09,11,18,19,28,38,40,41,48,49,51,58'.search(elM.value) > -1) pMin = 2; //modeli z minimalnim naborom podatkov = 2
		if ('01,02,03,04,06,08,10'.search(elM.value) > -1) pMin = 3; //modeli z minimalnim naborom podatkov = 3
		if ((l < pMin) || (l > pMax)) { /*alert('Stevilo podatkov v sklicu ne ustreza');*/ result = 0; } //v primeru, da se stevilo sklopov ne ujema
	}
	if (result) {
		var ss = "";
		switch (elM.value) {				
			case '01': { for (var i = 0; i < l; i++) { ss = ss + p[i]; } result = sklicKS(ss); break; } // (P1 - P2 - P3) K 
			case '02': { result = 1; for (var i = 0; i < l; i++) { if (i > 0) if (sklicKS(p[i]) == 0) result = 0; } break; } // P1 - (P2) K - (P3) K
			case '03': { result = 1; for (var i = 0; i < l; i++) { if (sklicKS(p[i]) == 0) result = 0; } break; } // (P1) K - (P2) K - (P3) K 
			case '04': { result = 1; for (var i = 0; i < l; i++) { if (i!=1) if (sklicKS(p[i]) == 0) result = 0; } break; } // (P1) K - P2 - (P3) K 
			case '05': case '55': case '12': { result = sklicKS(p[0]); break; } // (P1) K - P2 - P3
			case '06': { for (var i = 0; i < l; i++) { if (i > 0) ss = ss + p[i]; } result = sklicKS(ss); break; } // P1 - (P2 - P3) K 
			case '07': { result = sklicKS(p[1]); break; } // P1 - (P2) K - P3 
			case '08': { ss = p[0] + p[1]; if (sklicKS(ss) == 1 && sklicKS(p[2]) == 1) result = 1; else result = 0; break; } // (P1 - P2) K - (P3) K 
			case '09': { ss = p[0] + p[1]; result = sklicKS(ss); break; } // (P1 - P2) K - P3 
			case '10': { ss = p[1] + p[2]; if (sklicKS(ss) == 1 && sklicKS(p[0]) == 1) result = 1; else result = 0; break; } // (P1) K - (P2 - P3) K 
			case '11': case '18': case '19': case '28': case '38': case '40': case '41': case '48': case '49': case '51': case '58': { if (sklicKS(p[0]) == 1 && sklicKS(p[1]) == 1) result = 1; else result = 0; break; } // (P1)K - (P2)K - P3
			default: result = 1; 
		}
	}
	if (!result) lastValError = valStrSklic;
	return result;
}