(function ($) {
jQuery(document).ready(function ($) {
$('.gradient-box').each(function () {
var $pickerId = $(this).find('.gradient-picker');
var $inputId = $(this).find('.gradient-val');
var $previewId = $(this).find('.gradient-preview');
var $directionId = $(this).find('.gradient-direction');
var $customGradId = $(this).find('.gradient-custom')
var defaultColor = $(this).attr('data-default-color');
var orientation = $directionId.children('option:selected').val();
var value = $inputId.val();
var deg = 0;
var is_custom = 'false';
if (value != '') {
if (value.indexOf('-webkit-linear-gradient(vertical,') != -1) {
var p_l = value.indexOf('-webkit-linear-gradient(vertical,');
value = value.substring(p_l + 33);
p_l = value.indexOf(');');
value = value.substring(0, p_l);
orientation = 'vertical';
} else if (value.indexOf('-webkit-linear-gradient(horizontal,') != -1) {
var p_l = value.indexOf('-webkit-linear-gradient(horizontal,');
value = value.substring(p_l + 35);
p_l = value.indexOf(');');
value = value.substring(0, p_l);
orientation = 'horizontal';
} else {
var p_l = value.indexOf('-webkit-linear-gradient(');
value = value.substring(p_l + 24);
p_l = value.indexOf(');');
value = value.substring(0, p_l);
var temp_col = value;
var t_l = temp_col.indexOf('deg');
var deg = temp_col.substring(0, t_l);
value = value.substring(t_l + 4, value.length);
orientation = 'custom';
is_custom = 'true';
}
} else {
value = defaultColor;
}
$directionId.children('option').each(function (i, opt) {
if (opt.value == orientation) {
$(this).attr('selected', true);
}
});
if (is_custom == 'true') {
orientation = deg + 'deg';
$customGradId.show();
}
var onchange = false;
$pickerId.ClassyGradient({
orientation: orientation,
gradient: value,
target: $previewId,
onChange: function (stringGradient, cssGradient) {
cssGradient = cssGradient.replace('url(data:image/svg+xml;base64,', '');
var e_pos = cssGradient.indexOf(';');
cssGradient = cssGradient.substring(e_pos + 1);
if (is_custom == 'true') {
var p_l = cssGradient.indexOf('background: linear-gradient');
var val = cssGradient.substring(p_l);
cssGradient = cssGradient.replace(val, '');
}
if (onchange) {
$inputId.val(cssGradient).trigger('change');
}
}
});
onchange = true;
$directionId.on("change", function () {
var direction = $(this).children('option:selected').val();
if (direction == 'custom') {
$customGradId.slideDown('fast');
orientation = $(this).closest('.gradient-box').find('.ui-slider-handle > span').text();
$pickerId.data("ClassyGradient").setOrientation(orientation);
var newCSS = $pickerId.data('ClassyGradient').getCSS();
newCSS = newCSS.replace('url(data:image/svg+xml;base64,', '');
var e_pos = newCSS.indexOf(';');
newCSS = newCSS.substring(e_pos + 1);
var p_l = newCSS.indexOf('background: linear-gradient');
var val = newCSS.substring(p_l);
newCSS = newCSS.replace(val, '');
} else {
$customGradId.slideUp('fast');
$pickerId.data("ClassyGradient").setOrientation(direction);
var newCSS = $pickerId.data('ClassyGradient').getCSS();
newCSS = newCSS.replace('url(data:image/svg+xml;base64,', '');
var e_pos = newCSS.indexOf(';');
newCSS = newCSS.substring(e_pos + 1);
}
$inputId.val(newCSS).trigger('change');
});
$(this).find('.gradient-range').slider({
range: "min",
value: deg,
min: 0,
max: 360,
step: 1,
slide: function (event, ui) {
var orientation = ui.value + 'deg';
$pickerId.data("ClassyGradient").setOrientation(orientation);
var newCSS = $pickerId.data('ClassyGradient').getCSS();
newCSS = newCSS.replace('url(data:image/svg+xml;base64,', '');
var e_pos = newCSS.indexOf(';');
newCSS = newCSS.substring(e_pos + 1);
var p_l = newCSS.indexOf('background: linear-gradient');
var val = newCSS.substring(p_l);
newCSS = newCSS.replace(val, '');
$inputId.val(newCSS).trigger('change');
$(this).find('.ui-slider-handle').html('' + ui.value + 'deg');
},
create: function (event, ui) {
$(this).find('.ui-slider-handle').html('' + deg + 'deg');
}
});
});
});
})(jQuery);