/* formBuilder - https://formbuilder.online/ Version: 1.15.2 Author: Kevin Chappell */ "use strict"; function formBuilderHelpersFn(e, t) { var a = {doCancel: !1}; return t.events = formBuilderEventsFn(), a.attrString = function (e) { var t = []; for (var s in e)e.hasOwnProperty(s) && (s = a.safeAttr(s, e[s]), t.push(s.name + s.value)); var l = t.join(" "); return l }, a.hyphenCase = function (e) { return e = e.replace(/([A-Z])/g, function (e) { return "-" + e.toLowerCase() }), e.replace(/\s/g, "-").replace(/^-+/g, "") }, a.camelCase = function (e) { return e.replace(/-([a-z])/g, function (e, t) { return t.toUpperCase() }) }, a.makeClassName = function (e) { return e = e.replace(/[^\w\s\-]/gi, ""), a.hyphenCase(e) }, a.safeAttrName = function (e) { var t = {className: "class"}; return t[e] || a.hyphenCase(e) }, a.safeAttr = function (e, t) { e = a.safeAttrName(e); var s = window.JSON.stringify(a.escapeAttr(t)); return t = t ? "=" + s : "", {name: e, value: t} }, a.mobileClass = function () { var e = ""; return function (t) { (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0, 4))) && (e = " fb-mobile") }(navigator.userAgent || navigator.vendor || window.opera), e }, a.startMoving = function (e, t) { e = e, t.item.show().addClass("moving"), a.startIndex = $("li", this).index(t.item) }, a.stopMoving = function (e, t) { e = e, t.item.removeClass("moving"), a.doCancel && ($(t.sender).sortable("cancel"), $(this).sortable("cancel")), a.save(), a.doCancel = !1 }, a.beforeStop = function (t, s) { t = t; var l = document.getElementById(e.formID), o = l.children.length - 1, n = []; a.stopIndex = s.placeholder.index() - 1, !e.sortableControls && s.item.parent().hasClass("frmb-control") && n.push(!0), e.prepend && n.push(0 === a.stopIndex), e.append && n.push(a.stopIndex + 1 === o), a.doCancel = n.some(function (e) { return e === !0 }) }, a.safename = function (e) { return e.replace(/\s/g, "-").replace(/[^a-zA-Z0-9\-]/g, "").toLowerCase() }, a.forceNumber = function (e) { return e.replace(/[^0-9]/g, "") }, a.initTooltip = function (e) { var t = e.find(".tooltip"); e.mouseenter(function () { t.outerWidth() > 200 && t.addClass("max-width"), t.css("left", e.width() + 14), t.stop(!0, !0).fadeIn("fast") }).mouseleave(function () { e.find(".tooltip").stop(!0, !0).fadeOut("fast") }), t.hide() }, a.getTypes = function (e) { return {type: e.attr("type"), subtype: $(".fld-subtype", e).val()} }, a.trimObj = function (e) { var t = [null, void 0, "", !1]; for (var s in e)a.inArray(e[s], t) && delete e[s]; return e }, a.escapeAttr = function (e) { function t(e) { return a[e] || e } var a = {'"': """, "&": "&", "<": "<", ">": ">"}; return "string" == typeof e ? e.replace(/["&<>]/g, t) : e }, a.escapeAttrs = function (e) { for (var t in e)e.hasOwnProperty(t) && (e[t] = a.escapeAttr(e[t])); return e }, a.xmlSave = function (e) { var s = $(e).toXML(a); return window.JSON.stringify(s) === window.JSON.stringify(t.formData) ? !1 : void(t.formData = s) }, a.jsonSave = function () { e.notify.warning("json data not available yet") }, a.save = function () { var s, l = a.getElement(), o = document.getElementById(e.formID), n = {xml: a.xmlSave, json: a.jsonSave}; return s = n[e.dataType](o), l && (l.value = t.formData, window.jQuery ? $(l).trigger("change") : l.onchange()), document.dispatchEvent(t.events.formSaved), s }, a.getElement = function () { var s = !1; return t.element && (s = t.element, s.id || a.makeId(s), s.onchange || (s.onchange = function () { e.notify.success(e.messages.formUpdated) })), s }, a.incrementId = function (e) { var t = e.lastIndexOf("-"), a = parseInt(e.substring(t + 1)) + 1, s = e.substring(0, t); return s + "-" + a }, a.makeId = function () { var e = arguments.length <= 0 || void 0 === arguments[0] ? !1 : arguments[0], t = (new Date).getTime(); return e.tagName + "-" + t }, a.updatePreview = function (e) { var t = e.attr("class"); if (-1 === t.indexOf("ui-sortable-handle")) { var s, l = $(e).attr("type"), o = $(".prev-holder", e), n = {type: l}; $('[class*="fld-"]', e).each(function () { var e = a.camelCase(this.name); n[e] = "checkbox" === this.type ? this.checked : this.value }); var r = $(".btn-style", e).val(); r && (n.style = r), l.match(/(select|checkbox-group|radio-group)/) && (n.values = [], n.multiple = $('[name="multiple"]', e).is(":checked"), $(".sortable-options li", e).each(function () { var e = {}; e.selected = $(".option-selected", this).is(":checked"), e.value = $(".option-value", this).val(), e.label = $(".option-label", this).val(), n.values.push(e) })), n = a.trimObj(n), n.className = a.classNames(e, n), $(".fld-className", e).val(n.className), e.data("fieldData", n), s = a.fieldPreview(n), o.html(s), $("input[toggle]", o).kcToggle() } }, a.fieldPreview = function (t) { var s, l = "", o = (new Date).getTime(); t = jQuery.extend({}, t), t.type = t.subtype || t.type; var n = t.toggle ? "toggle" : "", r = a.attrString(t); switch (t.type) { case"textarea": case"rich-text": var i = t.value || ""; l = ""; break; case"button": case"submit": l = ""; break; case"select": var c = "", d = t.multiple ? "multiple" : ""; for (t.values.reverse(), t.placeholder && (c += ""), s = t.values.length - 1; s >= 0; s--) { var u = t.values[s].selected && !t.placeholder ? "selected" : ""; c += '" } l = "<" + t.type + ' class="' + t.className + '" ' + d + ">" + c + ""; break; case"checkbox-group": case"radio-group": var p = t.type.replace("-group", ""), m = p + "-" + o; for (t.values.reverse(), s = t.values.length - 1; s >= 0; s--) { var f = t.values[s].selected ? "checked" : "", v = p + "-" + o + "-" + s; l += '
" } if (t.enableOther) { var h = m + "-other", g = { id: h, name: m, className: t.className + " other-option", type: p, onclick: "otherOptionCallback('" + h + "')" }, b = a.markup("input", null, g); window.otherOptionCallback = function (e) { var t = document.getElementById(e), a = t.nextElementSibling, s = a.nextElementSibling; t.checked ? (s.style.display = "inline-block", a.style.display = "none") : (s.style.display = "none", a.style.display = "inline-block") }, l += "
" + b.outerHTML + '
' } break; case"text": case"password": case"email": case"date": case"file": case"number": l = ""; break; case"color": l = ' ' + e.messages.selectColor; break; case"hidden": case"checkbox": l = '"; break; case"autocomplete": l = ''; break; default: r = a.attrString(t), l = "<" + t.type + " " + r + ">" + t.label + "" } return l }, a.updateMultipleSelect = function () { $(document.getElementById(e.formID)).on("change", 'input[name="multiple"]', function () { var e = $(this).parents(".field-options:eq(0)").find(".sortable-options input.option-selected"); this.checked ? e.each(function () { $(this).prop("type", "checkbox") }) : e.each(function () { $(this).removeAttr("checked").prop("type", "radio") }) }) }, a.debounce = function (e) { var t, a = arguments.length <= 1 || void 0 === arguments[1] ? 250 : arguments[1], s = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2]; return function () { var l = this, o = arguments, n = function () { t = null, s || e.apply(l, o) }, r = s && !t; clearTimeout(t), t = setTimeout(n, a), r && e.apply(l, o) } }, a.htmlEncode = function (e) { return $("
").text(e).html() }, a.htmlDecode = function (e) { return $("
").html(e).text() }, a.validateForm = function () { var t = $(document.getElementById(e.formID)), a = []; $('input[name="label"], input[type="text"].option', t).each(function () { if ("" === $(this).val()) { var t = $(this).parents("li.form-field"), s = $(this); a.push({field: t, error: e.messages.labelEmpty, attribute: s}) } }), a.length && (alert("Error: " + a[0].error), $("html, body").animate({scrollTop: a[0].field.offset().top}, 1e3, function () { var e = $(".toggle-form", a[0].field).attr("id"); $(".toggle-form", a[0].field).addClass("open").parent().next(".prev-holder").slideUp(250), $("#" + e + "-fld").slideDown(250, function () { a[0].attribute.addClass("error") }) })) }, a.disabledTT = { className: "frmb-tt", add: function (t) { var s = e.messages.fieldNonEditable; if (s) { var l = a.markup("p", s, {className: a.disabledTT.className}); t.append(l) } }, remove: function (e) { $(".frmb-tt", e).remove() } }, a.classNames = function (t, s) { var l = ["checkbox", "checkbox-group", "radio-group"], o = ["header", "paragraph", "button"], n = void 0; for (n = o.length - 1; n >= 0; n--)o = o.concat(e.messages.subtypes[o[n]]); l = l.concat(o); var r = s.type, i = s.style, c = t[0].querySelector(".fld-className").value, d = [].concat(c.split(" ")).reverse(), u = { button: "btn", submit: "btn" }, p = u[r]; if (p) { if (i) { for (n = d.length - 1; n >= 0; n--) { var m = new RegExp("(?:^|s)" + p + "-(.*?)(?:s|$)+", "g"), f = d[n].match(m); f && d.splice(n, 1) } d.push(p + "-" + i) } d.push(p) } else a.inArray(r, l) || d.push("form-control"); return a.unique(d.reverse()).join(" ").trim() }, a.markup = function (e) { var t = arguments.length <= 1 || void 0 === arguments[1] ? "" : arguments[1], s = arguments.length <= 2 || void 0 === arguments[2] ? {} : arguments[2], l = void 0, o = document.createElement(e), n = function (e) { return Array.isArray(e) ? "array" : "undefined" == typeof e ? "undefined" : _typeof(e) }, r = { string: function (e) { o.innerHTML = e }, object: function (e) { return o.appendChild(e) }, array: function (e) { for (var t = 0; t < e.length; t++)l = n(e[t]), r[l](e[t]) } }; for (var i in s)if (s.hasOwnProperty(i) && s[i]) { var c = a.safeAttrName(i); o.setAttribute(c, s[i]) } return l = n(t), t && r[l].call(this, t), o }, a.closeConfirm = function (e, a) { e = e || document.getElementsByClassName("form-builder-overlay")[0], a = a || document.getElementsByClassName("form-builder-dialog")[0], e.classList.remove("visible"), a.remove(), e.remove(), document.dispatchEvent(t.events.modalClosed) }, a.editorLayout = function (e) { var t = { left: {stage: "pull-right", controls: "pull-left"}, right: {stage: "pull-left", controls: "pull-right"} }; return t[e] ? t[e] : "" }, a.showOverlay = function () { var e = a.markup("div", null, {className: "form-builder-overlay"}); return document.body.appendChild(e), e.classList.add("visible"), e.onclick = function () { a.closeConfirm(e) }, e }, a.confirm = function (t, s) { var l = arguments.length <= 2 || void 0 === arguments[2] ? !1 : arguments[2], o = arguments.length <= 3 || void 0 === arguments[3] ? "" : arguments[3], n = a.showOverlay(), r = a.markup("button", e.messages.yes, {className: "yes btn btn-success btn-sm"}), i = a.markup("button", e.messages.no, {className: "no btn btn-danger btn-sm"}); i.onclick = function () { a.closeConfirm(n) }, r.onclick = function () { s(), a.closeConfirm(n) }; var c = a.markup("div", [i, r], {className: "button-wrap"}); o = "form-builder-dialog " + o; var d = a.markup("div", [t, c], {className: o}); return l ? d.classList.add("positioned") : (l = { pageX: Math.max(document.documentElement.clientWidth, window.innerWidth || 0) / 2, pageY: Math.max(document.documentElement.clientHeight, window.innerHeight || 0) / 2 }, d.style.position = "fixed"), d.style.left = l.pageX + "px", d.style.top = l.pageY + "px", document.body.appendChild(d), r.focus(), d }, a.dialog = function (e) { var s = arguments.length <= 1 || void 0 === arguments[1] ? !1 : arguments[1], l = arguments.length <= 2 || void 0 === arguments[2] ? "" : arguments[2]; a.showOverlay(), l = "form-builder-dialog " + l; var o = a.markup("div", e, {className: l}); return s ? o.classList.add("positioned") : (s = { pageX: Math.max(document.documentElement.clientWidth, window.innerWidth || 0) / 2, pageY: Math.max(document.documentElement.clientHeight, window.innerHeight || 0) / 2 }, o.style.position = "fixed"), o.style.left = s.pageX + "px", o.style.top = s.pageY + "px", document.body.appendChild(o), -1 !== l.indexOf("data-dialog") && document.dispatchEvent(t.events.viewData), o }, a.removeAllfields = function () { var t = document.getElementById(e.formID), s = t.querySelectorAll("li.form-field"), l = $(s), o = []; e.prepend && o.push(!0), e.append && o.push(!0), o.some(function (e) { return e === !0 }) || t.parentElement.classList.add("empty"), t.classList.add("removing"); var n = 0; l.each(function () { n += $(this).outerHeight() + 3 }), s[0].style.marginTop = -n + "px", setTimeout(function () { l.remove(), document.getElementById(e.formID).classList.remove("removing"), a.save() }, 500) }, a.setFieldOrder = function (t) { if (!e.sortableControls)return !1; var a = {}; t.children().each(function (e, t) { a[e] = $(t).data("attrs").type }), window.sessionStorage && window.sessionStorage.setItem("fieldOrder", window.JSON.stringify(a)) }, a.orderFields = function (t) { var s = !1; window.sessionStorage && (e.sortableControls ? s = window.sessionStorage.getItem("fieldOrder") : window.sessionStorage.removeItem("fieldOrder")), s ? (s = window.JSON.parse(s), s = Object.keys(s).map(function (e) { return s[e] })) : s = a.unique(e.controlOrder); for (var l = [], o = s.length - 1; o >= 0; o--) { var n = t.filter(function (e) { return e.attrs.type === s[o] })[0]; l.push(n) } return l.filter(Boolean) }, a.forEach = function (e, t, a) { for (var s = 0; s < e.length; s++)t.call(a, s, e[s]) }, a.inArray = function (e, t) { return -1 !== t.indexOf(e) }, a.unique = function (e) { return e.filter(function (e, t, a) { return a.indexOf(e) === t }) }, a.closeAllEdit = function (e) { var t = $("> li.editing", e), a = $(".toggle-form", e), s = $(".frm-holder", t); a.removeClass("open"), t.removeClass("editing"), s.hide(), $(".prev-holder", t).show() }, a.toggleEdit = function (e) { var t = document.getElementById(e), a = $(".toggle-form", t), s = $(".frm-holder", t); t.classList.toggle("editing"), a.toggleClass("open"), $(".prev-holder", t).slideToggle(250), s.slideToggle(250) }, a.stickyControls = function (e, t) { var a = $(t).parent(), s = e.parent(), l = a.width(), o = t.getBoundingClientRect(); $(window).scroll(function () { var e = $(this).scrollTop(); if (e > s.offset().top) { var n = { position: "fixed", width: l, top: 0, bottom: "auto", right: "auto", left: o.left }, r = a.offset(), i = s.offset(), c = r.top + a.height(), d = i.top + s.height(); c > d && r.top !== i.top && a.css({ position: "absolute", top: "auto", bottom: 0, right: 0, left: "auto" }), (d > c || c === d && r.top > e) && a.css(n) } else t.parentElement.removeAttribute("style") }) }, a } function formBuilderEventsFn() { var e = {}; return e.loaded = new Event("loaded"), e.viewData = new Event("viewData"), e.userDeclined = new Event("userDeclined"), e.modalClosed = new Event("modalClosed"), e.formSaved = new Event("formSaved"), e } var _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) { return typeof e } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol ? "symbol" : typeof e }; !function (e) { var t = function (t, a) { var s = { theme: "fresh", labels: {off: "Off", on: "On"} }, l = e.extend(s, a), o = e('
').insertAfter(t).append(t); o.toggleClass("on", t.is(":checked")); var n = '
' + l.labels.on + "
", r = '
' + l.labels.off + "
", i = '
', c = '
' + n + i + r + "
"; o.append(c), o.click(function () { t.attr("checked", !t.attr("checked")), e(this).toggleClass("on") }) }; e.fn.kcToggle = function (a) { var s = this; return s.each(function () { var s = e(this); if (!s.data("kcToggle")) { var l = new t(s, a); s.data("kcToggle", l) } }) } }(jQuery), function (e) { var t = function (t, a) { var s = this, l = { controlPosition: "right", controlOrder: ["autocomplete", "button", "checkbox", "checkbox-group", "date", "file", "header", "hidden", "paragraph", "number", "radio-group", "select", "text", "textarea"], dataType: "xml", disableFields: ["autocomplete", "hidden", "number"], editOnAdd: !1, append: !1, prepend: !1, defaultFields: [], fieldRemoveWarn: !1, roles: {1: "Administrator"}, messages: { addOption: "Add Option", allFieldsRemoved: "All fields were removed.", allowSelect: "Allow Select", allowMultipleFiles: "Allow users to upload multiple files", autocomplete: "Autocomplete", button: "Button", cannotBeEmpty: "This field cannot be empty", checkboxGroup: "Checkbox Group", checkbox: "Checkbox", checkboxes: "Checkboxes", className: "Class", clearAllMessage: "Are you sure you want to clear all fields?", clearAll: "Clear", close: "Close", content: "Content", copy: "Copy To Clipboard", dateField: "Date Field", description: "Help Text", descriptionField: "Description", devMode: "Developer Mode", editNames: "Edit Names", editorTitle: "Form Elements", editXML: "Edit XML", enableOther: "Enable "Other"", enableOtherMsg: "Let users to enter an unlisted option", fieldDeleteWarning: !1, fieldVars: "Field Variables", fieldNonEditable: "This field cannot be edited.", fieldRemoveWarning: "Are you sure you want to remove this field?", fileUpload: "File Upload", formUpdated: "Form Updated", getStarted: "Drag a field from the right to this area", header: "Header", hide: "Edit", hidden: "Hidden Input", label: "Label", labelEmpty: "Field Label cannot be empty", limitRole: "Limit access to one or more of the following roles:", mandatory: "Mandatory", maxlength: "Max Length", minOptionMessage: "This field requires a minimum of 2 options", multipleFiles: "Multiple Files", name: "Name", no: "No", number: "Number", off: "Off", on: "On", option: "Option", optional: "optional", optionLabelPlaceholder: "Label", optionValuePlaceholder: "Value", optionEmpty: "Option value required", other: "Other", paragraph: "Paragraph", placeholder: "Placeholder", placeholders: { value: "Value", label: "Label", text: "", textarea: "", email: "Enter you email", placeholder: "", className: "space separated classes", password: "Enter your password" }, preview: "Preview", radioGroup: "Radio Group", radio: "Radio", removeMessage: "Remove Element", remove: "×", required: "Required", richText: "Rich Text Editor", roles: "Access", save: "Save", selectOptions: "Options", select: "Select", selectColor: "Select Color", selectionsMessage: "Allow Multiple Selections", size: "Size", sizes: {xs: "Extra Small", sm: "Small", m: "Default", lg: "Large"}, style: "Style", styles: { btn: { "default": "Default", danger: "Danger", info: "Info", primary: "Primary", success: "Success", warning: "Warning" } }, subtype: "Type", subtypes: { text: ["text", "password", "email", "color"], button: ["button", "submit"], header: ["h1", "h2", "h3"], paragraph: ["p", "address", "blockquote", "canvas", "output"] }, text: "Text Field", textArea: "Text Area", toggle: "Toggle", warning: "Warning!", value: "Value", viewXML: "</>", yes: "Yes" }, notify: { error: function (e) { return console.error(e) }, success: function (e) { return console.log(e) }, warning: function (e) { return console.warn(e) } }, sortableControls: !1, stickyControls: !1, prefix: "form-builder-" }; l.messages.subtypes.password = l.messages.subtypes.text, l.messages.subtypes.email = l.messages.subtypes.text, l.messages.subtypes.color = l.messages.subtypes.text, l.messages.subtypes.submit = l.messages.subtypes.button; var o = e.extend(!0, l, t), n = e(a), r = "frmb-" + e("ul[id^=frmb-]").length++; o.formID = r, s.element = a; var i = e("
    ").attr("id", r).addClass("frmb"), c = formBuilderHelpersFn(o, s); s.layout = c.editorLayout(o.controlPosition); var d = r + "-fld-1", u = r + "-control-box", p = [{ label: o.messages.textArea, attrs: {type: "textarea", className: "text-area", name: "textarea"} }, { label: o.messages.text, attrs: {type: "text", className: "text-input", name: "text-input"} }, { label: o.messages.select, attrs: {type: "select", className: "select", name: "select"} }, { label: o.messages.radioGroup, attrs: {type: "radio-group", className: "radio-group", name: "radio-group"} }, {label: o.messages.paragraph, attrs: {type: "paragraph", className: "paragraph"}}, { label: o.messages.number, attrs: {type: "number", className: "number", name: "number"} }, { label: o.messages.hidden, attrs: {type: "hidden", className: "hidden-input", name: "hidden-input"} }, {label: o.messages.header, attrs: {type: "header", className: "header"}}, { label: o.messages.fileUpload, attrs: {type: "file", className: "file-input", name: "file-input"} }, { label: o.messages.dateField, attrs: {type: "date", className: "calendar", name: "date-input"} }, { label: o.messages.checkboxGroup, attrs: {type: "checkbox-group", className: "checkbox-group", name: "checkbox-group"} }, { label: o.messages.checkbox, attrs: {type: "checkbox", className: "checkbox", name: "checkbox"} }, { label: o.messages.button, attrs: {type: "button", className: "button-input", name: "button"} }, { label: o.messages.autocomplete, attrs: {type: "autocomplete", className: "autocomplete", name: "autocomplete"} }]; p = c.orderFields(p), o.disableFields && (p = p.filter(function (e) { return !c.inArray(e.attrs.type, o.disableFields) })); var m = c.markup("ul", null, {id: u, className: "frmb-control"}); o.sortableControls && m.classList.add("sort-enabled"); for (var f = e(m), v = p.length - 1; v >= 0; v--) { var h = e("
  • ", { "class": "icon-" + p[v].attrs.className, type: p[v].type, name: p[v].className, label: p[v].label }); h.data("newFieldData", p[v]); var g = c.markup("span", p[v].label); h.html(g).appendTo(f) } var b = "xml" === o.dataType ? o.messages.viewXML : o.messages.viewJSON, y = c.markup("button", b, { id: r + "-view-data", type: "button", className: "view-data btn btn-default" }), k = c.markup("button", o.messages.clearAll, { id: r + "-clear-all", type: "button", className: "clear-all btn btn-default" }), w = c.markup("button", o.messages.save, { className: "btn btn-primary " + o.prefix + "save", id: r + "-save", type: "button" }), x = c.markup("div", [k, y, w], {className: "form-actions btn-group"}).outerHTML; i.sortable({ cursor: "move", opacity: .9, revert: 150, beforeStop: c.beforeStop, start: c.startMoving, stop: c.stopMoving, cancel: "input, select, .disabled, .form-group, .btn", placeholder: "frmb-placeholder" }), f.sortable({ helper: "clone", opacity: .9, connectWith: i, cursor: "move", scroll: !1, placeholder: "ui-state-highlight", start: c.startMoving, stop: c.stopMoving, revert: 150, beforeStop: c.beforeStop, distance: 3, update: function (e, t) { return c.doCancel ? !1 : (e = e, void(t.item.parent()[0] === i[0] ? (A(t.item, !0), c.doCancel = !0) : (c.setFieldOrder(f), c.doCancel = !o.sortableControls))) } }); var C = e("
    ", { id: r + "-stage-wrap", "class": "stage-wrap " + s.layout.stage }), N = e("
    ", {id: r + "-form-wrap", "class": "form-wrap form-builder" + c.mobileClass()}); n.before(C).appendTo(C); var E = e("
    ", {id: r + "-cb-wrap", "class": "cb-wrap " + s.layout.controls}).append(f[0], x); C.append(i, E), C.before(N), N.append(C, E); var O = c.debounce(function (t) { if (t && "keyup" === t.type && "className" === this.name)return !1; var a = e(this).parents(".form-field:eq(0)"); c.updatePreview(a), c.save() }); i.on("change blur keyup", ".form-elements input, .form-elements select, .form-elements textarea", O), e("li", f).click(function (t) { c.stopIndex = void 0, A(e(this), !0), c.save() }); var T = function () { var t = []; if (o.prepend && !e(".disabled.prepend", i).length) { var a = c.markup("li", o.prepend, {className: "disabled prepend"}); t.push(!0), i.prepend(a) } if (o.append && !e(".disabled.append", i).length) { var s = c.markup("li", o.append, {className: "disabled append"}); t.push(!0), i.append(s) } t.some(function (e) { return e === !0 }) && C.removeClass("empty") }, A = function (t) { var a = arguments.length <= 1 || void 0 === arguments[1] ? !1 : arguments[1], s = {}; if (t instanceof jQuery) { var l = t.data("newFieldData"); if (l)s = l.attrs, s.label = l.label; else { var o = t[0].attributes; a || (s.values = t.children().map(function (t, a) { return {label: e(a).text(), value: e(a).attr("value"), selected: Boolean(e(a).attr("selected"))} })); for (var n = o.length - 1; n >= 0; n--)s[o[n].name] = o[n].value } } else s = t; s.name = a ? $(s) : s.name, s.className = s.className || s["class"]; var r = /(?:^|\s)btn-(.*?)(?:\s|$)/g.exec(s.className); r && (s.style = r[1]), c.escapeAttrs(s), P(s), C.removeClass("empty") }, S = function () { var t = ""; t = s.formData ? s.formData : "" !== n.val() ? e.parseXML(s.element.value.trim()) : !1; var a = e(t).find("field"); if (a.length > 0)s.formData = t, a.each(function () { A(e(this)) }); else if (!t)if (o.defaultFields && o.defaultFields.length) { o.defaultFields.reverse(); for (var l = o.defaultFields.length - 1; l >= 0; l--)A(o.defaultFields[l]); C.removeClass("empty"), c.save() } else o.prepend || o.append || C.addClass("empty").attr("data-content", o.messages.getStarted); e("li.form-field:not(.disabled)", i).each(function () { c.updatePreview(e(this)) }), T() }, M = function () { var e = { xml: S, json: function () { console.log("coming soon") } }; e[o.dataType]() }; i.on("mousemove", "li.disabled", function (t) { e(".frmb-tt", this).css({left: t.offsetX - 16, top: t.offsetY - 34}) }), i.on("mouseenter", "li.disabled", function () { c.disabledTT.add(e(this)) }), i.on("mouseleave", "li.disabled", function () { c.disabledTT.remove(e(this)) }); var $ = function (e) { var t = (new Date).getTime(); return e.type + "-" + t }, D = function W(e) { var t = c.markup("a", o.messages.addOption, {className: "add add-opt"}), W = ""; if (e.values && e.values.length || (e.values = [{selected: !0}, {selected: !1}], e.values = e.values.map(function (e, t) { return e.label = o.messages.option + " " + (t + 1), e.value = c.hyphenCase(e.label), e })), W += '", W += '
    ', "select" === e.type) { var a = {second: o.messages.selectionsMessage}; W += F("multiple", e, a) } for (W += '
      ', v = 0; v < e.values.length; v++)W += R(e.name, e.values[v], e.multiple); return W += "
    ", W += c.markup("div", t, {className: "option-actions"}).outerHTML, W += "
    ", c.markup("div", W, {className: "form-group field-options"}).outerHTML }, L = function U(e) { var t, U = [], a = "", s = ["select", "checkbox-group", "radio-group"], l = function () { return -1 !== s.indexOf(e.type) }(), n = function () { var t = ["header", "paragraph", "file"].concat(s, o.messages.subtypes.header, o.messages.subtypes.paragraph); return -1 === t.indexOf(e.type) }(), r = void 0 !== e.role ? e.role.split(",") : []; U.push(H(e)), "checkbox" === e.type && U.push(F("toggle", e, {first: o.messages.toggle})), U.push(j("label", e)), e.size = e.size || "m", e.style = e.style || "default"; var i = ["header", "paragraph", "button"].concat(o.messages.subtypes.header, o.messages.subtypes.paragraph); if (i = i.concat(o.messages.subtypes.header, o.messages.subtypes.paragraph), -1 === i.indexOf(e.type) && U.push(j("description", e)), U.push(I(e)), "button" === e.type && U.push(q(e.style, e.type)), "number" === e.type && (U.push(B("min", e)), U.push(B("max", e)), U.push(B("step", e))), U.push(j("placeholder", e)), U.push(j("className", e)), U.push(j("name", e)), n && U.push(j("value", e)), "file" === e.type) { var u = {first: o.messages.multipleFiles, second: o.messages.allowMultipleFiles}; U.push(F("multiple", e, u)) } U.push('
    "), U.push(' "), U.push('
    "); for (t in o.roles)o.roles.hasOwnProperty(t) && (a = c.inArray(t, r) ? "checked" : "", U.push('
    ")); return U.push("
    "), "checkbox-group" !== e.type && "radio-group" !== e.type || (U.push('
    "), U.push('
    ")), l && U.push(D(e)), U.push(j("maxlength", e)), U.join("") }, F = function (e, t, a) { var s = function (t) { return '" }, l = void 0 !== t[e] ? "checked" : "", o = '', n = [o]; return a.first && n.unshift(s(a.first)), a.second && n.push(s(a.second)), '
    ' + n.join("") + "
    " }, I = function Y(e) { var t = o.messages.subtypes, a = e.type, s = e.subtype || "", Y = "", l = void 0; if (t[a]) { var n = ""; Y += '", Y = '
    ' + n + " " + Y + "
    " } return Y }, q = function (e, t) { var a = {button: "btn"}, s = o.messages.styles[a[t]], l = ""; if (s) { var n = ""; l += '', l += '
    ', Object.keys(o.messages.styles[a[t]]).forEach(function (s) { var n = e === s ? "active" : ""; l += '" }), l += "
    ", l = '
    ' + n + " " + l + "
    " } return l }, B = function _(e, t) { var a = t[e] || "", s = o.messages[e] || e, l = o.messages.placeholders[e] || "", _ = ''; return '
    " + _ + "
    " }, j = function (e, t) { var a = ["text", "textarea", "select"], s = ["header"], l = ["paragraph"], n = ["checkbox", "select", "checkbox-group", "date", "autocomplete", "radio-group", "hidden", "button", "header", "number"], r = t[e] || "", i = o.messages[e]; "label" === e && c.inArray(t.type, l) && (i = o.messages.content), s = s.concat(o.messages.subtypes.header, l), n = n.concat(l); var u = o.messages.placeholders, p = u[e] || "", m = "", f = []; if ("placeholder" !== e || c.inArray(t.type, a) || f.push(!0), "name" === e && c.inArray(t.type, s) && f.push(!0), "maxlength" === e && c.inArray(t.type, n) && f.push(!0), !f.some(function (e) { return e === !0 })) { var v = '"; m += "label" === e && c.inArray(t.type, l) || "value" === e && "textarea" === t.type ? '" : '', m = '
    ' + v + " " + m + "
    " } return m }, H = function (e) { var t = ["header", "paragraph", "button"], a = [], s = ""; return c.inArray(e.type, t) && a.push(!0), a.some(function (e) { return e === !0 }) || (s = F("required", e, {first: o.messages.required})), s }, P = function (t) { var a = t.type || "text", s = t.label || o.messages[a] || o.messages.label, l = c.markup("a", o.messages.remove, { id: "del_" + d, className: "del-button btn delete-confirm", title: o.messages.removeMessage }), n = c.markup("a", null, { id: d + "-edit", className: "toggle-form btn icon-pencil", title: o.messages.hide }), r = c.markup("div", [n, l], {className: "field-actions"}).outerHTML; r += '", t.description && (r += '?'); var u = t.required ? 'style="display:inline"' : ""; r += ' *", r += c.markup("div", "", {className: "prev-holder"}).outerHTML, r += '
    ', r += '
    ', r += L(t), r += c.markup("a", o.messages.close, {className: "close-field"}).outerHTML, r += "
    ", r += "
    "; var p = c.markup("li", r, {"class": a + "-field form-field", type: a, id: d}), m = e(p); m.data("fieldData", {attrs: t}), "undefined" != typeof c.stopIndex ? e("> li", i).eq(c.stopIndex).after(m) : i.append(m), e(".sortable-options", m).sortable(), c.updatePreview(m), o.editOnAdd && (c.closeAllEdit(i), c.toggleEdit(d)), d = c.incrementId(d) }, R = function (e, t, a) { var s = {selected: a ? "checkbox" : "radio"}, l = ["value", "label", "selected"], n = []; t = t || {selected: !1, label: "", value: ""}; for (var r = l.length - 1; r >= 0; r--) { var i = l[r]; if (t.hasOwnProperty(i)) { var d = { type: s[i] || "text", "class": "option-" + i, placeholder: o.messages.placeholders[i], value: t[i], name: e }; "selected" === i && (d.checked = t.selected), n.push(c.markup("input", null, d)) } } var u = {className: "remove btn", title: o.messages.removeMessage}; n.push(c.markup("a", o.messages.remove, u)); var p = c.markup("li", n); return p.outerHTML }; i.on("click touchstart", ".remove", function (t) { var a = e(this).parents(".form-field:eq(0)"); t.preventDefault(); var s = e(this).parents(".sortable-options:eq(0)").children("li").length; 2 >= s ? o.notify.error("Error: " + o.messages.minOptionMessage) : e(this).parent("li").slideUp("250", function () { e(this).remove(), c.updatePreview(a), c.save() }) }), i.on("touchstart", "input", function (t) { if (t.handled === !0)return !1; if ("checkbox" === e(this).attr("type"))e(this).trigger("click"); else { e(this).focus(); var a = e(this).val(); e(this).val(a) } }), i.on("click touchstart", ".toggle-form, .close-field", function (t) { if (t.stopPropagation(), t.preventDefault(), t.handled === !0)return !1; var a = e(this).parents(".form-field:eq(0)").attr("id"); c.toggleEdit(a), t.handled = !0 }), i.on("keyup change", '[name="label"]', function () { e(".field-label", e(this).closest("li")).text(e(this).val()) }), i.delegate("input.error", "keyup", function () { e(this).removeClass("error") }), i.on("keyup", 'input[name="description"]', function () { var t = e(this).parents(".form-field:eq(0)"), a = e(".tooltip-element", t), s = e(this).val(); if ("" !== s)if (a.length)a.attr("tooltip", s).css("display", "inline-block"); else { var l = '?'; e(".field-label", t).after(l) } else a.length && a.css("display", "none") }), c.updateMultipleSelect(), i.delegate('input[name="name"]', "blur", function () { e(this).val(c.safename(e(this).val())), "" === e(this).val() ? e(this).addClass("field_error").attr("placeholder", o.messages.cannotBeEmpty) : e(this).removeClass("field_error") }), i.delegate("input.fld-maxlength", "blur", function () { e(this).val(c.forceNumber(e(this).val())) }), i.on("click touchstart", ".delete-confirm", function (t) { t.preventDefault(); var a = this.getBoundingClientRect(), s = document.body.getBoundingClientRect(), l = { pageX: a.left + a.width / 2, pageY: a.top - s.top - 12 }, n = e(this).parents(".form-field:eq(0)").attr("id"), r = e(document.getElementById(n)), d = function () { r.slideUp(250, function () { r.removeClass("deleting"), r.remove(), c.save(), i[0].childNodes.length || C.addClass("empty").attr("data-content", o.messages.getStarted) }) }; if (document.addEventListener("modalClosed", function () { r.removeClass("deleting") }, !1), o.fieldRemoveWarn) { var u = c.markup("h3", o.messages.warning), p = c.markup("p", o.messages.fieldRemoveWarning); c.confirm([u, p], d, l), r.addClass("deleting") } else d(r) }), i.on("click", ".style-wrap button", function () { var t = e(this).val(), a = e(this).parent(), s = a.prev(".btn-style"); s.val(t), e(this).siblings(".btn").removeClass("active"), e(this).addClass("active"), O.call(a) }), i.on("click", "input.fld-required", function () { var t = e(this).parents("li.form-field").find(".required-asterisk"); t.toggle() }), i.on("click", 'input[name="enable-roles"]', function () { var t = e(this).siblings("div.available-roles"), a = e(this); t.slideToggle(250, function () { a.is(":checked") || e('input[type="checkbox"]', t).removeAttr("checked") }) }), i.on("click", ".add-opt", function (t) { t.preventDefault(); var a = e(this).parents(".field-options:eq(0)"), s = e('[name="multiple"]', a), l = e(".option-selected:eq(0)", a), o = !1; o = s.length ? s.prop("checked") : "checkbox" === l.attr("type"); var n = l.attr("name"); e(".sortable-options", a).append(R(n, !1, o)), c.updateMultipleSelect() }), i.on("mouseover mouseout", ".remove, .del-button", function () { e(this).parents("li:eq(0)").toggleClass("delete") }); /* var z = e(document.getElementById(r + "-view-data")); z.click(function (e) { e.preventDefault(); var t = c.htmlEncode(n.val()), a = c.markup("code", t, {className: "xml"}), s = c.markup("pre", a); c.dialog(s, null, "data-dialog") });*/ var z = e(document.getElementById(r + "-save")); z.click(function (e) { e.preventDefault(); var t = c.htmlEncode(n.val()), a = c.markup("code", t, {className: "xml"}), s = c.markup("pre", a); // c.dialog(s, null, "data-dialog") jQuery("#form-xml").html(s); }); var X = e(document.getElementById(r + "-clear-all")); return X.click(function () { var t = e("li.form-field"), a = this.getBoundingClientRect(), s = document.body.getBoundingClientRect(), l = { pageX: a.left + a.width / 2, pageY: a.top - s.top - 12 }; t.length ? c.confirm(o.messages.clearAllMessage, function () { c.removeAllfields(), o.notify.success(o.messages.allFieldsRemoved), c.save() }, l) : c.dialog("There are no fields to clear", {pageX: l.pageX, pageY: l.pageY}) }), e(document.getElementById(r + "-save")).click(function (e) { e.preventDefault(), c.save(), c.validateForm(e) }), n.parent().find('p[id*="ideaTemplate"]').remove(), n.wrap('
    '), M(), i.css("min-height", f.height()), o.stickyControls && c.stickyControls(i, m), document.dispatchEvent(s.events.loaded), s.actions = {clearFields: c.removeAllfields}, s }; e.fn.formBuilder = function (a) { return this.each(function () { var s, l = this; if (e(l).data("formBuilder")) { var o = e(l).parents(".form-builder:eq(0)"); o.before(l), o.remove() } s = new t(a, l), e(l).data("formBuilder", s) }) } }(jQuery), function (e) { e.fn.toXML = function (t) { var a = "", s = function (a) { var s = []; return e(".sortable-options li", a).each(function () { var a = e(this), l = { value: e(".option-value", a).val(), selected: e(".option-selected", a).is(":checked") }, o = t.markup("option", e(".option-label", a).val(), l).outerHTML; s.push("\n " + o) }), s.join("") + "\n " }; return this.each(function () { var l = this; l.childNodes.length >= 1 && (a += "\n ", t.forEach(l.childNodes, function (l, o) { l = l; var n = e(o); if (!n.hasClass("disabled")) { var r, i, c, d, u; !function () { r = e(".roles-field:checked", o).map(function () { return this.value }).get(), i = e('[name="enable-other"]:checked', o).length; var l = t.getTypes(n); e('[class*="fld-"]', o).each(function () { var e = t.camelCase(this.name); l[e] = "checkbox" === this.type ? this.checked : this.value }), r.length && (l.role = r.join(",")), i && (l.other = "true"), l = t.trimObj(l), l = t.escapeAttrs(l), c = l.type.match(/(select|checkbox-group|radio-group)/), d = "", c && (d = s(n)), u = t.markup("field", d, l), a += "\n " + u.outerHTML }() } }), a += "\n \n") }), a } }(jQuery), "remove" in Element.prototype || (Element.prototype.remove = function () { this.parentNode && this.parentNode.removeChild(this) }), "function" != typeof Event && !function () { window.Event = function (e) { var t = document.createEvent("Event"); return t.initEvent(e, !0, !0), t } }();