(function() { var extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; Backbone.Poised || (Backbone.Poised = {}); Backbone.Poised.LinkedForm = (function(superClass) { extend(LinkedForm, superClass); function LinkedForm() { return LinkedForm.__super__.constructor.apply(this, arguments); } LinkedForm.prototype.tagName = 'form'; LinkedForm.prototype.className = 'poised'; LinkedForm.prototype.initialize = function(options) { if (options == null) { options = {}; } if (options.model1 == null) { throw new Error('Missing `model1` option'); } if (options.model2 == null) { throw new Error('Missing `model2` option'); } this.model = options.model1; this.model1 = options.model1; this.model2 = options.model2; this.extractOptions(options); return this.extractFields(options); }; LinkedForm.prototype.bindValidation = function() { Backbone.Validation.bind(this, { model: this.model1 }); return Backbone.Validation.bind(this, { model: this.model2 }); }; LinkedForm.prototype.controlView = function(field) { field = _.defaults(field, { model1: this.model1, model2: this.model2, parentView: this }); field.validate = this.model1.__proto__.validation && _.has(this.model1.__proto__.validation, field.attribute); switch (field.type) { case 'text': return new Backbone.Poised.LinkedStringControl(field); case 'range': return new Backbone.Poised.LinkedRangeControl(field); case 'number': return new Backbone.Poised.LinkedNumberControl(field); case 'select': return new Backbone.Poised.LinkedSelectControl(field); case 'anchor': return new Backbone.Poised.Anchor(field); } }; return LinkedForm; })(Backbone.Poised.Form); }).call(this);