/* -----------------------------------------------------
  Material Design Sliders
  CodePen URL: https://codepen.io/rkchauhan/pen/xVGGpR
  By: Ravikumar Chauhan
-------------------------------------------------------- */
function rkmd_rangeSlider(selector) {
  var self, slider_width, slider_offset, curnt, sliderDiscrete, range, slider;
  self = $(selector);
  slider_width = self.width();
  slider_offset = self.offset().left;
  sliderDiscrete = self;

  sliderDiscrete.each(function (i, v) {
    curnt = $(this);
    curnt.append(sliderDiscrete_tmplt());
    range = curnt.find('input[type="range"]');
    slider = curnt.find(".slider");
    slider_fill = slider.find(".slider-fill");
    slider_handle = slider.find(".slider-handle");
    slider_label = slider.find(".slider-label");

    var range_val = parseInt(range.val());
    slider_fill.css("width", range_val + "%");
    slider_handle.css("left", range_val + "%");
    slider_label.find("span").text(range_val);
  });

  self.on("mousedown touchstart", ".slider-handle", function (e) {
    if (e.button === 2) {
      return false;
    }
    var parents = $(this).parents(".rkmd-slider");
    var slider_width = parents.width();
    var slider_offset = parents.offset().left;
    var check_range = parents.find('input[type="range"]').is(":disabled");
    if (check_range === true) {
      return false;
    }
    $(this).addClass("is-active");
    var moveFu = function (e) {
      var pageX = e.pageX || e.changedTouches[0].pageX;
      var slider_new_width = pageX - slider_offset;
      if (slider_new_width <= slider_width && !(slider_new_width < "0")) {
        slider_move(parents, slider_new_width, slider_width, true);
      }
    };
    var upFu = function (e) {
      $(this).off(handlers);
      parents.find(".is-active").removeClass("is-active");
    };

    var handlers = {
      mousemove: moveFu,
      touchmove: moveFu,
      mouseup: upFu,
      touchend: upFu,
    };
    $(document).on(handlers);
  });

  self.on("mousedown touchstart", ".slider", function (e) {
    if (e.button === 2) {
      return false;
    }

    var parents = $(this).parents(".rkmd-slider");
    var slider_width = parents.width();
    var slider_offset = parents.offset().left;
    var check_range = parents.find('input[type="range"]').is(":disabled");

    if (check_range === true) {
      return false;
    }

    var slider_new_width = e.pageX - slider_offset;
    if (slider_new_width <= slider_width && !(slider_new_width < "0")) {
      slider_move(parents, slider_new_width, slider_width, true);
    }
    var upFu = function (e) {
      $(this).off(handlers);
    };

    var handlers = {
      mouseup: upFu,
      touchend: upFu,
    };
    $(document).on(handlers);
  });
}

function sliderDiscrete_tmplt() {
  var tmplt =
    '<div class="slider">' +
    '<div class="slider-fill"></div>' +
    '<div class="slider-handle"><div class="slider-label"><span>0</span></div></div>' +
    "</div>";

  return tmplt;
}

function slider_move(parents, newW, sliderW, send) {
  var slider_new_val = parseInt(Math.round((newW / sliderW) * 100));

  var slider_fill = parents.find(".slider-fill");
  var slider_handle = parents.find(".slider-handle");
  var range = parents.find('input[type="range"]');
  range.next().html(newW); // update value

  slider_fill.css("width", slider_new_val + "%");
  slider_handle.css({
    left: slider_new_val + "%",
    transition: "none",
    "-webkit-transition": "none",
    "-moz-transition": "none",
  });

  range.val(slider_new_val);
  if (parents.find(".slider-handle span").text() != slider_new_val) {
    parents.find(".slider-handle span").text(slider_new_val);
    var number = parents.attr("id").substring(2);
    if (send) websock.send("slvalue:" + slider_new_val + ":" + number);
  }
}
