// --- -------------------------------------------------------------------- ---
// --- 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 valErrorCount = 0;
var valErrors = new Array();
var valRequired = '';
var valMessage = '';
var valValidateList = '';
var valValidateListMode = 'validate';

function validateForm(frm, showmsg, errrequired) {
	if (typeof(tinyMCE) != 'undefined') try { tinyMCE.triggerSave(); } catch(err) { window.status = 'tinyMCE.triggerSave() - ERROR'; }
	if (document.getElementById) {
		try {
			if (typeof(showmsg)=='undefined') showmsg = true;
			if (typeof(errrequired)=='undefined') errrequired = true;
			lastValError=''; fieldValError=''; valErrors = new Array();
			valRequired=errrequired; valMessage=showmsg; valErrorCount=0;
			var formValidated=true; var elValidated=true;
			var els=frm.elements; var l=els.length;
			for (var i=0; i<l; i++) { elValidated = validateElement(els[i], errrequired); if (!elValidated) { fieldValError=els[i].id; addValError(els[i].id); } formValidated=formValidated & elValidated; }
			if (!formValidated && showmsg) validateMessage();
			return formValidated;
		} catch(err) {
			alert(currValEl.id + ' - Ups, napaka pri izvajanju validacije :(');
			return false; 
		}
	} else return false;
}

function validateElement(el,er) {
	if (typeof er == 'undefined') er = true;
	var vName = el.name; 
	var validated = true;
	var valReadonly = false;
	var vParams = el.getAttribute('validate');
	if (!vParams) { 
		if (el.type == 'hidden' && el.name.indexOf('validate_') == 0) 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) return true; }
	}
	// ce je field disablan ali readonly ne izvaja validacije !
	if (!vParams) return true; else { 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 vAReq = 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; vAReq = 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 && er) || vAReq) 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);
	}
	return validated;
}

function addValError(eid) {
	var er=new Object(); er.id=eid; 
	//var e=document.getElementById(eid); if (e) { var a=e.getAttribute('inputName'); if (a!=null && a.length>0) er.inputName = a; }
	er.msg=lastValError; valErrors[valErrors.length]=er;
}

//--- -------------------------------------------------------------------- ---
function validateMessage()  {
	var msg; if (valErrors.length==1) { msg = valStrInput_1+valStrInput_2+valErrors[0].msg; }
	else { 
		msg = valStrForm_1.replace('.\n', ' ('+valErrors.length+').\n'); 
		msg = msg.replace('.\\n', ' ('+valErrors.length+').\n'); 
		msg += valStrForm_2+valStrForm_3+valStrForm_4+valStrForm_5;
		//for (var e=0; e<valErrors.length; e++) msg += '\n'+valErrors[e].id + ':' + valErrors[e].msg;
	}
	var a = msg.split('\\n'); while(a[a.length-1] == '') a.length--; msg = a.join('\n');
	alert(msg);
	if (valErrors.length) try { var fld = document.getElementById(valErrors[0].id); if (fld.type=='text') fld.select(); fld.focus(); } catch(err){}
}

// --- -------------------------------------------------------------------- ---
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 = 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] != '') result = reDate.test(dt[0]) && reTime.test(dt[1]); 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;
}

// --- -------------------------------------------------------------------- ---
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 '00': { if (elS.value.charAt(0) != '-' && elS.value.charAt(elS.value.length-1) != '-')  result = 1; else result = 0; break; }
			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;
}
