(function($, undefined) { $.AWPCP = typeof $.AWPCP !== 'undefined' ? $.AWPCP : {}; $.AWPCP.PlaceAdForm = function(id, selectors) { this.id = id; this.form = $(id); selectors = $.extend({ users: '', terms: '', methods: '' }, selectors); this.users = this.form.find(selectors.users); this.terms = this.form.find(selectors.terms); this.methods = this.form.find(selectors.methods); this.categories = this.form.find(selectors.categories); this.name = this.form.find(selectors.name); this.email = this.form.find(selectors.email); this.website = this.form.find(selectors.website); this.phone = this.form.find(selectors.phone); this.state = this.form.find(selectors.state); this.city = this.form.find(selectors.city); }; $.extend($.AWPCP.PlaceAdForm.prototype, { get_user_data: function(user_id) { var user = null; $.each(AWPCP_Users, function(k, entry) { if (entry.ID == user_id) { user = entry; return false; } }); return user; }, get_category_terms: function(category, terms) { terms = terms || this.terms; if (category.length < 0) { return terms; } return terms.filter(function() { categories = $.parseJSON($(this).attr('data-categories')); return $.inArray(category, categories) > -1 || categories.length === 0; }); }, update_payment_methods: function(price) { this.methods.closest('fieldset, p')[price > 0 ? 'show' : 'hide'](); }, update_payment_terms: function(user_id, category) { var item = null, items, select, selected, total = 0; // Payment Terms wrapper my be hidden, let's change that. this.terms.closest('p').show(); // find Payment Terms allowed for selected user user_id = parseInt(user_id, 10); if (isNaN(user_id) || user_id === 0) { user = null; selector = '[data-categories]'; } else { user = this.users.find('[value=' + user_id + ']'); terms = user.attr('data-payment-terms') || []; selector = '#payment-term-default'; if (terms.length > 0) { selector += ', #payment-term-' + terms.split(',').join(', #payment-term-'); } } items = this.terms.hide().filter(selector); // filter Payment Terms by category items = this.get_category_terms(category, items); // two items: the default and one actual payment term if (items.length == 2) { item = items.filter(':not(#payment-term-default)').show(); } else { items.show(); } // find current selected Payment Term and update form values // if necessary. // Payment Terms are either