Forms = {};
function defaultPattern(string) {
var Patterns = {
email: /^(([^<>\(\)\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@(([\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
password: /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?\.:&]+$/,
url: /^[(http(s)?):\/\/(www\.)?a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)$/,
tel: /^[\+][1-9]\d+$/,
number: /^[0-9]+$/,
integer: /^[\d\+\-]+([\d\.,eE\+\-]*[\d]+)*$/,
float: /^[\d\+\-]+([\d\.,eE\+\-]*[\d]+)*$/,
natural: /^[^\$\?\+\[\]\\!%@&=_]+$/,
name:/^[^\$\?\+\[\]\\0-9!%@&=_]+$/
};
return (string) ? Patterns[string] : undefined;
}
$.fn.getForm = function () {
var id = $(this).closest("form").attr("id");
if (!id) id = $(this).attr("form");
return (Forms[id] && Forms[id].Controls) ? Forms[id] : u;
};
$.fn.getData = function () {
var id = $(this).attr("id");
var Collection;
if (!$(this).is("form")) {
if ($(this).getForm()) Collection = $(this).getForm().Controls;
else return {};
} else Collection = Forms;
return Collection[id];
};
$(function () {
function process() {
var Data = this;
var Categories = {
"form": {
Props: {
tagName: ["form"]
}, process: function (Data) {
Data.pristine_ = true;
Data.ajax_ = Data.$t.data("ajax");
if (Data.ajax_ == undefined) Data.ajax_ = true;
Data.reset_ = Data.$t.data("reset");
if (Data.reset_ == undefined) Data.reset_ = false;
Data.validate_ = Data.$t.data("validate");
if (Data.validate_ == undefined) Data.validate_ = true;
Data.unload_ = Data.$t.data("unload");
if (Data.unload_ == undefined) Data.unload_ = true;
Data.Ajax = {};
Data.Callbacks = {};
Data.Ajax["url"] = Data.$t.attr("action");
Data.Ajax["method"] = (Data.$t.attr("method")) ? Data.$t.attr("method").toLowerCase() : "post";
if (Data.Ajax.method == "post") Data.Ajax["async"] = false;
if (Data.$t.data("ajax-async") || Data.Ajax.method == "post") Data.Ajax["async"] = Data.$t.data("ajax-async") == true;
if (Data.$t.data("ajax-cache")) Data.Ajax["cache"] = Data.$t.data("ajax-cache") == true;
if (Data.$t.data("ajax-crossDomain")) Data.Ajax["crossDomain"] = Data.$t.data("ajax-crossDomain") == true;
if (Data.$t.data("ajax-contentType")) Data.Ajax["contentType"] = Data.$t.data("ajax-contentType"); // sent data type
if (Data.$t.data("ajax-request")) Data.Ajax["contentType"] = Data.$t.data("ajax-request"); // sent data type
if (Data.$t.data("ajax-dataType")) Data.Ajax["dataType"] = Data.$t.data("ajax-dataType"); // expected data type
if (Data.$t.data("ajax-response")) Data.Ajax["dataType"] = Data.$t.data("ajax-response"); // expected data type
if (Data.$t.data("ajax-ifModified")) Data.Ajax["ifModified"] = Data.$t.data("ajax-ifModified" == true);
if (Data.$t.data("ajax-isLocal")) Data.Ajax["isLocal"] = Data.$t.data("ajax-isLocal" == true);
if (Data.$t.data("ajax-mimeType")) Data.Ajax["mimeType"] = Data.$t.data("ajax-mimeType");
if (Data.$t.data("ajax-password")) Data.Ajax["password"] = Data.$t.data("ajax-password");
if (Data.$t.data("ajax-processData")) Data.Ajax["processData"] = Data.$t.data("ajax-processData" == true);
if (Data.$t.data("ajax-scriptCharset")) Data.Ajax["scriptCharset"] = Data.$t.data("ajax-scriptCharset");
if (Data.$t.data("ajax-timeout")) Data.Ajax["timeout"] = parseInt(Data.$t.data("ajax-timeout"));
if (Data.$t.data("ajax-traditional")) Data.Ajax["traditional"] = Data.$t.data("ajax-traditional" == true);
if (Data.$t.data("ajax-username")) Data.Ajax["username"] = Data.$t.data("ajax-username");
if (Data.$t.data("ajax-beforeSend")) Data.Callbacks["beforeSend"] = Data.$t.data("ajax-beforeSend");
if (Data.$t.data("ajax-complete")) Data.Callbacks["complete"] = Data.$t.data("ajax-complete");
if (Data.$t.data("ajax-error")) Data.Callbacks["error"] = Data.$t.data("ajax-error");
if (Data.$t.data("ajax-success")) Data.Callbacks["success"] = Data.$t.data("ajax-success");
if (Data.$t.data("ajax-target")) Data["target"] = Data.$t.data("ajax-target");
Data.$t.removeAttr(Data.$t.findAttr("data-ajax-"));
Data.$controls = $();
var $controls = Data.$t.find("input, textarea, select");
$controls = $controls.add($("input, textarea, select").filter(function () {
return $(this).attr("form") == Data.id;
}));
$controls.each(function () {
if ($(this).data("mdc") !== false) $(this).objectify();
});
Data.update = function () {
Data.$controls = Data.$controls.filter(function () {
var Control = $(this).getData();
var present_ = $("body").find(this).length > 0;
if (!present_) delete Data[Control.id];
else Control.update();
return present_;
});
Data.Data = {};
Data.$controls.not(":disabled").each(function(_i) {
var Control = $(this).getData();
var Collection = Data.Data, name = Control.name;
if (Data.Ajax.contentType == "application/json" && Control.Collection) {
if (Control.Collection.outer) {
if (!Collection[Control.Collection.outer]) {
if (typeof Control.Collection.inner == "number") Collection[Control.Collection.outer] = [];
else Collection[Control.Collection.outer] = {};
}
Collection = Collection[Control.Collection.outer];
}
if (!Collection[Control.Collection.inner]) Collection[Control.Collection.inner] = {};
Collection = Collection[Control.Collection.inner], name = Control.origname;
}
if (Control.$t.is(checkboxes)) {
if (Control.$t.is(":checked")) Collection[name] = Control.value;
} else Collection[name] = Control.value;
});
Data.data = jQuery.param(Data.Data);
};
Data.submit = submitForm;
Data.reset = function () {
function reset(Cont, type) {
if (!Cont.$t.length) return Cont;
if (Cont.$t.data("reset") !== false && Cont.$t.data("reset") !== "false") {
var attr = Cont.$t.attr("value");
var resetVal = (attr) ? attr : "";
if (Cont.checked_ != undefined) Cont.$t.prop("checked", false);
else if (Cont.$t.is("select")) Cont.$t.val(Cont.$cont.find("option").prop("selected", false).eq(0).prop("selected", true).val());
else {
Cont.$t.val(resetVal);
Cont.value = resetVal;
}
Cont.$t.data("error", "").data("valid", "").errorMsg().closest(".md-component").removeClass("error valid");
}
Cont.change();
Cont.$t.open();
return Cont;
}
Data.$controls.each(function (_i) {
var Cont = $(this).getData();
Cont.update();
reset(Cont, "control")
if (Cont.$provider && Cont.$provider.getData().$t) reset(Cont.$provider.getData(), "provider");
if (Cont.$receiver && Cont.$receiver.getData().$t) reset(Cont.$receiver.getData(), "receiver");
});
};
}
}, "list": {
Props: {
tagName: ["select"]
}, process: function (Data) {
Data.$t.data("icon-trailing", "fa fa-chevron-down small");
}
}, "date": {
Props: {
type: ["date"]
}, process: function (Data) {
Data.$t.css("cursor", "pointer");
Data.$t.data("icon-trailing", "fa fa-calendar-alt");
Data.$t.datepicker({
dateFormat: "yy-mm-dd",
minDate: Data.$t.attr("min"),
maxDate: Data.$t.attr("max"),
showOn: "focus",
buttonImageOnly: true,
onSelect: function () {
Data.$t.trigger("focus");
Data.$t.trigger("input");
Data.$t.trigger("change");
}
});
Data.$t.attr("type", "text");
$(".ui-datepicker").addClass("notranslate");
}
}, "field": {
Props: {
tagName: ["select", "textarea"],
type: ["hidden", "date", "datetime-local", "email", "file", "month", "number", "password", "search", "tel", "text", "time", "url", "week"]
}, process: function (Data) {
function scrollIntoView(Data) {
var _padding = 15;
var _scrollY = window.scrollY;
var _windowH = $(window).height();
var _headerH = ($("header, .header").filter(".affix").length) ? $("header.affix, .header.affix").outerHeight() : 0;
var _listH = (Data.$list) ? Data.$list.outerHeight() : 0;
var _calendarH = (Data.$t.is(".md-component.date *")) ? $("#ui-datepicker-div").outerHeight() : 0;
var _controlH = Data.$t.outerHeight();
var _controlY = Data.$t.offset().top;
var _setH = _padding * 2 + _controlH + _listH + _calendarH;
var above_ = _controlY < (_scrollY + _headerH);
var beneath_ = _controlY > ((_scrollY + _windowH) - _setH);
if (above_) $(window).scrollTop(_controlY - _headerH - _padding)
else if (beneath_) $(window).scrollTop(_controlY - _windowH + _setH)
}
$.fn.open = function (open_) {
var Data = $(this).getData();
if (typeof open_ != "boolean") open_ = Data.$t.val().length > 0;
Data.open = open_;
Data.update();
scrollIntoView(Data);
return $(this);
};
function open() {
this.$t.open();
};
function focus(Event) {
function listHeight(Data) {
var _padding = 15;
var _windowH = $(window).height();
var _pageH = $("body").outerHeight();
var _headerH = ($("header, .header").filter(".affix").length) ? $("header.affix, .header.affix").outerHeight() : 0;
var _footerH = ($("footer").length) ? $("footer").outerHeight() : 0;
var _controlH = Data.$t.outerHeight();
var _controlY = Data.$t.offset().top;
var _max1 = _windowH - _headerH - _footerH - _controlH - (_padding * 2);
var _max2 = _pageH - _headerH - _footerH - _controlY - _controlH - (_padding * 2);
var _max = (_max1 > _max2) ? _max2 : _max1;
var _min = 200;
var _height = (_max < _min) ? _min : _max;
Data.$list.css("max-height", _height + "px");
}
var focused_ = this.$t.is(":focus");
var param_ = ((Event) ? Event.type == "focus" : false) || this.$t.val().length > 0;
this.focused = focused_;
this.$t.open(param_);
if (this.$list) {
if (focused_) {
listHeight(this);
this.$list.addClass("visible");
} else this.$list.removeClass("visible");
}
};
function input() {
this.$t.errorMsg(false);
};
if (!Data.$t.hasValue("pattern")) {
var patternClass = Data.$t.data("pattern");
if (!patternClass) patternClass = Data.$t.attr("type");
var pattern = defaultPattern(patternClass);
if (pattern) Data.$t.attr("pattern", pattern.toString().slice(1, -1));
};
Data.$field = $("
").appendTo(Data.$cont);
Data.$t.addClass("input").appendTo(Data.$field);
Data.$outline = $("
").appendTo(Data.$field);
$("
").appendTo(Data.$outline);
$("
").append(Data.$label).appendTo(Data.$outline);
$("
").appendTo(Data.$outline);
function addIcon(Data, attr) {
var icon = Data.$t.data("icon" + ((attr) ? "-" + attr : ""));
if (!attr) attr = "leading";
if (icon) {
icon = icon.trim();
if ((icon.indexOf(".bmp") > 0 || icon.indexOf(".gif") > 0 || icon.indexOf(".ico") > 0 || icon.indexOf(".jpg") > 0 || icon.indexOf(".jpeg") > 0 || icon.indexOf(".png") > 0 || icon.indexOf(".svg") > 0 || icon.indexOf(".webp") > 0) && icon.indexOf(" ") == -1) {
if (icon.indexOf("http") != 0 && icon.indexOf("www.") != 0 && icon.indexOf("/") != 0) icon = "/" + icon
Data.$field.prepend("
");
} else Data.$field.prepend("
");
}
}
addIcon(Data);
addIcon(Data, "leading");
addIcon(Data, "trailing");
Data.$helper.appendTo(Data.$cont);
var list = Data.$t.attr("list");
if (typeof list == "string") list = list.replaceAll(".", "\\.");
Data.$list = $("#" + list);
if (Data.$list.length) {
Data.$list.children().each(function() {
$(this).parent().append($(this).replaceTagname("li"));
$(this).remove();
});
var $newlist = Data.$list.replaceTagname("ul");
Data.$list.remove();
Data.$list = $newlist.addClass("datalist");
Data.$list.on("click", function(Event) {
var $li = $(Event.target.closest("li"));
var $input = $("[list=\"" + $(this).attr("id") + "\"]");
$input.val($li.text()).change();
$input.getData().update();
});
Data.$list.insertAfter(Data.$field);
} else Data.$list = undefined;
Data.initialExt = open;
Data.focusExt = focus;
Data.inputExt = input;
}
}, "multiline": {
Props: {
tagName: ["textarea"]
}, process: function (Data) {
var rows = Data.$t.attr("rows");
if (!rows) rows = "4";
var height = ((parseInt(rows.trim()) * 1.2) + 2) + "em";
Data.$t.add(Data.$outline).attr("height", height);
Data.$t.add(Data.$outline).css("min-height", height);
}
}, "selection": {
Props: {
type: ["checkbox", "radio"]
}, process: function (Data) {
function check(Event) {
this.checked_ = this.$t.is(":checked");
if (this.radio_) {
var $sibs = this.$cont.parent().find("input[name='" + this.name + "']").not(this.$t)
if ($sibs.length) $sibs.each(function (_i) {
var Sib = $(this).getData()
if (Sib) Sib.checked_ = false;
$(this).toggleTarget();
});
}
};
Data.$t.appendTo(Data.$cont);
Data.$label.appendTo(Data.$cont);
Data.$helper.appendTo(Data.$cont);
if (!Data.$t.attr("value")) Data.$t.attr("value", 1).val(1);
Data.$label.contents().wrapAll("
");
var $img = Data.$label.find("img");
var $box = $("");
if ($img.length) {
Data.$cont.addClass("img");
$img.prependTo(Data.$label);
$box.appendTo(Data.$label);
} else $box.prependTo(Data.$label);
Data.initialExt = check;
Data.changeExt = check;
}
}, "radio": {
Props: {
type: ["radio"]
}, process: function (Data) {
Data.radio_ = true;
Data.$cont.prevAll(".md-component.radio").each(function () {
var PrevData = $(this).find("input").getData()
PrevData.name = Data.name;
PrevData.update();
});
}
}, "range": {
Props: {
type: ["range"]
}, process: function (Data) {
function change() {
var min = parseInt(this.$t.attr("min"));
var max = parseInt(this.$t.attr("max"));
var stop = ((this.value - ((min) ? min : 0)) / (((max) ? max : 100) - ((min) ? min : 0)));
this.$t.css('background-image',
'-webkit-gradient(linear, left top, right top, '
+ 'color-stop(' + (stop - .02) + ', rgba(123,124,126,1)), '
+ 'color-stop(' + (stop + .02) + ', rgba(123,124,126,.28))'
+ ')'
);
this.update();
}
Data.$label.appendTo(Data.$cont);
Data.$t.appendTo(Data.$cont);
Data.$helper.appendTo(Data.$cont);
Data.changeExt = change;
Data.initialExt = change;
}
}, "button": {
Props: {
type: ["button", "reset", "submit"]
}, process: function (Data) {
Data.$t.css("transition", "none");
Data.$t.addClass("button");
Data.$t.css("border-radius", Math.ceil(Data.$t.outerHeight() / 2) + "px");
Data.$t.css("transition", "");
Data.$cont.remove();
Data.$cont = undefined;
Data.updateGen = undefined;
Data.initialGen = undefined;
Data.changeGen = undefined;
}
}
};
function bindEvents(Data, category) {
Data.$t.on("focus", function (Event) {
Data.focus(Event);
});
Data.$t.on("blur", function (Event) {
Data.focus(Event);
});
Data.$t.on("input", function (Event) {
Data.input(Event);
});
Data.$t.on("change", function (Event) {
Data.change(Event);
});
}
function prepareDom(Data, category) {
Data.$cont = $("
").addClass("md-component");
Data.$cont.addClass(Data.$t.attr("class"));
Data.$cont.attr("width", Data.$t.attr("width"))
var style = Data.$t.attr("style"), width = Data.$t.css("width");
if (style && style.indexOf("width") > -1 && width) {
Data.$cont.css("width", width);
Data.$t.css("width", "");
}
Data.$t.removeAttr("width").addClass("input").attr("form", Data.Form.id);
if (Data.$t.attr("disabled")) Data.$cont.addClass("disabled");
if (Data.$t.attr("readonly")) Data.$cont.addClass("readonly");
var aspval = Data.$t.findAttr("data-val-");
if (aspval) $.each(aspval.split(" "), function() {
var attr = this.slice("data-val-".length)
if (!Data.$t.attr(attr)) Data.$t.attr(attr, true)
});
Data.$helper = $(".helper[data-valmsg-for=" + Data.id + "]");
if (!Data.$helper.length) Data.$helper = Data.$t.nextAll(".helper").not("[data-valmsg-for]").eq(0);
if (!Data.$helper.length) Data.$helper = Data.$t.prevAll(".helper").not("[data-valmsg-for]").eq(0);
if (!Data.$helper.length) Data.$helper = $("").addClass("helper");
if (Data.$helper.html().trim().length > 0) Data.$helper.css("max-height", "none");
Data.$label = $("label[for=" + Data.id + "]");
if (Data.$t.is(checkboxes)) {
if (!Data.$label.length) Data.$label = Data.$t.nextAll("label").eq(0).not("[for]");
if (!Data.$label.length) Data.$label = Data.$t.prevAll("label").eq(0).not("[for]");
} else {
if (!Data.$label.length) Data.$label = Data.$t.prevAll("label").eq(0).not("[for]");
if (!Data.$label.length) Data.$label = Data.$t.nextAll("label").eq(0).not("[for]");
}
if (!Data.$t.attr("value")) Data.$t.attr("value", "");
Data.$cont.insertAfter(Data.$t);
}
$.each(Categories, function (category, Category) {
$.each(Category.Props, function (prop, _Values) {
$.each(_Values, function (_i, value) {
var result_ = (Data.$t.prop(prop)) ? Data.$t.prop(prop).toLowerCase() == value.toLowerCase() : false;
if (result_) {
if (Data.type) Data.type += (" " + category);
else Data.type = category;
if (!Data.initialised) {
if (!Data.$t.is("form") && ((!Data.$t.attr("type") || Data.$t.attr("type").toLowerCase() != "hidden") && !Data.$t.prop("hidden"))) prepareDom(Data, category);
bindEvents(Data, category);
}
if ((!Data.$t.attr("type") || Data.$t.attr("type").toLowerCase() != "hidden") && !Data.$t.prop("hidden")) {
if (Data.type != "form") Data.userInput_ = true;
if (Data.$cont) Data.$cont.addClass(category);
Category.process(Data, category);
};
Data.initialised = true;
Data.initial();
};
});
});
});
};
function FormData(elem) {
var Data = this;
this.$t = $(elem);
this.updateGen = function (Event) {
var Data = this;
this.value = (this.$t.getListOption().length) ? this.$t.getListOption().data("value") : this.$t.val();
var $set = this.$t.closest("fieldset");
if ($set.length) {
this.Collection = {};
this.Collection.$inner = $set;
this.Collection.$outer = $set.parent().closest("fieldset");
this.Collection.inner = this.Collection.$inner.attr("id");
if (!this.Collection.inner) {
if (this.Collection.$outer.length) this.Collection.inner = this.Collection.$outer.find("fieldset").index(this.Collection.$inner);
else this.Collection.inner = "collection" + $("fieldset").index(this.Collection.$inner);
}
if (this.Collection.$outer.length) {
this.Collection.outer = this.Collection.$outer.attr("id");
if (!this.Collection.outer) this.Collection.outer = "collection" + $("fieldset").index(this.Collection.$outer);
}
if (this.Collection.outer) {
if (typeof this.Collection.inner == "number") this.name = this.Collection.outer + "[" + this.Collection.inner + "]." + this.origname;
else this.name = this.Collection.outer + "." + this.Collection.inner + "." + this.origname;
} else this.name = this.Collection.inner + "." + this.origname;
}
if (this.$label && this.$label.length && this.id) this.$label.attr("for", this.id);
this.$receiver = u, this.$provider = u;
if (Data.$t.is(checkboxes)) Data.$receiver = $("[data-provider=" + Data.name + "]").not(Data.$t);
else Data.$receiver = $("[data-provider=" + Data.id + "]").not(Data.$t);
if (!Data.$receiver.length) Data.$receiver = u;
if (Data.$t.data("provider")) Data.$provider = $("[id=" + Data.$t.data("provider") + "]").not(Data.$t);
if (Data.$t.data("receiver")) {
var $receiver = $("#" + Data.$t.data("receiver")).not(Data.$t);
var Receiver = $receiver.getData();
if (!Data.$receiver) Data.$receiver = $();
Data.$receiver = Data.$receiver.add($receiver);
$receiver.data("provider", Data.id);
if (Receiver.$t) Receiver.$provider = Data.$t;
}
if (this.$receiver) this.$receiver.each(function() {
var value = (Data.value) ? Data.value : "";
if (!Data.$t.is(checkboxes) || Data.$t.is(":checked")) {
if ($(this).is(controls)) {
$(this).val(value);
if ($(this).getData() && $(this).getData().$t) $(this).getData().update().value = value;
} else {
$(this).html(value);
}
}
});
if (this.$t && this.$t.length) {
if (this.id) this.$t.attr("id", this.id);
if (this.name) this.$t.attr("name", this.name);
if (this.initialised) this.$t.addClass("mdc-field");
} if (this.$cont && this.$cont.length) {
if (this.open) this.$cont.addClass("open");
else this.$cont.removeClass("open");
if (this.focused) this.$cont.addClass("focused");
else this.$cont.removeClass("focused");
if (this.invalid) this.$cont.addClass("invalid");
else this.$cont.removeClass("invalid");
}
}; this.initialGen = function (Event) {
if (Data.change) Data.change(Event);
}; this.inputGen = function (Event) {
}; this.changeGen = function (Event) {
if (this.userInput_) this.Form.pristine_ = !this.value || this.value.length == 0;
if (require("toggle.js")) this.$t.toggleTarget(undefined, true);
};
this.update = function (Event) {
if (this.updateGen) this.updateGen(Event);
if (this.updateExt) this.updateExt(Event);
return this;
}; this.initial = function (Event) {
if (this.initialGen) this.initialGen(Event);
if (this.initialExt) this.initialExt(Event);
if (this.update) this.update(Event);
return this;
}; this.focus = function (Event) {
if (this.focusGen) this.focusGen(Event);
if (this.focusExt) this.focusExt(Event);
if (this.update) this.update(Event);
return this;
}; this.input = function (Event) {
if (this.inputGen) this.inputGen(Event);
if (this.inputExt) this.inputExt(Event);
if (this.update) this.update(Event);
return this;
}; this.change = function (Event) {
if (this.changeGen) this.changeGen(Event);
if (this.changeExt) this.changeExt(Event);
if (this.update) this.update(Event);
return this;
};
};
$.fn.objectify = function () {
if ($(this).is(".mdc-field")) return $(this);
var Data = new FormData(this);
var form_ = Data.$t.is("form");
if (form_) Data.Controls = {};
else {
Data.Form = Data.$t.getForm();
if (!Data.Form) return Data.$t;
Data.$t.attr("form", Data.Form.id);
}
var Collection = (form_) ? Forms : Data.Form.Controls;
Data._i = Object.keys(Collection).length;
Data.id = Data.$t.attr("id");
Data.origname = Data.$t.attr("name");
if (!Data.origname) Data.origname = Data.id;
if (!Data.origname) Data.origname = "formField" + Data._i;
Data.$t.attr("data-name", Data.origname);
Data.name = Data.origname;
if (!Data.id) Data.id = Data.origname + $("[data-name='" + Data.origname + "']").index(Data.$t);
Data.$t.data("index", Data._i);
Collection[Data.id] = Data;
if (!form_) Data.Form.$controls = Data.Form.$controls.add(Data.$t);
Data.userInput_ = false;
Data.process = process;
Data.process();
return Data.$t;
}
$("form").each(function () {
$(this).objectify();
});
style();
});