(function(c) { c.widget("ui.dropdownchecktree", { _createTreeControl: function() { var a = this.options, d = this, e = this.containerControl, b = c("<div/>"); b.addClass("ui-dropdownchecktree-dropcontainer-wrapper"); b.css({ position: "absolute", zIndex: 1E3 }); b.hide(); d._createTreeControlToolbar(b); var f = c("<div/>"); b.append(f); f.addClass("ui-dropdownchecktree-dropcontainer").css("overflow-y", "auto"); f.tree({ ui: { theme_path: a.treeThemePath, theme_name: "checkbox", animation: 500 }, plugins: { checkbox: {} }, types: { "default": { draggable: false} }, data: a.data }); this.jQueryTree = jQuery.tree.reference(f); b.bind("mouseenter", function() { c(this).addClass("preventHide") }); b.bind("mouseleave", function() { c(this).removeClass("preventHide") }); e.treeControlIsDisplaying = false; c(document.body).append(b); d.treeControl = b }, _createTreeControlToolbar: function(a) { var d = this, e = this.options, b = c("<ul class='ui-dropdownchecktree-toolbar'/>"); a.append(b); a = c("<li class='left'/>"); b.append(a); a = c("<li class='middle'><p>" + e.treeToolbarTitle + "</p></li>"); b.append(a); var f = c("<li title='Close' class='right'/>"); b.append(f); a.width(e.dropDownWidth - 20); f.click(function() { c.ui.dropdownchecktree.forceClose = true; d._hideTreeControl(); return c.ui.dropdownchecktree.forceClose = false }) }, _createSelectFakerControl: function() { var a = this, d = this.options, e = this.containerControl, b = c("<span/>"); b.addClass("ui-dropdownchecktree-wrapper"); b.css({ display: "inline-block", cursor: "default" }); var f = c("<span/>"); f.addClass("ui-dropdownchecktree"); f.css({ display: "inline-block" }); b.append(f); var g = c("<span/>"); g.addClass("ui-dropdownchecktree-text"); g.css({ display: "inline-block", overflow: "hidden" }); g.text(d.watermark).addClass("watermarked"); f.append(g); b.hover(function() { a.disabled || f.toggleClass("ui-dropdownchecktree-hover") }, function() { a.disabled || f.toggleClass("ui-dropdownchecktree-hover") }); b.click(function(h) { if (!a.disabled) { h.stopPropagation(); a.treeControlIsDisplaying ? a._hideTreeControl() : a._showTreeControl(a) } return false }); e.append(b); a.selectFakerControl = b }, _hideTreeControl: function() { var a = c.ui.dropdownchecktree.instance; if (null != a) if (!a.treeControl.is(".preventHide") || c.ui.dropdownchecktree.forceClose) { rbiBrowserIsIe6() ? a.treeControl.hide() : a.treeControl.slideUp(); a.selectFakerControl.rbiFindExpectedSingleItem(".ui-dropdownchecktree").toggleClass("ui-dropdownchecktree-active"); a.treeControlIsDisplaying = false; c.ui.dropdownchecktree.instance = null; c(document).unbind("click", a._hideTreeControl); a.containerControl.trigger("blur"); a._updateSelectedItems(a); this.submitSearchButton = c("input.submitsearch"); this.submitSearchButton.removeAttr("disabled") } }, _showTreeControl: function(a) { null != c.ui.dropdownchecktree.instance && a._hideTreeControl(); var d = a.selectFakerControl.offset().top + a.selectFakerControl.outerHeight(), e = a.selectFakerControl.offset().left; a.treeControl.css({ top: d + "px", left: e + "px" }); rbiBrowserIsIe6() ? a.treeControl.show() : a.treeControl.slideDown(); a.selectFakerControl.rbiFindExpectedSingleItem(".ui-dropdownchecktree").toggleClass("ui-dropdownchecktree-active"); a.treeControlIsDisplaying = true; c.ui.dropdownchecktree.instance = a; c(document).bind("click", a._hideTreeControl); a.containerControl.trigger("focus"); this.submitSearchButton = c("input.submitsearch"); this.submitSearchButton.attr("disabled", "true") }, _updateSelectedItems: function(a) { var d = jQuery.tree.plugins.checkbox.get_checked(a.jQueryTree), e = "", b = ""; for (n = 0; n < d.length; n++) { var f = c(d[n]), g = f.attr("id"); f = f.text().substring(1); if (g.substring(0, 1) != "#") { if (e.length != 0) { e += "#"; b += ", " } e += g; b += f } } a.selectedIdsControl.val(e); e == "" ? $rbi_searchControl._setLocationToNoCitySelectedState() : $rbi_searchControl._setLocationToCitySelectedState(); a._updateValuesControls(a, b) }, _updateValuesControls: function(a, d) { var e = this.options, b = a.selectFakerControl.rbiFindExpectedSingleItem(".ui-dropdownchecktree-text"), f = a.options.maxNumberOfCharactersToDisplay, g = a.options.watermark; if (d.length != 0) { g = d.length > f ? d.substring(0, f) + "..." : d; b.text(g); b.removeClass("watermarked"); b.attr("title", d) } else { b.text(e.watermark).addClass("watermarked"); b.attr("title", "") } a.selectedValuesControlId.val(d) }, _setSize: function() { var a = this.options, d = this.treeControl, e = this.selectFakerControl, b = parseInt(a.width); e.rbiFindExpectedSingleItem(".ui-dropdownchecktree-text").css({ width: b + "px" }); e.outerWidth(); e = parseInt(a.dropDownHeight); d.css({ width: a.dropDownWidth + "px", height: e + "px" }); d.rbiFindExpectedSingleItem(".ui-dropdownchecktree-dropcontainer").css({ height: e + "px" }) }, _setStateOfSelectedValues: function(a) { var d = this; a = a.val().split("#"); var e = ""; for (n = 0; n < a.length; n++) { var b = d.treeControl.rbiFindExpectedSingleItem("#" + a[n]); jQuery.tree.plugins.checkbox.check(b); b = b.text().substring(1); if (e.length != 0) e += ", "; e += b } }, _init: function() { var a = this, d = this.options; $rbi_dropdownchecktree = a; a.containerControl = a.element; a._createSelectFakerControl(); a._createTreeControl(); a._setSize(); d.selectedValuesControlId == null && alert("Error: I must be told about selectedValuesControlId"); d.selectedIdsControlId == null && alert("Error: I must be told about selectedIdsControlId"); a.selectedIdsControl = a.element.rbiFindExpectedSingleItem("#" + d.selectedIdsControlId); a.selectedValuesControlId = a.element.rbiFindExpectedSingleItem("#" + d.selectedValuesControlId); if (a.selectedIdsControl.val().length != 0) { a._setStateOfSelectedValues(a.selectedIdsControl); a._updateSelectedItems(a) } }, enable: function() { this.selectFakerControl.rbiFindExpectedSingleItem(".ui-dropdownchecktree").removeClass("ui-dropdownchecktree-disabled"); this.disabled = false }, disable: function() { this.selectFakerControl.rbiFindExpectedSingleItem(".ui-dropdownchecktree").addClass("ui-dropdownchecktree-disabled"); this.disabled = true }, destroy: function() { c.widget.prototype.destroy.apply(this, arguments); this.containerControl.css("display", this.initialDisplay); this.containerControl.attr("multiple", this.initialMultiple); this.selectFakerControl.unbind().remove(); this.treeControl.remove() } }); c.extend(c.ui.dropdownchecktree, { defaults: { maxNumberOfCharactersToDisplay: 20, treeToolbarTitle: "Select countries", treeThemePath: null, watermark: "Select", width: 50, dropDownWidth: 100, dropDownHeight: 100, selectedIdsControlId: null, selectedValuesControlId: null, data: null} }) })(jQuery);