/*global AWPCP*/ AWPCP.define( 'awpcp/category-dropdown', [ 'jquery' ], function( $ ) { $.AWPCP.CategoriesDropdown = function(hidden, dropdown) { var self = this, selected; self.hidden = $(hidden); self.dropdown = $(dropdown); // using multiple dropdowns if (self.hidden.length > 0) { self.identifier = self.dropdown.attr('target'); self.category_id = parseInt(self.dropdown.val(), 10); self.widget = new $.AWPCP.CategoriesDropdownWidget(self.identifier, self.dropdown, null, self.category_id); $.subscribe('/category/updated/' + self.identifier, function(event, category_id) { self.hidden.val(category_id); }); selected = self.dropdown.attr('chain'); if (selected && selected.length > 0) { selected = $.map(selected.split(','), function(v) { return parseInt(v, 10); }); self.widget.choose(selected); } else { setTimeout( function() { self.widget.change(null); }, 100 ); } // using a single dropdown } else { var onDropDownChange = function() { var category_id = parseInt(self.dropdown.val(), 10); $.publish('/category/updated' , [self.dropdown, isNaN(category_id) ? null : category_id]); }; self.dropdown.change( onDropDownChange ); setTimeout( onDropDownChange, 100 ); } }; $.AWPCP.CategoriesDropdownWidget = function(identifier, dropdown, parent, category_id) { var self = this; self.identifier = identifier; self.category_id = category_id; self.parent = parent; // parent dropdown self.child = null; // child dropdown if (!dropdown && parent) { self.default_option = self.parent.attr('next-default-option'); self.dropdown = $('