/* global jQuery, document, redux, redux.args, confirm, relid:true, console, jsonView */
(function($) {
'use strict';
$.redux = $.redux || {};
$(document).ready(
function() {
$.fn.isOnScreen = function() {
if (!window) {
return;
}
var win = $(window);
var viewport = {
top: win.scrollTop(),
left: win.scrollLeft()
};
viewport.right = viewport.left + win.width();
viewport.bottom = viewport.top + win.height();
var bounds = this.offset();
bounds.right = bounds.left + this.outerWidth();
bounds.bottom = bounds.top + this.outerHeight();
return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));
};
$.redux.checkRequired();
$.redux.initEvents();
$.redux.initQtip();
$.redux.tabCheck();
$.redux.notices();
$.redux.tabControl();
$.redux.devFunctions();
}
);
$.redux.initEvents = function() {
$('.redux-action_bar, .redux-presets-bar').on(
'click', function() {
window.onbeforeunload = null;
}
);
$('#toplevel_page_' + redux.args.slug + ' .wp-submenu a, #wp-admin-bar-' + redux.args.slug + ' a.ab-item').click(
function(e) {
if ($('#toplevel_page_' + redux.args.slug).hasClass('wp-menu-open') || $(this).hasClass('ab-item')) {
e.preventDefault();
var url = $(this).attr('href').split('&tab=');
$('#' + url[1] + '_section_group_li_a').click();
return false;
}
}
);
// Default button clicked
$('input[name="' + redux.args.opt_name + '[defaults]"]').click(
function() {
if (!confirm(redux.args.reset_confirm)) {
return false;
}
window.onbeforeunload = null;
}
);
// Default button clicked
$('input[name="' + redux.args.opt_name + '[defaults-section]"]').click(
function() {
if (!confirm(redux.args.reset_section_confirm)) {
return false;
}
window.onbeforeunload = null;
}
);
$('.expand_options').click(
function(e) {
e.preventDefault();
$.redux.expandOptions($(this).parents('.redux-container:first'));
return false;
}
);
if ($('.saved_notice').is(':visible')) {
$('.saved_notice').slideDown();
}
$(document.body).on(
'change', '.redux-field input, .redux-field textarea, .redux-field select', function() {
if (!$(this).hasClass('noUpdate')) {
redux_change($(this));
}
}
);
var stickyHeight = $('#redux-footer').height();
$('#redux-sticky-padder').css({
height: stickyHeight
});
if ($('#redux-footer').length !== 0) {
$(window).scroll(
function() {
$.redux.stickyInfo();
}
);
$(window).resize(
function() {
$.redux.stickyInfo();
}
);
}
$('.saved_notice').delay(4000).slideUp();
$('.redux-save').click(
function() {
window.onbeforeunload = null;
}
);
};
$.redux.checkRequired = function() {
$.redux.required();
$("body").on(
'change',
'.redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]',
function(e) {
$.redux.check_dependencies(this);
}
);
$("body").on(
'check_dependencies', function(e, variable) {
$.redux.check_dependencies(variable);
}
);
$('td > fieldset:empty,td > div:empty').parent().parent().hide();
};
$.redux.initQtip = function() {
if ($().qtip) {
// Shadow
var shadow = '';
var tip_shadow = redux.args.hints.tip_style.shadow;
if (tip_shadow === true) {
shadow = 'qtip-shadow';
}
// Color
var color = '';
var tip_color = redux.args.hints.tip_style.color;
if (tip_color !== '') {
color = 'qtip-' + tip_color;
}
// Rounded
var rounded = '';
var tip_rounded = redux.args.hints.tip_style.rounded;
if (tip_rounded === true) {
rounded = 'qtip-rounded';
}
// Tip style
var style = '';
var tip_style = redux.args.hints.tip_style.style;
if (tip_style !== '') {
style = 'qtip-' + tip_style;
}
var classes = shadow + ',' + color + ',' + rounded + ',' + style;
classes = classes.replace(/,/g, ' ');
// Get position data
var myPos = redux.args.hints.tip_position.my;
var atPos = redux.args.hints.tip_position.at;
// Gotta be lowercase, and in proper format
myPos = $.redux.verifyPos(myPos.toLowerCase(), true);
atPos = $.redux.verifyPos(atPos.toLowerCase(), false);
// Tooltip trigger action
var showEvent = redux.args.hints.tip_effect.show.event;
var hideEvent = redux.args.hints.tip_effect.hide.event;
// Tip show effect
var tipShowEffect = redux.args.hints.tip_effect.show.effect;
var tipShowDuration = redux.args.hints.tip_effect.show.duration;
// Tip hide effect
var tipHideEffect = redux.args.hints.tip_effect.hide.effect;
var tipHideDuration = redux.args.hints.tip_effect.hide.duration;
$('div.redux-hint-qtip').each(
function() {
$(this).qtip({
content: {
text: $(this).attr('qtip-content'),
title: $(this).attr('qtip-title')
},
show: {
effect: function() {
switch (tipShowEffect) {
case 'slide':
$(this).slideDown(tipShowDuration);
break;
case 'fade':
$(this).fadeIn(tipShowDuration);
break;
default:
$(this).show();
break;
}
},
event: showEvent,
},
hide: {
effect: function() {
switch (tipHideEffect) {
case 'slide':
$(this).slideUp(tipHideDuration);
break;
case 'fade':
$(this).fadeOut(tipHideDuration);
break;
default:
$(this).show(tipHideDuration);
break;
}
},
event: hideEvent,
},
style: {
classes: classes,
},
position: {
my: myPos,
at: atPos,
},
});
}
);
// });
$('input[qtip-content]').each(
function() {
$(this).qtip({
content: {
text: $(this).attr('qtip-content'),
title: $(this).attr('qtip-title')
},
show: 'focus',
hide: 'blur',
style: classes,
position: {
my: myPos,
at: atPos,
},
});
}
);
}
};
$.redux.tabCheck = function() {
$('.redux-group-tab-link-a').click(
function() {
var el = $(this ).parents('.redux-container:first');
var relid = $(this).data('rel'); // The group ID of interest
var oldid = el.find('.redux-group-tab-link-li.active .redux-group-tab-link-a').data('rel');
if (oldid === relid) {
return;
}
$('#currentSection').val(relid);
if (!$(this).parents('.postbox-container:first').length) {
// Set the proper page cookie
$.cookie(
'redux_current_tab', relid, {
expires: 7,
path: '/'
}
);
}
if (el.find('#' + relid + '_section_group_li').parents('.redux-group-tab-link-li').length) {
var parentID = el.find('#' + relid + '_section_group_li').parents('.redux-group-tab-link-li').attr('id').split('_');
parentID = parentID[0];
}
el.find('#toplevel_page_' + redux.args.slug + ' .wp-submenu a.current').removeClass('current');
el.find('#toplevel_page_' + redux.args.slug + ' .wp-submenu li.current').removeClass('current');
el.find('#toplevel_page_' + redux.args.slug + ' .wp-submenu a').each(
function() {
var url = $(this).attr('href').split('&tab=');
if (url[1] == relid || url[1] == parentID) {
$(this).addClass('current');
$(this).parent().addClass('current');
}
}
);
if (el.find('#' + oldid + '_section_group_li').find('#' + oldid + '_section_group_li').length) {
//console.log('RELID is child of oldid');
el.find('#' + oldid + '_section_group_li').addClass('activeChild');
el.find('#' + relid + '_section_group_li').addClass('active').removeClass('activeChild');
} else if (el.find('#' + relid + '_section_group_li').parents('#' + oldid + '_section_group_li').length || el.find('#' + oldid + '_section_group_li').parents('ul.subsection').find('#' + relid + '_section_group_li').length) {
//console.log('RELID is sibling or child of OLDID');
if (el.find('#' + relid + '_section_group_li').parents('#' + oldid + '_section_group_li').length) {
//console.log('child of oldid');
el.find('#' + oldid + '_section_group_li').addClass('activeChild').removeClass('active');
} else {
//console.log('sibling');
el.find('#' + relid + '_section_group_li').addClass('active');
el.find('#' + oldid + '_section_group_li').removeClass('active');
}
el.find('#' + relid + '_section_group_li').removeClass('activeChild').addClass('active');
} else {
el.find('#' + relid + '_section_group_li').addClass('active').removeClass('activeChild').find('ul.subsection').slideDown();
if (el.find('#' + oldid + '_section_group_li').find('ul.subsection').length) {
//console.log('oldid is parent')
el.find('#' + oldid + '_section_group_li').find('ul.subsection').slideUp(
'fast', function() {
el.find('#' + oldid + '_section_group_li').removeClass('active').removeClass('activeChild');
}
);
} else if (el.find('#' + oldid + '_section_group_li').parents('ul.subsection').length) {
//console.log('oldid is a child');
if (!el.find('#' + oldid + '_section_group_li').parents('#' + relid + '_section_group_li').length) {
//console.log('oldid is child, but not of relid');
el.find('#' + oldid + '_section_group_li').parents('ul.subsection').slideUp(
'fast', function() {
el.find('#' + oldid + '_section_group_li').removeClass('active');
el.find('#' + oldid + '_section_group_li').parents('.redux-group-tab-link-li').removeClass('active').removeClass('activeChild');
}
);
} else {
el.find('#' + oldid + '_section_group_li').removeClass('active');
}
} else {
//console.log('Normal remove active from child');
el.find('#' + oldid + '_section_group_li').removeClass('active');
if (el.find('#' + relid + '_section_group_li').parents('.redux-group-tab-link-li').length) {
//console.log('here');
el.find('#' + relid + '_section_group_li').parents('.redux-group-tab-link-li').addClass('activeChild').find('ul.subsection').slideDown();
el.find('#' + relid + '_section_group_li').addClass('active');
}
}
}
// Show the group
el.find('#' + oldid + '_section_group').hide();
el.find('#' + relid + '_section_group').fadeIn(
200, function() {
if (el.find('#redux-footer').length !== 0) {
$.redux.stickyInfo(); // race condition fix
}
$.redux.initFields();
}
);
}
);
var tab = decodeURI((new RegExp('tab' + '=' + '(.+?)(&|$)').exec(location.search) || [, ''])[1]);
if (tab !== "") {
if ($.cookie("redux_current_tab_get") !== tab) {
$.cookie(
'redux_current_tab', tab, {
expires: 7,
path: '/'
}
);
$.cookie(
'redux_current_tab_get', tab, {
expires: 7,
path: '/'
}
);
$('#' + tab + '_section_group_li').click();
}
} else if ($.cookie('redux_current_tab_get') !== "") {
$.removeCookie('redux_current_tab_get');
}
var sTab = $('#' + $.cookie("redux_current_tab") + '_section_group_li_a');
// Tab the first item or the saved one
if ($.cookie("redux_current_tab") === null || typeof ($.cookie("redux_current_tab")) === "undefined" || sTab.length === 0) {
$('.redux-container').find('.redux-group-tab-link-a:first').click();
} else {
sTab.click();
}
};
$.redux.initFields = function() {
$(".redux-field-init:visible" ).each(function() {
var type = $(this).attr( 'data-type' );
//console.log(type);
if ( redux.field_objects[type]) {
redux.field_objects[type].init();
}
});
};
$.redux.notices = function() {
if (redux.errors !== undefined) {
$.each(
redux.errors.errors, function(sectionID, sectionArray) {
$.each(
sectionArray.errors, function(key, value) {
$("#" + redux.args.opt_name + '-' + value.id).addClass("redux-field-error");
if ($("#" + redux.args.opt_name + '-' + value.id).parent().find('.redux-th-error').length === 0) {
$("#" + redux.args.opt_name + '-' + value.id).append('
' + value.msg + '
');
}
}
);
}
);
$('.redux-container').each(
function() {
var container = $(this);
var totalErrors = container.find('.redux-field-error').length;
if (totalErrors > 0) {
container.find(".redux-field-errors span").text(totalErrors);
container.find(".redux-field-errors").slideDown();
container.find('.redux-group-tab').each(
function() {
var total = $(this).find('.redux-field-error').length;
if (total > 0) {
var sectionID = $(this).attr('id').split('_');
sectionID = sectionID[0];
container.find('.redux-group-tab-link-a[data-key="' + sectionID + '"]').prepend('');
container.find('.redux-group-tab-link-a[data-key="' + sectionID + '"]').addClass("hasError");
var subParent = container.find('.redux-group-tab-link-a[data-key="' + sectionID + '"]').parents('.hasSubSections:first');
if (subParent) {
subParent.find('.redux-group-tab-link-a:first').addClass('hasError');
}
}
}
);
}
var totalWarnings = container.find('.redux-field-warning').length;
if (totalWarnings > 0) {
container.find(".redux-field-warnings span").text(totalWarnings);
container.find(".redux-field-warnings").slideDown();
container.find('.redux-group-tab').each(
function() {
var warning = $(this).find('.redux-field-warning').length;
if (warning > 0) {
var sectionID = $(this).attr('id').split('_');
sectionID = sectionID[0];
container.find('.redux-group-tab-link-a[data-key="' + sectionID + '"]').prepend('');
container.find('.redux-group-tab-link-a[data-key="' + sectionID + '"]').addClass("hasWarning");
var subParent = container.find('.redux-group-tab-link-a[data-key="' + sectionID + '"]').parents('.hasSubSections:first');
if (subParent) {
subParent.find('.redux-group-tab-link-a:first').addClass('hasWarning');
}
}
}
);
}
}
);
}
};
$.redux.tabControl = function() {
$('.redux-section-tabs div').hide();
$('.redux-section-tabs div:first').show();
$('.redux-section-tabs ul li:first').addClass('active');
$('.redux-section-tabs ul li a').click(
function() {
$('.redux-section-tabs ul li').removeClass('active');
$(this).parent().addClass('active');
var currentTab = $(this).attr('href');
$('.redux-section-tabs div').hide();
$(currentTab).fadeIn('medium', function() {
$.redux.initFields();
});
return false;
}
);
};
$.redux.devFunctions = function() {
$('#consolePrintObject').on(
'click', function(e) {
e.preventDefault();
console.log($.parseJSON($("#redux-object-json").html()));
}
);
if (typeof jsonView === 'function') {
jsonView('#redux-object-json', '#redux-object-browser');
}
};
$.redux.required = function() {
// Hide the fold elements on load ,
// It's better to do this by PHP but there is no filter in tr tag , so is not possible
// we going to move each attributes we may need for folding to tr tag
$.each(
redux.folds, function(i, v) {
var fieldset = $('#' + redux.args.opt_name + '-' + i);
fieldset.parents('tr:first').addClass('fold');
if (v == "hide") {
fieldset.parents('tr:first').addClass('hide');
if (fieldset.hasClass('redux-container-section')) {
var div = $('#section-' + i);
if (div.hasClass('redux-section-indent-start')) {
$('#section-table-' + i).hide().addClass('hide');
div.hide().addClass('hide');
}
}
if (fieldset.hasClass('redux-container-info')) {
$('#info-' + i).hide().addClass('hide');
}
if (fieldset.hasClass('redux-container-divide')) {
$('#divide-' + i).hide().addClass('hide');
}
if (fieldset.hasClass('redux-container-raw')) {
var rawTable = fieldset.parents().find('.redux-raw-table');
rawTable.hide().addClass('hide');
}
}
}
);
};
$.redux.get_container_value = function(id) {
var value = $('#' + redux.args.opt_name + '-' + id).serializeForm();
if (value !== null && typeof value === 'object' && value.hasOwnProperty(redux.args.opt_name)) {
//console.log('object');
//console.log(value);
value = value[redux.args.opt_name][id];
}
//console.log(value);
return value;
};
$.redux.check_dependencies = function(variable) {
if (redux.required === null) {
return;
}
var current = $(variable),
id = current.parents('.redux-field:first').data('id');
if (!redux.required.hasOwnProperty(id)) {
return;
}
var container = current.parents('.redux-field-container:first'),
is_hidden = container.parents('tr:first').hasClass('.hide'),
hadSections = false;
$.each(
redux.required[id], function(child, dependents) {
var current = $(this),
show = false,
childFieldset = $('#' + redux.args.opt_name + '-' + child),
tr = childFieldset.parents('tr:first');
if (!is_hidden) {
show = $.redux.check_parents_dependencies(child);
}
if (show === true) {
// Shim for sections
if (childFieldset.hasClass('redux-container-section')) {
var div = $('#section-' + child);
if (div.hasClass('redux-section-indent-start') && div.hasClass('hide')) {
$('#section-table-' + child).fadeIn(300).removeClass('hide');
div.fadeIn(300).removeClass('hide');
}
}
if (childFieldset.hasClass('redux-container-info')) {
$('#info-' + child).fadeIn(300).removeClass('hide');
}
if (childFieldset.hasClass('redux-container-divide')) {
$('#divide-' + child).fadeIn(300).removeClass('hide');
}
if (childFieldset.hasClass('redux-container-raw')) {
var rawTable = childFieldset.parents().find('.redux-raw-table');
rawTable.fadeIn(300).removeClass('hide');
}
tr.fadeIn(
300, function() {
$(this).removeClass('hide');
if (redux.required.hasOwnProperty(child)) {
$.redux.check_dependencies($('#' + redux.args.opt_name + '-' + child).children().first());
}
$.redux.initFields();
}
);
if (childFieldset.hasClass('redux-container-section') || childFieldset.hasClass('redux-container-info')) {
tr.css({display: 'none'});
}
} else if (show === false) {
tr.fadeOut(
100, function() {
$(this).addClass('hide');
if (redux.required.hasOwnProperty(child)) {
//console.log('Now check, reverse: '+child);
$.redux.required_recursive_hide(child);
}
}
);
}
current.find('select, radio, input[type=checkbox]').trigger('change');
}
);
};
$.redux.required_recursive_hide = function(id) {
var toFade = $('#' + redux.args.opt_name + '-' + id).parents('tr:first');
toFade.fadeOut(
50, function() {
$(this).addClass('hide');
if ($('#' + redux.args.opt_name + '-' + id).hasClass('redux-container-section')) {
var div = $('#section-' + id);
if (div.hasClass('redux-section-indent-start')) {
$('#section-table-' + id).fadeOut(50).addClass('hide');
div.fadeOut(50).addClass('hide');
}
}
if ($('#' + redux.args.opt_name + '-' + id).hasClass('redux-container-info')) {
$('#info-' + id).fadeOut(50).addClass('hide');
}
if ($('#' + redux.args.opt_name + '-' + id).hasClass('redux-container-divide')) {
$('#divide-' + id).fadeOut(50).addClass('hide');
}
if ($('#' + redux.args.opt_name + '-' + id).hasClass('redux-container-raw')) {
var rawTable = $('#' + redux.args.opt_name + '-' + id).parents().find('.redux-raw-table');
rawTable.fadeOut(50).addClass('hide');
}
if (redux.required.hasOwnProperty(id)) {
$.each(
redux.required[id], function(child) {
$.redux.required_recursive_hide(child);
}
);
}
}
);
};
$.redux.check_parents_dependencies = function(id) {
var show = "";
if (redux.required_child.hasOwnProperty(id)) {
$.each(
redux.required_child[id], function(i, parentData) {
if ($('#' + redux.args.opt_name + '-' + parentData.parent).parents('tr:first').hasClass('.hide')) {
show = false;
} else {
if (show !== false) {
var parentValue = $.redux.get_container_value(parentData.parent);
show = $.redux.check_dependencies_visibility(parentValue, parentData);
}
}
}
);
} else {
show = true;
}
return show;
};
$.redux.check_dependencies_visibility = function(parentValue, data) {
var show = false,
checkValue_array,
checkValue = data.checkValue,
operation = data.operation;
switch (operation) {
case '=':
case 'equals':
//if value was array
if ($.isArray(checkValue)) {
if ($.inArray(parentValue, checkValue) != -1) {
show = true;
}
} else {
if (parentValue == checkValue) {
show = true;
} else if ($.isArray(parentValue)) {
if ($.inArray(checkValue, parentValue) != -1) {
show = true;
}
}
}
break;
case '!=':
case 'not':
//if value was array
if ($.isArray(checkValue)) {
//if (checkValue.toString().indexOf('|') !== -1) {
// checkValue_array = checkValue.split('|');
if ($.inArray(parentValue, checkValue) == -1) {
show = true;
}
} else {
if (parentValue != checkValue) {
show = true;
} else if ($.isArray(parentValue)) {
if ($.inArray(checkValue, parentValue) == -1) {
show = true;
}
}
}
break;
case '>':
case 'greater':
case 'is_larger':
if (parseFloat(parentValue) > parseFloat(checkValue))
show = true;
break;
case '>=':
case 'greater_equal':
case 'is_larger_equal':
if (parseFloat(parentValue) >= parseFloat(checkValue))
show = true;
break;
case '<':
case 'less':
case 'is_smaller':
if (parseFloat(parentValue) < parseFloat(checkValue))
show = true;
break;
case '<=':
case 'less_equal':
case 'is_smaller_equal':
if (parseFloat(parentValue) <= parseFloat(checkValue))
show = true;
break;
case 'contains':
if (parentValue.toString().indexOf(checkValue) != -1)
show = true;
break;
case 'doesnt_contain':
case 'not_contain':
if (parentValue.toString().indexOf(checkValue) == -1)
show = true;
break;
case 'is_empty_or':
if (parentValue === "" || parentValue == checkValue)
show = true;
break;
case 'not_empty_and':
if (parentValue !== "" && parentValue != checkValue)
show = true;
break;
case 'is_empty':
case 'empty':
case '!isset':
if (!parentValue || parentValue === "" || parentValue === null)
show = true;
break;
case 'not_empty':
case '!empty':
case 'isset':
if (parentValue && parentValue !== "" && parentValue !== null)
show = true;
break;
}
return show;
};
$.redux.verifyPos = function(s, b) {
// trim off spaces
s = s.replace(/^\s+|\s+$/gm, '');
// position value is blank, set the default
if (s === '' || s.search(' ') == -1) {
if (b === true) {
return 'top left';
} else {
return 'bottom right';
}
}
// split string into array
var split = s.split(' ');
// Evaluate first string. Must be top, center, or bottom
var paramOne = b ? 'top' : 'bottom';
if (split[0] == 'top' || split[0] == 'center' || split[0] == 'bottom') {
paramOne = split[0];
}
// Evaluate second string. Must be left, center, or right.
var paramTwo = b ? 'left' : 'right';
if (split[1] == 'left' || split[1] == 'center' || split[1] == 'right') {
paramTwo = split[1];
}
return paramOne + ' ' + paramTwo;
};
$.redux.stickyInfo = function() {
var stickyWidth = $('#info_bar').width() - 2;
if (!$('#info_bar').isOnScreen() && !$('#redux-footer-sticky').isOnScreen()) {
$('#redux-sticky').addClass('sticky-save-warn');
$('#redux-footer').css({
position: 'fixed',
bottom: '0',
width: stickyWidth
});
$('#redux-footer').addClass('sticky-footer-fixed');
$('.redux-save-warn').css('left', $('#redux-sticky').offset().left);
$('#redux-sticky-padder').show();
} else {
$('#redux-sticky').removeClass('sticky-save-warn');
$('#redux-footer').css({
background: '#eee',
position: 'inherit',
bottom: 'inherit',
width: 'inherit'
});
$('#redux-sticky-padder').hide();
$('#redux-footer').removeClass('sticky-footer-fixed');
}
};
$.redux.expandOptions = function(parent) {
var trigger = parent.find('.expand_options');
var width = parent.find('.redux-sidebar').width();
var id = $('.redux-group-menu .active a').data('rel') + '_section_group';
if (trigger.hasClass('expanded')) {
trigger.removeClass('expanded');
parent.find('.redux-main').removeClass('expand');
parent.find('.redux-sidebar').stop().animate({
'margin-left': '0px'
}, 500 );
parent.find('.redux-main').stop().animate({
'margin-left': width
}, 500);
parent.find('.redux-group-tab').each(
function() {
if ($(this).attr('id') !== id) {
$(this).fadeOut('fast');
}
}
);
// Show the only active one
} else {
trigger.addClass('expanded');
parent.find('.redux-main').addClass('expand');
parent.find('.redux-sidebar').stop().animate({
'margin-left': -width - 102
}, 500);
parent.find('.redux-main').stop().animate({
'margin-left': '0px'
}, 500);
parent.find('.redux-group-tab').fadeIn('medium', function() {
$.redux.initFields();
});
}
return false;
};
})(jQuery);
jQuery.noConflict();
var confirmOnPageExit = function(e) {
//return; // ONLY FOR DEBUGGING
// If we haven't been passed the event get the window.event
e = e || window.event;
var message = redux.args.save_pending;
// For IE6-8 and Firefox prior to version 4
if (e) {
e.returnValue = message;
}
window.onbeforeunload = null;
// For Chrome, Safari, IE8+ and Opera 12+
return message;
};
function redux_change(variable) {
jQuery('body').trigger('check_dependencies', variable);
if (variable.hasClass('compiler')) {
jQuery('#redux-compiler-hook').val(1);
}
window.onbeforeunload = confirmOnPageExit;
var rContainer = jQuery(variable).parents('.redux-container:first');
if (jQuery(variable).parents('fieldset.redux-field:first').hasClass('redux-field-error')) {
jQuery(variable).parents('fieldset.redux-field:first').removeClass('redux-field-error');
jQuery(variable).parent().find('.redux-th-error').slideUp();
var parentID = jQuery(variable).closest('.redux-group-tab').attr('id');
var errorCount = (parseInt(rContainer.find('.redux-field-errors span').text()) - 1);
var warningCount = (parseInt(rContainer.find('.redux-field-warnings span').text()) - 1);
if (errorCount <= 0) {
//console.log('HERE');
jQuery('#' + parentID + '_li .redux-menu-error').fadeOut('fast').remove();
jQuery('#' + parentID + '_li .redux-group-tab-link-a').removeClass('hasError');
jQuery('#' + parentID + '_li').parents('.inside:first').find('.redux-field-errors').slideUp();
jQuery(variable).parents('.redux-container:first').find('.redux-field-errors').slideUp();
jQuery('#redux_metaboxes_errors').slideUp();
} else {
// Let's count down the errors now. Fancy. ;)
var id = parentID.split('_');
id = id[0];
var th = rContainer.find('.redux-group-tab-link-a[data-key="' + id + '"]').parents('.redux-group-tab-link-li:first');
var errorsLeft = (parseInt(th.find('.redux-menu-error:first').text()) - 1);
if (errorsLeft <= 0) {
th.find('.redux-menu-error:first').fadeOut().remove();
} else {
th.find('.redux-menu-error:first').text(errorsLeft);
}
var warningsLeft = (parseInt(th.find('.redux-menu-warning:first').text()) - 1);
if (warningsLeft <= 0) {
th.find('.redux-menu-warning:first').fadeOut().remove();
} else {
th.find('.redux-menu-warning:first').text(warningsLeft);
}
rContainer.find('.redux-field-errors span').text(errorCount);
rContainer.find('.redux-field-warning span').text(warningCount);
}
var subParent = jQuery('#' + parentID + '_li').parents('.hasSubSections:first');
if (subParent.length !== 0) {
if (subParent.find('.redux-menu-error').length === 0) {
subParent.find('.hasError').removeClass('hasError');
}
}
}
if (!redux.args.disable_save_warn) {
rContainer.find('.redux-save-warn').slideDown();
}
}
function colorValidate(field) {
var value = jQuery( field ).val();
var hex = colorNameToHex( value );
if ( hex !== value.replace( '#', '' ) ) {
return hex;
}
return value;
}
function colorNameToHex(colour) {
var tcolour = colour.replace( /^\s\s*/, '' ).replace( /\s\s*$/, '' ).replace( "#", "" );
var colours = {
"aliceblue": "#f0f8ff",
"antiquewhite": "#faebd7",
"aqua": "#00ffff",
"aquamarine": "#7fffd4",
"azure": "#f0ffff",
"beige": "#f5f5dc",
"bisque": "#ffe4c4",
"black": "#000000",
"blanchedalmond": "#ffebcd",
"blue": "#0000ff",
"blueviolet": "#8a2be2",
"brown": "#a52a2a",
"burlywood": "#deb887",
"cadetblue": "#5f9ea0",
"chartreuse": "#7fff00",
"chocolate": "#d2691e",
"coral": "#ff7f50",
"cornflowerblue": "#6495ed",
"cornsilk": "#fff8dc",
"crimson": "#dc143c",
"cyan": "#00ffff",
"darkblue": "#00008b",
"darkcyan": "#008b8b",
"darkgoldenrod": "#b8860b",
"darkgray": "#a9a9a9",
"darkgreen": "#006400",
"darkkhaki": "#bdb76b",
"darkmagenta": "#8b008b",
"darkolivegreen": "#556b2f",
"darkorange": "#ff8c00",
"darkorchid": "#9932cc",
"darkred": "#8b0000",
"darksalmon": "#e9967a",
"darkseagreen": "#8fbc8f",
"darkslateblue": "#483d8b",
"darkslategray": "#2f4f4f",
"darkturquoise": "#00ced1",
"darkviolet": "#9400d3",
"deeppink": "#ff1493",
"deepskyblue": "#00bfff",
"dimgray": "#696969",
"dodgerblue": "#1e90ff",
"firebrick": "#b22222",
"floralwhite": "#fffaf0",
"forestgreen": "#228b22",
"fuchsia": "#ff00ff",
"gainsboro": "#dcdcdc",
"ghostwhite": "#f8f8ff",
"gold": "#ffd700",
"goldenrod": "#daa520",
"gray": "#808080",
"green": "#008000",
"greenyellow": "#adff2f",
"honeydew": "#f0fff0",
"hotpink": "#ff69b4",
"indianred ": "#cd5c5c",
"indigo ": "#4b0082",
"ivory": "#fffff0",
"khaki": "#f0e68c",
"lavender": "#e6e6fa",
"lavenderblush": "#fff0f5",
"lawngreen": "#7cfc00",
"lemonchiffon": "#fffacd",
"lightblue": "#add8e6",
"lightcoral": "#f08080",
"lightcyan": "#e0ffff",
"lightgoldenrodyellow": "#fafad2",
"lightgrey": "#d3d3d3",
"lightgreen": "#90ee90",
"lightpink": "#ffb6c1",
"lightsalmon": "#ffa07a",
"lightseagreen": "#20b2aa",
"lightskyblue": "#87cefa",
"lightslategray": "#778899",
"lightsteelblue": "#b0c4de",
"lightyellow": "#ffffe0",
"lime": "#00ff00",
"limegreen": "#32cd32",
"linen": "#faf0e6",
"magenta": "#ff00ff",
"maroon": "#800000",
"mediumaquamarine": "#66cdaa",
"mediumblue": "#0000cd",
"mediumorchid": "#ba55d3",
"mediumpurple": "#9370d8",
"mediumseagreen": "#3cb371",
"mediumslateblue": "#7b68ee",
"mediumspringgreen": "#00fa9a",
"mediumturquoise": "#48d1cc",
"mediumvioletred": "#c71585",
"midnightblue": "#191970",
"mintcream": "#f5fffa",
"mistyrose": "#ffe4e1",
"moccasin": "#ffe4b5",
"navajowhite": "#ffdead",
"navy": "#000080",
"oldlace": "#fdf5e6",
"olive": "#808000",
"olivedrab": "#6b8e23",
"orange": "#ffa500",
"orangered": "#ff4500",
"orchid": "#da70d6",
"palegoldenrod": "#eee8aa",
"palegreen": "#98fb98",
"paleturquoise": "#afeeee",
"palevioletred": "#d87093",
"papayawhip": "#ffefd5",
"peachpuff": "#ffdab9",
"peru": "#cd853f",
"pink": "#ffc0cb",
"plum": "#dda0dd",
"powderblue": "#b0e0e6",
"purple": "#800080",
"red": "#ff0000",
"redux": "#01a3e3",
"rosybrown": "#bc8f8f",
"royalblue": "#4169e1",
"saddlebrown": "#8b4513",
"salmon": "#fa8072",
"sandybrown": "#f4a460",
"seagreen": "#2e8b57",
"seashell": "#fff5ee",
"sienna": "#a0522d",
"silver": "#c0c0c0",
"skyblue": "#87ceeb",
"slateblue": "#6a5acd",
"slategray": "#708090",
"snow": "#fffafa",
"springgreen": "#00ff7f",
"steelblue": "#4682b4",
"tan": "#d2b48c",
"teal": "#008080",
"thistle": "#d8bfd8",
"tomato": "#ff6347",
"turquoise": "#40e0d0",
"violet": "#ee82ee",
"wheat": "#f5deb3",
"white": "#ffffff",
"whitesmoke": "#f5f5f5",
"yellow": "#ffff00",
"yellowgreen": "#9acd32"
};
if ( colours[tcolour.toLowerCase()] !== 'undefined' ) {
return colours[tcolour.toLowerCase()];
}
return colour;
}