jQuery(document).ready(function () { var heightToAdd = jQuery(".pbuilder_row_stick_top").height(); heightToAdd = heightToAdd - 28; jQuery('.stick-top-div').css('height', heightToAdd + 'px'); }); (function ($) { /* Validation Singleton */ var Validation = function () { var rules = { email: { check: function (value, default_value) { if (value !== default_value) return testPattern(value, "[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])"); return true; }, msg: "Enter a valid e-mail address." }, url: { check: function (value, default_value) { if (value !== default_value) return testPattern(value, "^https?://(.+\.)+.{2,4}(/.*)?$"); return true; }, msg: "Enter a valid URL." }, checkbox: { check: function (value, default_value, checked) { if (checked == 'checked') return true; }, msg: "You need to check the box." }, required: { check: function (value, default_value) { if (value !== default_value) return true; else return false; }, msg: "This field is required." } } var testPattern = function (value, pattern) { var regExp = new RegExp(pattern, ""); return regExp.test(value); } return { addRule: function (name, rule) { rules[name] = rule; }, getRule: function (name) { return rules[name]; } } } /* Form factory */ var Form = function (form) { var fields = []; form.find("[validation]").each(function () { var field = $(this); if (field.attr('validation') !== undefined) { fields.push(new Field(field)); } }); this.fields = fields; } Form.prototype = { validate: function () { for (field in this.fields) { if (field != "remove") { this.fields[field].validate(); } } }, isValid: function () { for (field in this.fields) { if (field != "remove") { if (!this.fields[field].valid) { this.fields[field].field.focus(); return false; } } } return true; } } /* Field factory */ var Field = function (field) { this.field = field; this.valid = false; this.attach("change"); } Field.prototype = { attach: function (event) { var obj = this; if (event == "change") { obj.field.bind("change", function () { return obj.validate(); }); } if (event == "keyup") { obj.field.bind("keyup", function (e) { return obj.validate(); }); } }, validate: function () { var obj = this, field = obj.field, errorClass = "errorlist", errorlist = $(document.createElement("ul")).addClass(errorClass), types = field.attr("validation").split(" "), container = field.parent(), errors = []; field.next(".errorlist").remove(); for (var type in types) { if (type != "remove") { var currentValue = field.val(); var defaultValue = typeof field.attr('default-value') != "undefined" ? field.attr('default-value') : ""; var checkedValue = typeof field.attr('checked') != "undefined" ? field.attr('defaultchecked') : false; var rule = $.Validation.getRule(types[type]); //console.log('Validate ' + field.attr('name')); //if (field.attr('name') == "name") { // console.log('value ' + field.val()); // console.log('default-value ' + field.attr('default-value')); // console.log('checked ' + field.attr('checked')); //} //if (!rule.check(field.val(), field.attr('default-value'), field.attr('checked'))) { if (!rule.check(currentValue, defaultValue, checkedValue)) { container.addClass("error"); errors.push(field.attr('error-message')); container.css("margin", ''); field.css("border-color", 'red !important;'); } } } if (errors.length) { obj.field.unbind("keyup") obj.attach("keyup"); field.after(errorlist.empty()); for (error in errors) { if (error != "remove") { errorlist.append("