-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRed.min.js
27 lines (20 loc) · 26.3 KB
/
Red.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
###### ####### ###### ##### ####### ###### ####### ######
# # # # # # # # # # # # # #
# # # # # # # # # # # # #
###### ##### # # # # # # # ##### ######
# # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # ####### ###### ##### ####### ###### ####### # #
RedJS
Version 1.01
License : MIT
Note: this Code is Minified, All Function Names, Varibales and IF Statement has Been Shorted
to Provide Best Script Downloading Speed.
* DO NOT TRY TO EXTEND THIS CODE !
* For That Reference to Pure Red.js
Coded By RedCoder
http://redframework.ir
*/
"use strict";
var Red = { app: { m: {}, s: {}, module: function (m, cs) { this.m[m] = {'cs': {}, 'ms': {}, 'rs': {}}; if (cs) { Object.keys(cs).forEach(function (k) { var c = k; var cons = cs[k]; Red.app.m[m]['cs'][c] = {f: cons, v: [], i: [],}; Red.app.aM(m, c); var i = new Red.app.m[m]['cs'][c]['f']; Red.app.m[m]['cs'][c]['i'] = i; var ae = document.querySelector('[red-app=' + m + ']'); if (ae.getAttribute('red-controller') == null) { Array.prototype.slice.call(ae.querySelectorAll('[red-controller=' + c + ']')).map(function (ce) { if (!ce) return false; if (ce.getAttribute('red-controller') === c) { if (ce.getAttribute('red-init')) { Red.app.m[m]['cs'][c]['v'] = ce.getAttribute('red-init'); } Red.app.st(m, c, ce); Red.app.cB(m, c, i); } }); } else { if (ae.getAttribute('red-controller') === c) { if (ae.getAttribute('red-init')) { Red.app.m[m]['cs'][c]['variables'] = ae.getAttribute('red-init'); } this.st(m, c, ae); this.cB(m, c, i); } } }); } }, addController: function (m, c, cons) { this.m[m]['cs'][c] = {f: cons, v: [], i: [],}; this.aM(m, c); var ae = document.querySelector('[red-app=' + m + ']'); var i = new this.m[m]['cs'][c]['f']; if (ae.getAttribute('red-controller') == null) { Array.prototype.slice.call(ae.querySelectorAll('[red-controller=' + c + ']')).map(function (ce) { if (!ce) return false; if (ce.getAttribute('red-init')) { Red.app.m[m]['cs'][c]['v'] = ce.getAttribute('red-init'); } Red.app.st(m, c, ce); Red.app.cB(m, c, i); }); } else { if (ae.getAttribute('red-controller') === c) { if (ae.getAttribute('red-init')) { this.m[m]['cs'][c]['v'] = ae.getAttribute('red-init'); } this.st(m, c, ae); this.cB(m, c, i); } } }, aM: function (me, ml) { this.m[me]['ms'][ml] = {d: [], fs: [],}; var ae = document.querySelector('[red-app=' + me + ']'); if (ae.getAttribute('red-controller') == null) { Array.prototype.slice.call(ae.querySelectorAll('[red-controller=' + ml + ']')).map(function (ce) { if (!ce) return false; Array.prototype.slice.call(ce.querySelectorAll('[red-model]')).map(function (mde) { Red.app.mB(me, ml, mde); var md = mde.getAttribute('red-model'); if (!mde.value) { Red.app.m[me]['ms'][ml]['d']['model_' + md] = mde.innerHTML; Array.prototype.slice.call(ce.querySelectorAll('[red-bind="model_' + md + '"]')).map(function (fe) { Red.app.m[me]['ms'][ml]['fs'].push(fe); }); } else { Red.app.m[me]['ms'][ml]['d']['model_' + md] = mde.value; Array.prototype.slice.call(ce.querySelectorAll('[red-bind="model_' + md + '"]')).map(function (fe) { Red.app.m[me]['ms'][ml]['fs'].push(fe); }); } }); }); } else { if (ae.getAttribute('red-controller') === ml) { Array.prototype.slice.call(ae.querySelectorAll('[red-model]')).map(function (mde) { var md = mde.getAttribute('red-model'); Red.app.mB(me, ml, mde); if (!mde.value) { Red.app.m[me]['ms'][ml]['d']['model_' + md] = me.innerHTML; Array.prototype.slice.call(ae.querySelectorAll('[red-bind="model_' + md + '"]')).map(function (fe) { Red.app.m[me]['ms'][ml]['fs'].push(fe); }); } else { Red.app.m[me]['ms'][ml]['d']['model_' + md] = mde.value; Array.prototype.slice.call(ae.querySelectorAll('[red-bind="model_' + md + '"]')).map(function (fe) { Red.app.m[me]['ms'][ml]['fs'].push(fe); }); } }); } } }, registerRoute: function (m, r) { Object.keys((r)).forEach(function (rn) { Red.app.m[m]['rs'][rn] = r[rn]; var ae = document.querySelector('[red-app=' + m + ']'); if (!ae) return false; Array.prototype.slice.call(ae.querySelectorAll('[href="#!' + rn + '"]')).map(function (re) { re.setAttribute("href", r[rn]); }); }) }, st: function (m, c, ce) { if (!this.s[m]) this.s[m] = {}; this.s[m][c] = {}; Array.prototype.slice.call(ce.querySelectorAll('[red-bind]')).map(function (be) { var bf = be.getAttribute('red-bind'); if (!bf) return false; if (!Red.app.s[m][c][bf]) { Red.app.s[m][c][bf] = {b: bf, e: [],}; } Red.app.s[m][c][bf].e.push(be); }); }, cB: function (m, c, i) { Object.keys(this.s[m][c]).forEach(function (bf) { Red.app.s[m][c][bf].e.forEach(function (be) { var cv; cv = Red.app.m[m]['cs'][c]['v']; var ov = ''; Object.keys(i).forEach(function (k) { ov += "var " + k + " = '" + i[k] + "';"; }); var bf = be.getAttribute('red-bind'); var ml = c; Object.keys(Red.app.m[m]['ms'][ml]['d']).forEach(function (k) { ov += "var " + k + " = '" + Red.app.m[m]['ms'][ml]['d'][k] + "';"; }); var r = eval(cv + ov + bf); if (be.value == null) { be.innerHTML = r; } else { be.value = r; } }); }); }, mB: function (me, ml, mde) { mde.addEventListener('input', function () { var md = mde.getAttribute('red-model'); Red.app.m[me]['ms'][ml]['d']['model_' + md] = mde.value; Red.app.m[me]['ms'][ml]['fs'].forEach(function (fe) { if (fe.getAttribute('red-bind') === 'model_' + md) { if (fe.value == null) { fe.innerHTML = mde.value; } else { fe.value = mde.value; } } }); }, false); }, }, vsrs: [], fsrs: [], ssrs: [], ready: function (cb) { if (document.readyState !== 'loading') { cb(); } else if (document.addEventListener) document.addEventListener('DOMContentLoaded', cb); else { document.attachEvent('onreadystatechange', function () { if (document.readyState === 'complete') { cb(); } }); } }, get: function (s) { var es = document.querySelectorAll(s); if (es.length > 1) { return es; } else { return es[0]; } }, select: function (s) { var es = []; if (typeof s == 'string') { es = document.querySelectorAll(s); var eaa = []; var el = es.length; for (var c = 0; c <= el + 1; c++) { if (es[c]) { eaa.push(es[c]); } } es = eaa; } else { var ie = typeof HTMLElement === "object" ? s instanceof HTMLElement : s && typeof s === "object" && s !== null && s.nodeType === 1 && typeof s.nodeName === "string"; if (ie !== true) { es = new Array(s); es = es[0]; } else { es = new Array(s); es[0] = s; } } return { elements: function () { return es; }, innerHTML: function (v) { if (v == null) { if (es.length > 1) { var ct = []; es.forEach(function (e) { ct.push(e.innerHTML); }); return ct; } else { return es[0].innerHTML; } } else { es.forEach(function (e) { e.innerHTML = v; }); } }, outerHTML: function (v) { if (v == null) { if (es.length > 1) { var ct = []; es.forEach(function (e) { ct.push(e.outerHTML); }); return ct; } else { return es[0].outerHTML; } } else { es.forEach(function (e) { e.outerHTML = v; }); } }, value: function (v) { if (es.length > 1) { if (v != null){ es.forEach(function (e) { e.value = v; }); } else { var vs = []; es.forEach(function (e) { vs.push(e.value); }); return vs; } } else { if (v != null){ es[0].value = v; } else { return es[0].value; } } }, after: function (v) { es.forEach(function (e) { e.insertAdjacentHTML('afterend', v); }); }, before: function (v) { es.forEach(function (e) { e.insertAdjacentHTML('beforeend', v); }); }, CSS: function (p, v) { var ps = []; if (v != null) { es.forEach(function (e) { e.style[p] = v; }); } else { if (typeof p != 'string') { es.forEach(function (e) { ps = Object.keys(p); ps.forEach(function (pro) { e.style[pro] = p[pro]; }); }); } else { es.forEach(function (e) { ps.push(getComputedStyle(e)[p]); }); if (es.length > 1) { return ps; } else { return ps[0]; } } } }, append: function (c) { es.forEach(function (e) { e.appendChild(c); }); }, clone: function () { if (es.length > 1) { var ns = []; es.forEach(function (e) { ns.push(e.cloneNode(true)); }); return ns; } else { return es[0].cloneNode(true); } }, parent: function () { if (es.length > 1) { var ps; es.forEach(function (e) { ps.push(e.parentNode); }); return ps; } else { return es[0].parentNode; } }, prev: function () { if (es.length > 1) { var ps; es.forEach(function (e) { ps.push(e.previousElementSibling); }); return ps; } else { return es[0].previousElementSibling; } }, next: function () { if (es.length > 1) { var ns; es.forEach(function (e) { ns.push(e.nextElementSibling); }); return ns; } else { return es[0].nextElementSibling; } }, children: function () { if (es.length > 1) { var c = []; es.forEach(function (e) { c.push(e.outerHTML); }); return c; } else { return es[0].children; } }, contains: function (c) { if (es.length > 1) { var r; es.forEach(function (e) { r.push(e.contains(c)); }); return r; } else { return es[0].contains(c) } }, on: function (ev, eh) { es.forEach(function (e) { e.addEventListener(ev, eh); }); }, off: function (ev, eh) { es.forEach(function (e) { e.removeEventListener(ev, eh); }); }, load: function (eh) { es.forEach(function (e) { e.addEventListener('load', eh); }); }, resize: function (eh) { es.forEach(function (e) { e.addEventListener('resize', eh); }); }, click: function (eh) { es.forEach(function (e) { e.addEventListener('click', eh); }); }, submit: function (eh) { es.forEach(function (e) { e.addEventListener('submit', eh); }); }, change: function (eh) { es.forEach(function (e) { e.addEventListener('change', eh); }); }, keydown: function (eh) { es.forEach(function (e) { e.addEventListener('keydown', eh); }); }, keyup: function (eh) { es.forEach(function (e) { e.addEventListener('keyup', eh); }); }, mouseEnter: function (eh) { es.forEach(function (e) { e.addEventListener('mouseenter', eh); }); }, mouseLeave: function (eh) { es.forEach(function (e) { e.addEventListener('mouseleave', eh); }); }, hover: function (eh) { es.forEach(function (e) { e.addEventListener('mouseover', eh); }); }, text: function (t) { es.forEach(function (e) { e.textContent = t; }); }, addClass: function (csn) { es.forEach(function (e) { var cs = csn.split(' '); cs.forEach(function (sc) { if (e.classList) { e.classList.add(sc); } else { e.className += ' ' + sc; } }); }); }, hasClass: function (cn) { if (es.length > 1) { var r; es.forEach(function (e) { if (e.classList) { r.push(e.classList.contains(cn)); } else { r.push(new RegExp('(^| )' + cn + '( |$)', 'gi').test(e.className)); } }); return r; } else { if (es[0].classList) { return es[0].classList.contains(cn); } else { return new RegExp('(^| )' + cn + '( |$)', 'gi').test(es[0].className); } } }, removeClass: function (csn) { es.forEach(function (e) { var cs = csn.split(' '); cs.forEach(function (sc) { e.classList.remove(sc); }); }); }, id: function (i) { es.forEach(function (e) { e.setAttribute('id', i); }); }, attr: function (a, v) { if (v == null) { if (es.length > 1) { var as = []; es.forEach(function (e) { as.push(e.getAttribute(a)); }); return as; } else { return es[0].getAttribute(a); } } else {es.forEach(function (e) { e.setAttribute(a, v); }); } }, removeAttr: function (a) { es.forEach(function (e) { e.removeAttribute(a); }); }, action: function (p) { es.forEach(function (e) { e.action = p; }); }, source: function (s) { es.forEach(function (e) { e.src = s; }); }, alt: function (a) { es.forEach(function (e) { e.setAttribute('alt', a); }); }, each: function (f) { es.forEach(f); }, empty: function () { es.forEach(function (e) { e.innerHTML = ''; }); }, remove: function (c) { es.forEach(function (e) { e.removeChild(c); }); }, width: function (m) { if (es.length > 1) { var wr; es.forEach(function (e) { if (m === false) { wr.push(e.offsetWidth); } else { var w = e.offsetWidth; var s = getComputedStyle(e); w += parseInt(s.marginLeft) + parseInt(s.marginRight); wr.push(w); } }); return wr; } else { if (m === false) { return es[0].offsetWidth; } else { var w = es[0].offsetWidth; var s = getComputedStyle(es[0]); w += parseInt(s.marginLeft) + parseInt(s.marginRight); return w; } } }, height: function (m) { if (es.length > 1) { var hr; es.forEach(function (e) { if (m === false) { hr.push(e.offsetHeight); } else { var h = e.offsetHeight; var s = getComputedStyle(e); h += parseInt(s.marginLeft) + parseInt(s.marginRight); hr.push(h); } }); return hr; } else { if (m === false) { return es[0].offsetHeight; } else { var h = es[0].offsetHeight; var s = getComputedStyle(es[0]); h += parseInt(s.marginLeft) + parseInt(s.marginRight); return h; } } }, position: function () { if (es.length > 1) { var o; es.forEach(function (e) { o.push({left: e.offsetLeft, top: e.offsetTop}); }); return o; } else { return {left: es[0].offsetLeft, top: es[0].offsetTop}; } }, offset: function () { if (es.length > 1) { var o; es.forEach(function (e) { var r = e.getBoundingClientRect(); o.push({top: r.top + document.body.scrollTop, left: r.left + document.body.scrollLeft}); }); return o; } else { var r = es[0].getBoundingClientRect(); return {top: r.top + document.body.scrollTop, left: r.left + document.body.scrollLeft}; } }, offsetParent: function () { if (es.length > 1) { var o; es.forEach(function (e) { o.push(e.offsetParent()); }); return o; } else { return es[0].offsetParent(); } }, show: function () { es.forEach(function (e) { e.style.display = ''; }); }, hide: function () { es.forEach(function (e) { e.style.display = 'none'; }); }, fadeIn: function (d) { es.forEach(function (e) { Red.fadeIn(e, d); }); }, fadeOut: function (d) { es.forEach(function (e) { Red.fadeOut(e, d); }); }, play: function () { es.forEach(function (e) { e.play(); }); }, }; }, online: function () { return navigator.onLine; }, redirect: function(u) { window.location.href = u; }, user: function () { return navigator.userAgent; }, IE: function(){ var ua = window.navigator.userAgent; var msie = ua.indexOf('MSIE '); if (msie > 0) { return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10); } var trident = ua.indexOf('Trident/'); if (trident > 0) { var rv = ua.indexOf('rv:'); return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10); } var edge = ua.indexOf('Edge/'); if (edge > 0) { return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10); } return false; }, goBack: function () { return window.history.back(); }, ajax: function (c) { var r = new XMLHttpRequest(); r.onload = c.success; var m = c.type; var u = c.url; if (c.data != null) { var dk = Object.keys(c.data); var dv = Object.values(c.data); var d = ''; var dkl = dk.length - 1; for (var i = 0; i <= dkl; i++) { d += dk[i] + '=' + dv[i]; if (i !== dkl) { d += '&'; } } } else { var d = null; } r.open(m, u, true); if (c.contentType != null) { r.setRequestHeader('Content-Type', c.contentType + ';'); } if (c.dataType != null) { r.responseType = c.dataType; } r.setRequestHeader('charset', 'UTF-8'); r.setRequestHeader('AJAX-Request', 'RedJS_AJAX_Request'); if (d != null) { r.send(encodeURI(d)); } else { r.send(); } }, parseJSON: function (s) { return JSON.parse(s); }, parseHTML: function (s) { var t = document.implementation.createHTMLDocument(); t.body.innerHTML = s; return t.body.children; }, setCookie: function (n, v, ds) { var e = ""; if (ds) { var d = new Date(); d.setTime(d.getTime() + (ds * 24 * 60 * 60 * 1000)); e = "; expires=" + d.toUTCString(); } document.cookie = n + "=" + (v || "") + e + "; path=/"; }, getCookie: function (n) { var ne = n + "="; var ca = document.cookie.split(';'); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) === ' ') c = c.substring(1, c.length); if (c.indexOf(ne) === 0) return c.substring(ne.length, c.length); } return null; }, deleteCookie: function (n) { Red.setCookie(n, '', -10); }, fadeIn: function (e, d) { if (!e) return false; e.style.opacity = 0; e.style.filter = "alpha(opacity=0)"; e.style.display = ""; if (d) { var o = 0; var t = setInterval(function () { o += 50 / d; if (o >= 1) { clearInterval(t); o = 1; } e.style.display = ""; e.style.opacity = o; e.style.filter = "alpha(opacity=" + o * 100 + ")"; }, 50); } else { e.style.opacity = 1; e.style.filter = "alpha(opacity=1)"; } }, fadeOut: function (e, d) { if (!e) return false; if (d) { var o = 1; var t = setInterval(function () { o -= 50 / d; if (o <= 0) { clearInterval(t); o = 0; e.style.display = "none"; } e.style.opacity = o; e.style.filter = "alpha(opacity=" + o * 100 + ")"; }, 50); } else { e.style.opacity = 0; e.style.filter = "alpha(opacity=0)"; e.style.display = "none"; } }, create: function (t, p, cp) { var e = document.createElement(t); if (p != null)this.select(p).append(e); if (cp != null) this.select(e).CSS(cp); return e; }, each: function (a, f) { return a.forEach(f); }, map: function (a, f) { return a.map(f); }, inArray: function (i, a) { return a.indexOf(i); }, isArray: function (a) { return Array.isArray(a); }, type: function (o) { return Object.prototype.toString.call(o).replace(/^[object (.+)]$/, '$1').toLowerCase(); }, now: function () { return Date.now(); }, timer: function (d, e, m) { var s = Date.now(), diff, ms, ss; function timer() { diff = d - (((Date.now() - s) / 1000) | 0); ms = (diff / 60) | 0; ss = (diff % 60) | 0; if (m === 'full') { ms = ms < 10 ? "0" + ms : ms; ss = ss < 10 ? "0" + ss : ss; e.textContent = ms + ":" + ss; } else if (m === 'light') { ss = ss < 10 ? "0" + ss : ss; e.textContent = ss; } if (diff <= 0) { s = Date.now() + 1000; } } setInterval(timer, 1000); }, autoComplete: function (inp, ic, le, ie, ar, nfm) { var q = 0; Red.select(inp).keyup(function () { cL(); var sv = inp.value, i; Red.select(ic).append(le); Red.select(le).addClass('auto-complete-list'); if (q === 0) { q = 1000; Red.fadeIn(le, 1000); } else { setTimeout(function () { q = 0; }, 1000); } var c = 0; var arl = ar.length; for (i = 0; i < arl; i++) { if (ar[i].substr(0, sv.length) === sv) { let nie = Red.select(ie).clone(); Red.select(nie).addClass('auto-complete-item'); Red.select(le).append(nie); nie.innerHTML = ar[i].substr(0, sv.length); nie.innerHTML += ar[i].substr(sv.length); nie.innerHTML += "<input type='hidden' value='" + ar[i] + "'>"; c++; Red.select(nie).click(function () { inp.value = nie.getElementsByTagName('input')[0].value; cL(); }); Red.select(le).append(ie); } } if (c === 0) { let ie = Red.create('div'); Red.select(ie).addClass('auto-complete-item'); Red.select(ie).innerHTML(nfm); Red.select(le).append(ie); } }); function cL() { var l = Red.get('.auto-complete-list'); var mi = Red.select('.auto-complete-item').elements(); if (l != null && mi != null) { var p = Red.select(l).parent(); var mil = mi.length - 1; for (var i = 0; i <= mil; i++) { Red.select(l).remove(mi[i]); } Red.select(p).remove(l); } } Red.select('body').click(function () { cL(); }); }, validate: function (s, as) { var aia = as.split('|'); var m = aia[1].indexOf(':') + 1; m = aia[1].substr(m, m.length); var l = aia[2].indexOf(':') + 1; l = aia[2].substr(l, l.length); l = l.split('-'); var mn = l[0]; var mx = l[1]; var r;var vsrs = this.vsrs; Object.keys(vsrs).forEach(function (k) { if (m == vsrs[k]['rule']){ var cf = vsrs[k]['callback']; r = cf(aia[0], mn, mx, s); } }); if (r === true || r === false) { return r; } if (aia[0] === 'required') { if (m === 'digit') { r = s.match(/^([0-9\n ])+$/g); if (r == null) { return false; } else { if (r[0].length >= mn && r[0].length <= mx) { return true; } else { return false; } } } else if (m === 'en') { r = s.match(/^([a-zA-Z\n ])+$/g); if (r == null) { return false; } else { if (r[0].length >= mn && r[0].length <= mx) { return true; } else { return false; } } } else if (m === 'en_digit') { r = s.match(/^([a-zA-Z0-9\n ])+$/g); if (r == null) { return false; } else { if (r[0].length >= mn && r[0].length <= mx) { return true; } else { return false; } } } else if (m === 'fa') { r = s.match(/^([\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])+$/g); if (r == null) { return false; } else { if (r[0].length >= mn && r[0].length <= mx) { return true; } else { return false; } } } else if (m === 'fa_digit') { r = s.match(/^([\n0-9 پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])+$/g); if (r == null) { return false; } else { if (r[0].length >= mn && r[0].length <= mx) { return true; } else { return false; } } } else if (m === 'mix') { r = s.match(/^([a-zA-Z0-9\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])+$/g); } else if (m === 'text') { r = s.match(/^([a-zA-Z0-9\.\-_,،;؛!?؟@\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])+$/g); } else if (m === 'text_en') { r = s.match(/^([a-zA-Z0-9\.\-_,;!?@\n ])+$/g); } else if (m === 'text_fa') { r = s.match(/^([0-9\.\-_,،;؛!?؟@\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])+$/g); } else if (m === 'email') { r = s.match(/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/gi); } else if (m === 'IP') { r = s.match(/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/); if (r == null) { return false; } else { return true; } } else if (m === 'username') { r = s.match(/^([a-zA-Z0-9\.\-_])+$/); } else if (m === 'password') { r = s.match(/^([a-zA-Z0-9\.*@])+$/); } else if (m === 'phone') { r = s.match(/^([+]{0,1})([0-9])+$/); } else if (m === 'address') { r = s.match(/^([a-zA-Z0-9\-\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])+$/); } else if (m === 'address_en') { r = s.match(/^([a-zA-Z0-9\-\nّ ])+$/); } else if (m === 'address_fa') { r = s.match(/^([0-9\-\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])+$/); } if (r == null) { return false; } else { if (r[0].length >= mn && r[0].length <= mx) { return true; } else { return false; } } } else if (aia[0] === 'optional') { if (m === 'digit') { r = s.match(/^([0-9\n ])*$/g); } else if (m === 'en') { r = s.match(/^([a-zA-Z\n ])*$/g); } else if (m === 'en_digit') { r = s.match(/^([a-zA-Z0-9\n ])*$/g); } else if (m === 'fa') { r = s.match(/^([\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])*$/g); } else if (m === 'fa_digit') { r = s.match(/^([\n0-9 پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])*$/g); } else if (m === 'mix') { r = s.match(/^([a-zA-Z0-9\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])*$/g); } else if (m === 'text') { r = s.match(/^([a-zA-Z0-9\.\-_,،;؛!?؟@\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])*$/g); } else if (m === 'text_en') { r = s.match(/^([a-zA-Z0-9\.\-_,;!?@\n ])*$/g); } else if (m === 'text_fa') { r = s.match(/^([0-9\.\-_,،;؛!؟@\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])*$/g); } else if (m === 'email') { r = s.match(/^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/gi); } else if (m === 'IP') { r = s.match(/^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/); if (r == null) { if (s.length === 0) { return true } else { return false; } } else { if (s.length === 0) { return true } else { return false; } } } else if (m === 'username') { r = s.match(/^([a-zA-Z0-9\.\-_])*$/); } else if (m === 'password') { r = s.match(/^([a-zA-Z0-9\.*@])*$/); } else if (m === 'phone') { r = s.match(/^([+]{0,1})([0-9])*$/); } else if (m === 'address') { r = s.match(/^([a-zA-Z0-9\-\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])*$/); } else if (m === 'address_en') { r = s.match(/^([a-zA-Z0-9\-\nّ ])*$/); } else if (m === 'address_fa') { r = s.match(/^([0-9\-\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ])*$/); } if (r == null) { if (s.length === 0) { return true } else { return false; } } else { if (r[0].length >= mn && r[0].length <= mx) { return true; } else { if (s.length === 0) { return true } else { return false; } } } } }, addValidateRule: function(r, cb){ this.vsrs.push({ 'rule': r, 'callback': cb }); }, filter: function (s, m) { if (m === 'digit') { return s.replace(/[^0-9\n ]/gim, ''); } else if (m === 'en') { return s.replace(/[^a-zA-Z\n ]/gim, ''); } else if (m === 'en_digit') { return s.replace(/[^a-zA-Z0-9\n ]/gim, ''); } else if (m === 'fa') { return s.replace(/[^\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ]/gim, ''); } else if (m === 'fa_digit') { return s.replace(/[^\n0-9 پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأءًٌٍَُِّ]/gim, ''); } else if (m === 'mix') { return s.replace(/[^a-zA-Z0-9\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأء]/gim, ''); } else if (m === 'text') { return s.replace(/[^a-zA-Z0-9\.\-_,،;؛!?؟@\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأء]/gim, ''); } else if (m === 'text_en') { return s.replace(/[^a-zA-Z0-9\.\-_,;!?@\n ]/gim, ''); } else if (m === 'text_fa') { return s.replace(/[^0-9\.\-_,،;؛!؟@\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأء]/gim, ''); } else if (m === 'email') { return s.replace(/[^a-zA-Z0-9@]/gim, ''); } else if (m === 'IP') { return s.replace(/[^0-9.]/gim, ''); } else if (m === 'username') { return s.replace(/[^a-zA-Z0-9\.\-_]/gim, ''); } else if (m === 'password') { return s.replace(/[^a-zA-Z0-9\.*@]/gim, ''); } else if (m === 'phone') { return s.replace(/[^0-9+]/gim, ''); } else if (m === 'address') { return s.replace(/[^a-zA-Z0-9\-\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأء]/gim, ''); } else if (m === 'address_en') { return s.replace(/[^a-zA-Z0-9\-\n]/gim, ''); } else if (m === 'address_fa') { return s.replace(/[^0-9\-\n پچجحخهعغفقثصضشسیبلاتنمکگوئدذرزطظژؤإأء]/gim, ''); } var fsrs = this.fsrs; Object.keys(fsrs).forEach(function (k) { if (m == fsrs[k]['rule']){ var cf = fsrs[k]['callback']; s = cf(s); } }); return s; }, addFilterRule: function(r, cb){ this.fsrs.push({ 'rule': r, 'callback': cb }); }, sanitize: function (s, m) { if (m === 'digit') { return s.replace(/([0-9])+/); } else if (m === 'space') { return s.replace(/(\s\n)+/); } var ssrs = this.ssrs; Object.keys(ssrs).forEach(function (k) { if (m == ssrs[k]['rule']){ var cf = ssrs[k]['callback']; s = cf(s); } }); return s;}, addSanitizeRule: function(r, cb){ this.ssrs.push({ 'rule': r, 'callback': cb }); }, trim: function (s) { return s.trim(); }, generateRandomInt: function getRndInteger(mn, mx) { return Math.floor(Math.random() * (mx - mn + 1)) + mn; }, };