1 jQuery.fn.toggleSwitch = function (params) {
9 var options = $.extend({}, defaults, params);
11 $(this).each(function (i, item) {
15 function generateToggle(selectObj) {
17 // create containing element
18 var $contain = $("<div />").addClass("ui-toggle-switch");
21 $(selectObj).find("option").each(function (i, item) {
22 $contain.append("<label>" + $(item).text() + "</label>");
23 }).end().addClass("ui-toggle-switch");
25 // generate slider with established options
26 var $slider = $("<div />").slider({
30 change: options.change,
31 stop: function (e, ui) {
32 var roundedVal = Math.round(ui.value / 100);
34 window.setTimeout(function () {
35 toggleValue(self.parentNode, roundedVal);
38 range: (options.highlight && !$(selectObj).data("hideHighlight")) ? "max" : null
39 }).width(options.width);
41 // put slider in the middle
43 $contain.children().eq(0)
47 $contain.delegate("label", "click", function () {
48 if ($(this).hasClass("ui-state-active")) {
51 var labelIndex = ($(this).is(":first-child")) ? 0 : 1;
52 toggleValue(this.parentNode, labelIndex);
55 function toggleValue(slideContain, index) {
56 $(slideContain).find("label").eq(index).addClass("ui-state-active").siblings("label").removeClass("ui-state-active");
57 $(slideContain).parent().find("option").eq(index).attr("selected", true);
58 $(slideContain).find(".ui-slider").slider("value", index * 100);
61 // initialise selected option
62 $contain.find("label").eq(selectObj.selectedIndex).click();
65 $(selectObj).parent().append($contain);