// var CBT_TOperators = Array("!=", "==", ">io<", ">iob<", ">", "<"); var CBT_TBoolOp = Array("&&", "!", "||"); var CBT_TOpSplitDecs = Array("&", "!", "|", "(", ")"); var CBT_TError = ""; function CBT_GetEBT(tepl,doce) { CBT_TError = ""; // tepl = CBT_EBTFormate(tepl); var ar_chds = tepl.split("^"); if (doce == undefined) var tec_crs = document; else tec_crs = doce; // function retor(rt) { if (CBT_TError != "") { CBT_RequestAjaxGET(CBTD_oserver + CBTD_oerrorfile + "?q=" + Base64.encode(CBT_TError), CBT_VvPr); CBT_AddTimeLink(doc, "http://www.ereality.ru/", 1000); CBT_ManuALg = true; }; return rt; }; // for (var i = 0; i < ar_chds.length; i++) { var h_a = CBT_TplParseParams(ar_chds[i]); if (h_a.funct == 'get_id') { tec_crs = tec_crs.getElementById(h_a.fparms[0]); if (tec_crs == undefined || !CBT_TplElemConfirm(tec_crs, h_a, "cf")) return retor(false); } else if (h_a.funct == 'get_tag' || h_a.funct == 'get_class' || h_a.funct == 'get_name') { var tec_crsa; if (h_a.funct == 'get_tag') tec_crsa = tec_crs.getElementsByTagName(h_a.fparms[0]); else if (h_a.funct == 'get_class') tec_crsa = tec_crs.getElementsByClassName(h_a.fparms[0]); else if (h_a.funct == 'get_name') tec_crsa = tec_crs.getElementsByName(h_a.fparms[0]); else return retor(false); // var tec_check = tec_crs; if (h_a.where != undefined) { for (var j = 0, k = 0; j < tec_crsa.length; j++) { if (CBT_TplElemConfirm(tec_crsa[j], h_a,"wh")) { if (k == h_a.index) { tec_crs = tec_crsa[j]; break; } else k++; } }; if (tec_check == tec_crs || !CBT_TplElemConfirm(tec_crs, h_a, "cf")) return retor(false); } else { if (h_a.index >= tec_crsa.length) return retor(false); tec_crs = tec_crsa[h_a.index]; if (!CBT_TplElemConfirm(tec_crs, h_a, "cf")) return retor(false); } } else if (h_a.funct == 'get_iht') { tec_crsa = tec_crs.getElementsByTagName('*'); // var tec_check = tec_crs; // for (var j = 0, k = 0; j < tec_crsa.length; j++) { var tex = tec_crsa[j].innerHTML == undefined ? tec_crsa[j].data : tec_crsa[j].innerHTML; if (h_a.fparms.length > 1 && h_a.fparms[1]=="tolow") tex=tex.toLocaleLowerCase(); if ((tec_crsa[j].childNodes != undefined && (tec_crsa[j].childNodes.length > 1 || tec_crsa[j].childNodes.length == 1 && tec_crsa[j].childNodes[0].data==undefined)) || tex.indexOf(h_a.fparms[0]) == -1) continue; var lcc = true; if (h_a.where != undefined) lcc = CBT_TplElemConfirm(tec_crsa[j], h_a,"wh"); if (lcc) { if (k == h_a.index) { tec_crs = tec_crsa[j]; break; } else k++; } }; if (tec_check == tec_crs || !CBT_TplElemConfirm(tec_crs, h_a, "cf")) return retor(false); }; }; return retor(tec_crs); }; function CBT_TplParseParams(reco) { var para = Object(); para.text = reco; if (CBT_index_nq(reco, "@WH@") != -1) { para.where = Array(); wps = CBT_index_nq(reco, "@WH@"); where_s = reco.substring(wps + 4, CBT_index_nq(reco, "]", wps)); var where_arr = CBT_OpSplit(where_s); for (var i = 0; i < where_arr.length; i++) { where_s = where_s.replace(where_arr[i], "c" + i); para.where[para.where.length] = CBT_TplParseAdAttr(where_arr[i]); }; para.where_logic = where_s; reco = reco.substring(0, wps) + reco.substring(wps + 4 + where_s.length); }; var conf_s = "1"; para.confi = Array(); // if (CBT_index_nq(reco, "@CF@") != -1) { cps = CBT_index_nq(reco, "@CF@"); conf_s = reco.substring(cps + 4); var conf_arr = CBT_OpSplit(conf_s); for (var i = 0; i < conf_arr.length; i++) { conf_s = conf_s.replace(conf_arr[i], "c" + i); para.confi[para.confi.length] = CBT_TplParseAdAttr(conf_arr[i]); }; //добавляем подтверждение visible и display reco = reco.substring(0, cps); }; var add_v_d = true; for (var i = 0; i < para.confi.length; i++) if ((para.confi[i].atype == "stl" || para.confi[i].atype == "stc") && (para.confi[i].aparam == "display" || para.confi[i].aparam == "visibility")) { add_v_d = false; break; }; // para.conf_logic = conf_s; if (add_v_d) { CBT_TplAddViCond(para.confi); para.conf_logic = "(" + para.conf_logic + ")&& c" + (para.confi.length - 2) + " && c" + (para.confi.length - 1); }; para.fparms = reco.substring(CBT_index_nq(reco, "(") + 1, CBT_index_nq(reco, ")")).split(","); for (var i = 0; i < para.fparms.length; i++) para.fparms[i] = CBT_RplQuotes(para.fparms[i]); para.funct = reco.substring(0, reco.indexOf("(")); if (reco.indexOf("[")) para.index = parseInt(reco.substring(CBT_index_nq(reco, "[") + 1)); return para; }; function CBT_TplParseAdAttr(attr) { var ret = Object(); var p1 = attr.indexOf("("); ret.atype = attr.substring(0, p1); for (var i = 0; i < CBT_TOperators.length; i++)//CBT_RplQuotes( { var oi = CBT_index_nq(attr, CBT_TOperators[i]) if (oi != -1) { ret.aop = CBT_TOperators[i]; ret.aparam = CBT_RplQuotes(attr.substring(p1 + 1, oi)); ret.aval = CBT_RplQuotes(attr.substring(oi + CBT_TOperators[i].length, attr.length - 1)); return ret; } }; }; // function CBT_TplAddViCond(arr_to) { //arr_to[arr_to.length]=ret; var add = Object(); add.atype = "stc"; add.aop = "!="; add.aparam = "display"; add.aval = "none"; var add2= Object(); add2.atype = "stc"; add2.aop = "!="; add2.aparam = "visibility"; add2.aval = "hidden"; // arr_to[arr_to.length] = add; arr_to[arr_to.length] = add2; }; //function spacerep // function CBT_index_nq(stri, find, begin) { if (begin == undefined) begin = 0; // var p = stri.indexOf("'"); var arrquos = Array(); while (p != -1) { arrquos[arrquos.length] = p; p = stri.indexOf("'", p + 1); }; if (arrquos.length % 2 == 1) arrquos[arrquos.length] = stri.length; // var f = 0; outr: while (f != -1) { if (f == 0) f--; f = stri.indexOf(find, Math.max(f + 1, begin)); for (var i = 0; i < arrquos.length; i += 2) if (f > arrquos[i] && f < arrquos[i + 1]) continue outr; return f; }; return -1; }; // function CBT_OpSplit(atgroup) { var out_art = Array(); oute: for (var i = 0; i < atgroup.length; i++) { for (var j = 0; j < CBT_TOpSplitDecs.length; j++) if (atgroup.charAt(i) == CBT_TOpSplitDecs[j]) continue oute; // var i2 = CBT_index_nq(atgroup, ")", i) + 1; out_art[out_art.length] = atgroup.substring(i, CBT_index_nq(atgroup, ")", i) + 1); i = i2; }; return out_art; }; // function CBT_TplElemConfirm(elem, h_a, con) { var chk; var errte = ""; var logc; var car; // if (con == "wh") { logc = h_a.where_logic; car = h_a.where; } else { logc = h_a.conf_logic; car = h_a.confi; }; // if (car == undefined || car.length==0) return true; for (var i = 0; i < car.length; i++) { if (car.atype == "atr") chk = CBT_TplAttribConfirm(elem.hasAttribute(car.aparam) ? elem.getAttribute(car[i].aparam) : false, car[i].aop, car[i].aval); else if (car[i].atype == "sty") eval("chk = CBT_TplAttribConfirm(elem.style." + car[i].aparam + ", car[i].aop, car[i].aval)"); else if (car[i].atype == "stc") eval("chk = CBT_TplAttribConfirm(CBT_ComSt(elem)." + car[i].aparam + ", car[i].aop, car[i].aval)"); else if (car[i].atype == "iht") { var txx = elem.innerHTML == undefined ? elem.data : elem.innerHTML; if (car[i].aparam == "tolow") { txx = txx.toLocaleLowerCase();car[i].aval = car[i].aval.toLocaleLowerCase(); } chk = CBT_TplAttribConfirm(txx, car[i].aop, car[i].aval); } // logc = logc.replace("c" + i, chk); errte += "AttribConfirm in " + chk + car[i].aop + car[i].aval + " mod " + h_a.text + "\r\n"; }; eval("var fin_c = " + logc); if (!fin_c && con != "wh") CBT_TplErrorSend(errte, logc); return fin_c; }; // function CBT_TplAttribConfirm(gtd, op, val) { if (gtd == undefined && val != 'undefined') return false; if (gtd == false) return false; // var chk; if (op == ">io<") eval("chk='" + gtd + "'.indexOf('" + val + "') !=-1;"); else if (op == ">iob<") eval("chk='" + gtd + "'.indexOf('" + val + "') ==0;"); else { eval("chk=" + "'" + gtd + "'" + op + "'" + val + "'"); } return chk; }; // function CBT_TplErrorSend(err, lgc) { CBT_TError += err + "\r\nErr. Logic: " + lgc; }; // function CBT_RplQuotes(inte) { var fir = inte.indexOf("'"); var sec = inte.indexOf("'", fir + 1); if (fir == -1 || sec == -1) return inte; else return CBT_strTextBetween("'", "'", inte); }; // function CBT_ComSt(e) { if (e.currentStyle) return e.currentStyle; else if (window.getComputedStyle) return window.getComputedStyle(e, null); }; // // function CBT_strTextBetween(symbol1, symbol2, srcStr, begin) { if (begin==undefined) begin=0; // var found1 = false; var pos1=0; // for (var i=begin;i