/*!jQuery FA multi button*/
/**
* Modern toggle, push button, dimmer or just a signal indicator
*
* Version: 1.3.0
* Requires: jQuery v1.7+
*
* Copyright (c) 2015-2017 Mario Stephan
* Under MIT License (http://www.opensource.org/licenses/mit-license.php)
*
* Thanks to phoxoey
*/
"use strict";
/* global jQuery:true */
(function ($) {
$.fn.famultibutton = function (pOptions) {
if (this.length > 1) {
this.each(function () {
$(this).famultibutton(pOptions);
});
return this;
}
// private variables;
var elem = this;
var faElem;
var state = false;
// private for dimmer
var canvasScale;
var objTimer;
var isRunning = false;
var resStepValues = [0, 10, 40, 80, 120, 140, 150, 160, 180, 200, 240, 260, 280, 300, 320, 420, 430, 440, 450, 460, 470];
var dragy = 0;
var currVal = 0;
var diff = 0;
var baseTop = 0;
var posy = 0;
var isDrag = false;
var isDown = false;
var timer;
// setup options
var defaultOptions = {
backgroundIcon: 'fa-circle',
classes: ['fa-2x'],
icon: 'fa-power-off',
offColor: '#2A2A2A',
offBackgroundColor: '#505050',
onColor: '#2A2A2A',
onBackgroundColor: '#aa6900',
mode: 'toggle', //toggle, push, signal, dimmer
toggleOn: null,
toggleOff: null,
valueChanged: null,
progressWidth: 15,
timeout: 0,
max: 100,
min: 0,
step: 1,
};
var options = $.extend({}, defaultOptions, pOptions);
// private functions;
var intialize = function () {
options = $.extend({}, options, elem.data());
var content = (elem.html() !== elem.text()) ?
jQuery('
', {}).html(elem.html()).children().detach() :
jQuery('
', {}).text(elem.text());
if (options['onColor'] !== 'none' && options['offColor'] !== 'none') {
content.attr('id', 'fg');
}
content.addClass('fa-stack-1x');
elem.html('');
elem.bi = options['backgroundIcon'];
elem.fi = options['icon'];
faElem = $('
', {
class: 'famultibutton'
});
faElem.addClass('fa-stack');
elem.bg = jQuery('
', {
'id': 'bg',
'class': 'fa fa-stack-2x'
}).addClass(elem.bi);
elem.fg = jQuery('
', {
'id': 'fg',
'class': 'fa fa-stack-1x'
}).addClass(elem.fi);
if (options['classes'] && options['classes'].length > 0) {
for (var i = 0, len = options['classes'].length; i < len; i++) {
faElem.addClass(options['classes'][i]);
}
}
elem.bg.appendTo(faElem);
elem.fg.appendTo(faElem);
content.appendTo(faElem);
faElem.appendTo(elem);
elem.o = options;
elem.w = faElem.width();
elem.h = faElem.height();
setOff();
if (options['mode'] == 'dimmer') {
canvasScale = $('