Merge branch 'fixes' into main/rendor-staging
[ryzomcore.git] / web / public_php / ams / js / bootstrap-toggle.js
blobdfad8744c5ab45eed88c6d895cd790818104ed56
1 /**
2  * bootstrap-toggle.js v1.0
3  * http://github.com/Nijikokun/bootstrap-toggle/
4  * --
5  * http://twitter.com/nijikokun
6  * Copyright 2012 Nijiko Yonskai, Goodybag Inc
7  * --
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  * http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  */
21 !function ($) {
22   
23   var Toggle = function (element, options) {
24     var self = this;
26     // Collect elements
27     this.$element = $(element)
28     this.$checkbox = this.$element.children('.checkbox')
29     this.options = $.extend({}, $.fn.toggle.defaults, options)
31     // Initial Setup from options
32     if(this.options.text.enabled) this.$element.attr('data-enabled', this.options.text.enabled)
33     if(this.options.text.disabled) this.$element.attr('data-disabled', this.options.text.disabled)      
35     // setup state
36     this.setState(this.$checkbox.is(':checked'))
37     
38     // Setup Click
39     this.$element.click(function (e) {
40       if(self.options.onClick) self.options.onClick(e, self.$checkbox.is(':checked'))
41       self.toggle()
42     });
43   }
44   
45   Toggle.prototype.setState = function (state) {
46     // change checkbox state
47     this.$checkbox.attr('checked', state)
48     
49     if(state) {
50       this.$element.removeClass('disabled')
51       if(this.options.style.disabled)
52         this.$element.removeClass('disabled-' + this.options.style.disabled)
53       if(this.options.style.enabled)
54         this.$element.addClass(this.options.style.enabled)
55     } else {
56       this.$element.addClass('disabled')
57       if(this.options.style.enabled)
58         this.$element.removeClass(this.options.style.enabled)
59       if(this.options.style.disabled)
60         this.$element.addClass('disabled-' + this.options.style.disabled)
61     }
62   }
63   
64   Toggle.prototype.on = function () {
65     this.setState(true)
66   }
67   
68   Toggle.prototype.off = function () {
69     this.setState(false)
70   }
71   
72   Toggle.prototype.toggle = function () {
73     var status = this.$checkbox.is(':checked')
75     // Toggle status
76     this.setState(!status)
77   }
78   
79   /*
80    * Toggle Definition
81    */
82   $.fn.toggle = function (options) {
83     return new Toggle(this, typeof options == 'object' ? options : {})
84   }
85   
86   $.fn.toggle.defaults = {
87     onClick: function () {},
88     text: {
89       enabled: false,
90       disabled: false
91     },
92     style: {
93       enabled: false,
94       disabled: false
95     }
96   }
97   
98   $.fn.toggle.Constructor = Toggle
99 }(window.jQuery);