/************************************************************************************
* jquery.themepunch.essential.js - jQuery Plugin for esg Portfolio Slider
* @version: 2.2.5 (12.07.2018)
* @requires jQuery v1.7 or later
* @author ThemePunch
************************************************************************************/
var GridEditorEssentials = new function(){
var t = this;
var selected_layer = null;
var init_layers = {};
var init_elements = {};
var layers = [];
var all_attributes = {};
var essapi;
var eg_codemirror_global_css = null;
var save_needed = false;
var arr_font_types = [];
var arr_init_font_types = [];
var arr_meta_keys = [];
t.initDraggable = function() {
jQuery( ".eg-draggable" ).draggable({
handle:".dragme"});
}
/**
* set init layers object (from db from skin item)
*/
t.setInitLayersJson = function(json_layers){
init_layers = jQuery.parseJSON(json_layers);
for(var key in init_layers) {
// 2.2.6
// line break detected
if(typeof init_layers[key] === 'string') continue;
if(typeof init_layers[key]['settings'] == 'undefined') init_layers[key]['settings'] = {};
// 2.2.6
var settings = init_layers[key]['settings'];
if(!settings.hasOwnProperty('min-height')) init_layers[key]['settings']['min-height'] = 0;
if(!settings.hasOwnProperty('max-height')) init_layers[key]['settings']['max-height'] = 'none';
if(!settings.hasOwnProperty('duration')) init_layers[key]['settings']['duration'] = 'default';
if(!settings.hasOwnProperty('letter-spacing')) init_layers[key]['settings']['letter-spacing'] = 'normal';
if(!settings.hasOwnProperty('letter-spacing-hover')) init_layers[key]['settings']['letter-spacing-hover'] = 'normal';
}
}
/**
* set init elements object (from db from predefined elements)
*/
t.setInitElementsJson = function(json_elements){
init_elements = jQuery.parseJSON(json_elements);
for(var key in init_elements){ //strip slashes from element settings
if(typeof init_elements[key]['settings']['font-family'] !== 'undefined')
init_elements[key]['settings']['font-family'] = AdminEssentials.stripslashes(init_elements[key]['settings']['font-family']);
}
}
/**
* set init font
*/
t.setInitFontsJson = function(fonts_elements){
arr_init_font_types = jQuery.parseJSON(fonts_elements);
}
/**
* set init elements object (from db from predefined elements)
*/
t.refreshInitElements = function(obj_elements){
init_elements = obj_elements;
for(var key in init_elements){ //strip slashes from element settings
if(typeof init_elements[key]['settings']['font-family'] !== 'undefined')
init_elements[key]['settings']['font-family'] = AdminEssentials.stripslashes(init_elements[key]['settings']['font-family']);
}
}
/**
* set init meta keys
*/
t.setInitMetaKeysJson = function(json_meta){
arr_meta_keys = jQuery.parseJSON(json_meta);
// console.log(arr_meta_keys);
}
/**
* set init style elements object
*/
t.setInitAllAttributesJson = function(json_elements){
all_attributes = jQuery.parseJSON(json_elements);
}
t.update_layers = function(){ //get all layers
if(selected_layer == null) return(false);
//check if it has an ID
var layer_id = selected_layer.data('id');
if(layer_id != undefined) //update layer sorting
t.update_layer_sorting();
else //create new layer
t.add_layer();
t.redraw_container_height();
}
/**
* add new layer and set default options
*/
t.add_layer = function(){
var start = +new Date();
if(selected_layer == null) return(false);
var next_id = t.get_latest_id() + 1;
jQuery('input[name="eg-item-skin-element-last-id"]').val(next_id);
selected_layer.data('id', next_id);
selected_layer.attr('data-id', next_id);
var new_layer = new Object;
var default_handle_name = selected_layer.data('handle');
new_layer.id = next_id.toString();
new_layer.handle = selected_layer.data('handle');
new_layer.settings = jQuery.extend({},init_elements[selected_layer.data('handle')]['settings']);
layers.push(new_layer);
t.update_layer_sorting();
t.set_default_values();
t.select_layer(next_id.toString());
t.setting_has_changed();
//t.select_layer(next_id.toString()); //select again for right source and other settings
t.propagate_element_selector();
//change the handle after setting the informations to a new handle
layers[layers.length-1].handle = eg_lang.new_element_sanitize+'-'+next_id;
selected_layer.data('handle', eg_lang.new_element_sanitize+'-'+next_id);
selected_layer.attr('data-handle',selected_layer.data('handle'));
selected_layer.data('orighandle', default_handle_name);
selected_layer.attr('orighandle', default_handle_name);
}
/**
* update layer sorting by editor sorting
*/
t.update_layer_sorting = function(){
var stl = jQuery('#skin-dz-tl').sortable('toArray', {attribute: 'data-id'});
var sbr = jQuery('#skin-dz-br').sortable('toArray', {attribute: 'data-id'});
var sc = jQuery('#skin-dz-c').sortable('toArray', {attribute: 'data-id'});
var sm = jQuery('#skin-dz-m').sortable('toArray', {attribute: 'data-id'});
t.update_sorting(stl, 'tl');
t.update_sorting(sbr, 'br');
t.update_sorting(sc, 'c');
t.update_sorting(sm, 'm');
}
/**
* update order and container of elements
*/
t.update_sorting = function(sort_array, cnt){
var sort = 0;
for(var i in sort_array){
for(var key in layers){
if(sort_array[i] == layers[key].id){
layers[key].order = sort;
layers[key].container = cnt;
sort++;
break;
}
}
}
}
/**
* set default values of item
*/
t.set_default_values = function(id){
for(var handle in all_attributes){
switch(all_attributes[handle]['type']){
case 'colorpicker':
/* 2.1.6 */
if(typeof RevColor === 'undefined') {
jQuery('#element-'+handle).closest('.wp-picker-container').find('a').first().css('background-color', all_attributes[handle]['values']['default']);
jQuery('input[name="element-'+handle+'"]').val(all_attributes[handle]['values']['default']);
}
else {
jQuery('input[name="element-'+handle+'"]').val(all_attributes[handle]['values']['default']).tpColorPicker();
}
break;
case 'select':
jQuery('select[name="element-'+handle+'"] option[value="'+all_attributes[handle]['values']['default']+'"]').attr("selected","selected");
//special cases
if(handle == 'source'){
jQuery('select[name="element-source-post"] option[value="title"]').attr("selected","selected");
jQuery('select[name="element-source-event"] option[value="event_start_date"]').attr("selected","selected");
jQuery('select[name="element-source-woocommerce"] option[value="wc_regular_price_from"]').attr("selected","selected");
jQuery('input[name="element-source-icon"]').val('');
jQuery('#eg-preview-icon').html('');
jQuery('input[name="element-source-text-style-disable"]').attr('checked', false);
jQuery('textarea[name="element-source-text"]').val('');
jQuery('input[name="element-source-meta"]').val('');
jQuery('select[name="element-source-taxonomy"] option[value="post_tag"]').attr("selected","selected");
jQuery('select[name="element-source-event"]').hide().siblings('.select_fake').hide();
jQuery('select[name="element-source-woocommerce"]').hide().siblings('.select_fake').hide();
jQuery('#eg-source-icon-wrap').hide();
jQuery('#eg-source-text-style-disable-wrap').hide();
jQuery('#eg-source-text-wrap').hide();
jQuery('#eg-source-limit-wrap').hide();
jQuery('.esg-cat-tag-settings').hide();
jQuery('#eg-source-functonality-wrap').hide().find('.select_fake').hide();
jQuery('#eg-source-meta-wrap').hide();
}else if(handle == 'link-type'){
jQuery('input[name="element-url-link"]').val('');
jQuery('input[name="element-javascript-link"]').val('');
jQuery('#eg-element-post-url-wrap').hide();
jQuery('#eg-element-post-meta-wrap').hide();
jQuery('#eg-element-post-javascript-wrap').hide();
}else if(handle == 'background-size'){
jQuery('input[name="element-background-size-x"]').val('100');
jQuery('input[name="element-background-size-y"]').val('100');
jQuery('#background-size-percent-wrap').css('display', 'none');
}else if(handle == 'align'){
jQuery('select[name="element-absolute-unit"] option[value="px"]').attr("selected","selected");
jQuery('#eg-t_b_align').text(eg_lang.top);
jQuery('#eg-l_r_align').text(eg_lang.left);
}
break;
case 'checkbox':
jQuery('input[name="element-'+handle+'"]').attr('checked', all_attributes[handle]['values']['default']);
break;
case 'multi-text':
jQuery('input[name="element-'+handle+'[]"]').each(function(){
jQuery(this).val(all_attributes[handle]['values']['default']);
});
break;
default:
jQuery('input[name="element-'+handle+'"]').val(all_attributes[handle]['values']['default']);
break;
}
//check the unit of elements
if(jQuery('select[name="element-'+handle+'-unit"]').length > 0){
jQuery('select[name="element-'+handle+'-unit"] option[value="px"]').attr("selected","selected");
}
}
//Load values of item element if selected
if(id !== undefined){
if(typeof layers[id] === 'object' && layers[id]['handle'] !== 'undefined'){
var ie_settings = layers[id]['settings'];//init_elements[layers[id]['handle']]['settings'];
for(var handle in all_attributes){
if(typeof ie_settings[handle] === 'undefined') continue;
switch(all_attributes[handle]['type']){
case 'colorpicker':
if(handle == 'bg-alpha') continue;
/* 2.1.6 */
if(typeof RevColor === 'undefined') {
jQuery('#element-'+handle).closest('.wp-picker-container').find('a').first().css('background-color', ie_settings[handle]);
jQuery('input[name="element-'+handle+'"]').val(ie_settings[handle]);
}
else {
jQuery('input[name="element-'+handle+'"]').val(ie_settings[handle]).tpColorPicker();
}
break;
case 'select':
jQuery('select[name="element-'+handle+'"] option[value="'+ie_settings[handle]+'"]').attr("selected","selected");
//special case
if(handle == 'source'){
var cur_type = '';
if(ie_settings[handle] == 'post'){
if(typeof ie_settings['source-post'] !== 'undefined'){
jQuery('select[name="element-source-post"] option[value="'+ie_settings['source-post']+'"]').attr("selected","selected");
if(ie_settings['source-post'] == 'cat_list' || ie_settings['source-post'] == 'tag_list' || ie_settings['source-post'] == 'taxonomy'){
jQuery('.esg-cat-tag-settings').show();
jQuery('#eg-source-limit-wrap').hide();
jQuery('#eg-source-functonality-wrap').show().find('.select_fake').show();
}
if(ie_settings['source-post'] == 'meta'){
jQuery('#eg-source-meta-wrap').show();
if(typeof ie_settings['source-meta'] !== 'undefined')
jQuery('input[name="element-source-meta"]').val(ie_settings['source-meta']);
}
}
}else if(ie_settings[handle] == 'event'){
if(typeof ie_settings['source-event'] !== 'undefined')
jQuery('select[name="element-source-event"] option[value="'+ie_settings['source-event']+'"]').attr("selected","selected");
}else if(ie_settings[handle] == 'woocommerce'){
if(typeof ie_settings['source-woocommerce'] !== 'undefined'){
jQuery('select[name="element-source-woocommerce"] option[value="'+ie_settings['source-woocommerce']+'"]').attr("selected","selected");
if(ie_settings['source-woocommerce'] == 'wc_categories'){
jQuery('.esg-cat-tag-settings').show();
jQuery('#eg-source-limit-wrap').show();
jQuery('#eg-source-functonality-wrap').show().find('.select_fake').show();
}
}
}else if(ie_settings[handle] == 'icon'){
if(typeof ie_settings['source-icon'] !== 'undefined'){
jQuery('input[name="element-source-icon"]').val(ie_settings['source-icon']);
jQuery('#eg-preview-icon').html('');
}
}else if(ie_settings[handle] == 'text'){
if(typeof ie_settings['source-text'] !== 'undefined')
jQuery('textarea[name="element-source-text"]').val(ie_settings['source-text']);
}
}else if(handle == 'link-type'){
if(typeof ie_settings['link-type-url'] !== 'undefined') jQuery('input[name="element-url-link"]').val(ie_settings['link-type-url']);
if(typeof ie_settings['link-type-meta'] !== 'undefined') jQuery('input[name="element-meta-link"]').val(ie_settings['link-type-meta']);
if(typeof ie_settings['link-type-javascript'] !== 'undefined') jQuery('input[name="element-javascript-link"]').val(ie_settings['link-type-javascript']);
if(typeof ie_settings['link-type-sharefacebook'] !== 'undefined') {
jQuery('select[name="element-facebook-sharing-link"]').val(ie_settings['link-type-sharefacebook']);
jQuery('input[name="element-facebook-link-url"]').val(ie_settings['element-facebook-link-url']);
//if(ie_settings['link-type-sharefacebook']=="custom") jQuery(".eg-element-facebook_link_custom").show();
//else jQuery(".eg-element-facebook_link_custom").hide();
}
if(typeof ie_settings['link-type-sharegplus'] !== 'undefined') {
jQuery('select[name="element-gplus-sharing-link"]').val(ie_settings['link-type-sharegplus']);
jQuery('input[name="element-gplus-link-url"]').val(ie_settings['element-gplus-link-url']);
}
if(typeof ie_settings['link-type-sharepinterest'] !== 'undefined') {
jQuery('select[name="element-pinterest-sharing-link"]').val(ie_settings['link-type-sharepinterest']);
jQuery('input[name="element-pinterest-link-url"]').val(ie_settings['element-pinterest-link-url']);
jQuery('textarea[name="element-pinterest-description"]').val(ie_settings['link-type-sharepinterest-description']);
}
if(typeof ie_settings['link-type-sharetwitter'] !== 'undefined') {
jQuery('select[name="element-twitter-sharing-link"]').val(ie_settings['link-type-sharetwitter']);
jQuery('input[name="element-twitter-link-url"]').val(ie_settings['element-twitter-link-url']);
jQuery('input[name="element-twitter-text-before"]').val(ie_settings['link-type-sharetwitter-text-before']);
jQuery('input[name="element-twitter-text-after"]').val(ie_settings['link-type-sharetwitter-text-after']);
}
}else if(handle == 'text-align' || handle == 'float'){ //set to default depending on display setting
if(jQuery('input[name="element-display"]').val() == 'block'){
if(handle == 'float') jQuery('select[name="element-'+handle+'"] option[value="none"]').attr("selected","selected");
}else{
if(handle == 'text-align') jQuery('select[name="element-'+handle+'"] option[value="center"]').attr("selected","selected");
}
}else if(handle == 'background-size'){
if(typeof ie_settings['background-size-x'] !== 'undefined') jQuery('input[name="element-background-size-x"]').val(ie_settings['background-size-x']);
if(typeof ie_settings['background-size-y'] !== 'undefined') jQuery('input[name="element-background-size-y"]').val(ie_settings['background-size-y']);
if(ie_settings['background-size'] == '%'){
jQuery('#background-size-percent-wrap').css('display', 'inline-block');
}
}else if(handle == 'align'){
if(typeof ie_settings['absolute-unit'] !== 'undefined') jQuery('select[name="element-absolute-unit"] option[value="'+ie_settings['absolute-unit']+'"]').attr("selected","selected");
if(typeof ie_settings['align'] !== 'undefined'){
switch(ie_settings['align']){
case 't_l':
jQuery('#eg-t_b_align').text(eg_lang.top);
jQuery('#eg-l_r_align').text(eg_lang.left);
break;
case 't_r':
jQuery('#eg-t_b_align').text(eg_lang.top);
jQuery('#eg-l_r_align').text(eg_lang.right);
break;
case 'b_l':
jQuery('#eg-t_b_align').text(eg_lang.bottom);
jQuery('#eg-l_r_align').text(eg_lang.left);
break;
case 'b_r':
jQuery('#eg-t_b_align').text(eg_lang.bottom);
jQuery('#eg-l_r_align').text(eg_lang.right);
break;
}
}
}
break;
case 'checkbox':
if(ie_settings[handle] == jQuery('input[name="element-'+handle+'"]').val()){
jQuery('input[name="element-'+handle+'"]').attr('checked', true);
}else{
jQuery('input[name="element-'+handle+'"]').attr('checked', false);
}
break;
case 'multi-text':
var at_key = 0;
jQuery('input[name="element-'+handle+'[]"]').each(function(){
jQuery(this).val(ie_settings[handle][at_key]);
at_key++;
});
break;
default:
jQuery('input[name="element-'+handle+'"]').val(ie_settings[handle]);
break;
}
//check the unit of elements
if(jQuery('select[name="element-'+handle+'-unit"]').length > 0){
jQuery('select[name="element-'+handle+'-unit"] option[value="'+ie_settings[handle+'-unit']+'"]').attr("selected","selected");
}
}
}
}
// Social Sharing
jQuery('select[name="element-facebook-sharing-link"]').change(function(){
if(jQuery('select[name="element-facebook-sharing-link"]').val()=="custom") jQuery(".eg-element-facebook_link_custom").show();
else jQuery(".eg-element-facebook_link_custom").hide();
});
jQuery('select[name="element-gplus-sharing-link"]').change(function(){
if(jQuery('select[name="element-gplus-sharing-link"]').val()=="custom") jQuery(".eg-element-gplus_link_custom").show();
else jQuery(".eg-element-gplus_link_custom").hide();
});
jQuery('select[name="element-pinterest-sharing-link"]').change(function(){
if(jQuery('select[name="element-pinterest-sharing-link"]').val()=="custom") jQuery(".eg-element-pinterest_link_custom").show();
else jQuery(".eg-element-pinterest_link_custom").hide();
});
jQuery('select[name="element-twitter-sharing-link"]').change(function(){
if(jQuery('select[name="element-twitter-sharing-link"]').val()=="custom") jQuery(".eg-element-twitter_link_custom").show();
else jQuery(".eg-element-twitter_link_custom").hide();
});
}
/**
* reset & show/hide elements based on positon:absolute or position:relative
*/
t.reset_style_by_position = function(){
var pos = jQuery('select[name="element-position"] option:selected').val();
if(pos == 'absolute'){
jQuery('#eg-show-on-absolute').css('display', 'block');
jQuery('#eg-show-on-relative').css('display', 'none');
if(!selected_layer.hasClass('ui-draggable')){
jQuery(selected_layer).appendTo('#skin-dz-wrapper');
t.set_absolute_positioning();
}
}else{
var layer_id = selected_layer.data('id');
for(var key in layers){
if(layers[key].id == layer_id){
//if(jQuery('#skin-dz-'+layers[key].container).length){}
if(selected_layer.hasClass('ui-draggable')){
selected_layer.appendTo('#skin-dz-'+layers[key].container);
selected_layer.removeClass('ui-draggable');
selected_layer.css('top', 'auto');
selected_layer.css('right', 'auto');
selected_layer.css('bottom', 'auto');
selected_layer.css('left', 'auto');
selected_layer.draggable('destroy');
//resort items
t.update_layer_sorting();
}
break;
}
}
jQuery('#eg-show-on-absolute').css('display', 'none');
jQuery('#eg-show-on-relative').css('display', 'block');
}
}
/**
* get setting values from input fields
*/
t.get_setting_values = function(){
if(selected_layer == null) return(false);
var has_changed = false;
var layer_id = selected_layer.data('id');
t.reset_style_by_position();
for(var key in layers){
if(layers[key].id == layer_id){
for(var handle in all_attributes){
var temp_val = layers[key]['settings'][handle];
if(all_attributes[handle]['type'] == 'checkbox'){
layers[key]['settings'][handle] = (jQuery('input[name="element-'+handle+'"]').is(':checked')) ? jQuery('input[name="element-'+handle+'"]').val() : '';
}else if(all_attributes[handle]['type'] == 'select'){
layers[key]['settings'][handle] = jQuery('select[name="element-'+handle+'"] option:selected').val();
//special case
if(handle == 'source'){
delete(layers[key]['settings']['source-event']);
delete(layers[key]['settings']['source-woocommerce']);
delete(layers[key]['settings']['source-icon']);
delete(layers[key]['settings']['source-text']);
delete(layers[key]['settings']['source-post']);
delete(layers[key]['settings']['source-meta']);
switch(layers[key]['settings'][handle]){
case 'event':
layers[key]['settings']['source-event'] = jQuery('select[name="element-source-event"] option:selected').val();
break;
case 'woocommerce':
layers[key]['settings']['source-woocommerce'] = jQuery('select[name="element-source-woocommerce"] option:selected').val();
break;
case 'icon':
layers[key]['settings']['source-icon'] = jQuery('input[name="element-source-icon"]').val();
break;
case 'text':
layers[key]['settings']['source-text'] = jQuery('textarea[name="element-source-text"]').val();
break;
case 'post':
default:
layers[key]['settings']['source-taxonomy'] = jQuery('select[name="element-source-taxonomy"] option:selected').val();
layers[key]['settings']['source-post'] = jQuery('select[name="element-source-post"] option:selected').val();
if(layers[key]['settings']['source-post'] == 'meta')
layers[key]['settings']['source-meta'] = jQuery('input[name="element-source-meta"]').val();
}
}else if(handle == 'link-type'){
delete(layers[key]['settings']['link-type-url']);
delete(layers[key]['settings']['link-type-meta']);
delete(layers[key]['settings']['link-type-javascript']);
delete(layers[key]['settings']['link-type-sharefacebook']);
delete(layers[key]['settings']['link-type-sharegplus']);
delete(layers[key]['settings']['link-type-sharepinterest']);
delete(layers[key]['settings']['link-type-sharetwitter']);
switch(layers[key]['settings'][handle]){
case 'post'://do nothing
case 'lightbox'://do nothing
case 'embedded_media'://do nothing
break;
case 'url':
layers[key]['settings']['link-type-url'] = jQuery('input[name="element-url-link"]').val();
break;
case 'meta':
layers[key]['settings']['link-type-meta'] = jQuery('input[name="element-meta-link"]').val();
break;
case 'javascript':
layers[key]['settings']['link-type-javascript'] = jQuery('input[name="element-javascript-link"]').val();
break;
case 'sharefacebook':
layers[key]['settings']['link-type-sharefacebook'] = jQuery('select[name="element-facebook-sharing-link"]').val();
layers[key]['settings']['link-type-sharefacebook-custom-url'] = jQuery('input[name="element-facebook-link-url"]').val();
break;
case 'sharegplus':
layers[key]['settings']['link-type-sharegplus'] = jQuery('select[name="element-gplus-sharing-link"]').val();
layers[key]['settings']['link-type-sharegplus-custom-url'] = jQuery('input[name="element-gplus-link-url"]').val();
break;
case 'sharepinterest':
layers[key]['settings']['link-type-sharepinterest'] = jQuery('select[name="element-pinterest-sharing-link"]').val();
layers[key]['settings']['link-type-sharepinterest-custom-url'] = jQuery('input[name="element-pinterest-link-url"]').val();
layers[key]['settings']['link-type-sharepinterest-description'] = jQuery('textarea[name="element-pinterest-description"]').val();
break;
case 'sharetwitter':
layers[key]['settings']['link-type-sharetwitter'] = jQuery('select[name="element-twitter-sharing-link"]').val();
layers[key]['settings']['link-type-sharetwitter-custom-url'] = jQuery('input[name="element-twitter-link-url"]').val();
layers[key]['settings']['link-type-sharetwitter-text-before'] = jQuery('input[name="element-twitter-text-before"]').val();
layers[key]['settings']['link-type-sharetwitter-text-after'] = jQuery('input[name="element-twitter-text-after"]').val();
break;
}
}else if(handle == 'background-size'){
delete(layers[key]['settings']['background-size-x']);
delete(layers[key]['settings']['background-size-y']);
if(layers[key]['settings'][handle] == '%'){
layers[key]['settings']['background-size-x'] = jQuery('input[name="element-background-size-x"]').val();
layers[key]['settings']['background-size-y'] = jQuery('input[name="element-background-size-y"]').val();
}
}else if(handle == 'align'){
layers[key]['settings']['absolute-unit'] = jQuery('select[name="element-absolute-unit"] option:selected').val();
}
}else if(all_attributes[handle]['type'] == 'multi-text'){
var multi_val = {};
var multi_key = 0;
jQuery('input[name="element-'+handle+'[]"]').each(function(){
multi_val[multi_key] = jQuery(this).val();
multi_key++;
});
layers[key]['settings'][handle] = multi_val;
}else{
layers[key]['settings'][handle] = jQuery('input[name="element-'+handle+'"]').val();
}
//check the unit of elements
if(jQuery('select[name="element-'+handle+'-unit"]').length > 0){
layers[key]['settings'][handle+'-unit'] = jQuery('select[name="element-'+handle+'-unit"] option:selected').val();
}
if(temp_val !== layers[key]['settings'][handle] && temp_val !== undefined){
if(all_attributes[handle]['type'] == 'multi-text'){
var mstring = '';
var mtstring = '';
var mfirst = true;
var mtfirst = true;
for(var mkey in layers[key]['settings'][handle]){
if(!mfirst) mstring+=',';
mstring+=layers[key]['settings'][handle][mkey];
mfirst = false;
}
for(var mkey in temp_val){
if(!mtfirst) mtstring+=',';
mtstring+=temp_val[mkey];
mtfirst = false;
}
if(mtstring != mstring){
save_needed = true;
}
}else{
save_needed = true;
}
}
/* 2.1.6 */
if(handle == 'transition'){
// t.set_transition_type_visibility(layers[key]['settings'][handle]);
t.check_no_transition(layers[key]['settings'][handle]);
}
}
break;
}
}
}
/**
* set setting values from input fields
*/
t.set_setting_values = function(){
if(selected_layer == null) return(false);
var layer_id = selected_layer.data('id');
for(var key in layers){
if(layers[key].id == layer_id){
for(var handle in all_attributes){
if(typeof(layers[key]['settings']) == 'undefined') continue;
if(typeof(layers[key]['settings'][handle]) == 'undefined') continue;
if(all_attributes[handle]['type'] == 'checkbox'){
if(layers[key]['settings'][handle] == jQuery('input[name="element-'+handle+'"]').val() || layers[key]['settings'][handle] == 'true' && jQuery('input[name="element-'+handle+'"]').val() == 'on'){
jQuery('input[name="element-'+handle+'"]').attr('checked', true);
}else{
jQuery('input[name="element-'+handle+'"]').attr('checked', false);
}
}else if(all_attributes[handle]['type'] == 'colorpicker'){
/* 2.1.6 */
if(typeof RevColor === 'undefined') {
jQuery('input[name="element-'+handle+'"]').val(layers[key]['settings'][handle]);
jQuery('#element-'+handle).closest('.wp-picker-container').find('a').first().css('background-color', jQuery('input[name="element-'+handle+'"]').val());
}
else {
jQuery('input[name="element-'+handle+'"]').val(layers[key]['settings'][handle]).tpColorPicker();
}
}else if(all_attributes[handle]['type'] == 'slider' || all_attributes[handle]['type'] == 'text-slider'){
jQuery('input[name="element-'+handle+'"]').val(layers[key]['settings'][handle]);
jQuery('#element-'+handle).slider({value:jQuery('input[name="element-'+handle+'"]').val()});
jQuery("body").trigger("esgslide",jQuery('#element-'+handle));
}else if(all_attributes[handle]['type'] == 'select'){
jQuery('select[name="element-'+handle+'"] option[value="'+layers[key]['settings'][handle]+'"]').attr("selected","selected");
//special case
if(handle == 'source'){
jQuery('.elements-select-wrap').hide();
switch(layers[key]['settings'][handle]){
case 'event':
jQuery('#eg-source-limit-wrap').show();
jQuery('select[name="element-source-event"]').show().siblings('.select_fake').show();
jQuery('select[name="element-source-event"] option[value="'+layers[key]['settings']['source-event']+'"]').attr("selected","selected");
break;
case 'woocommerce':
jQuery('#eg-source-limit-wrap').show();
jQuery('select[name="element-source-woocommerce"]').show().siblings('.select_fake').show();
jQuery('select[name="element-source-woocommerce"] option[value="'+layers[key]['settings']['source-woocommerce']+'"]').attr("selected","selected");
break;
case 'icon':
jQuery('#eg-source-icon-wrap').show();
jQuery('input[name="element-source-icon"]').val(layers[key]['settings']['source-icon']);
jQuery('#eg-preview-icon').html('');
break;
case 'text':
if(typeof layers[key]['settings']['special'] !== undefined && layers[key]['settings']['special'] == 'true' && typeof layers[key]['settings']['special-type'] !== undefined && layers[key]['settings']['special-type'] == 'blank-element'){
jQuery('#eg-source-text-style-disable-wrap').hide();
}else{
jQuery('#eg-source-text-style-disable-wrap').show();
}
jQuery('#eg-source-text-wrap').show();
jQuery('textarea[name="element-source-text"]').val(layers[key]['settings']['source-text']);
break;
case 'post':
default:
jQuery('#eg-source-limit-wrap').show();
jQuery('select[name="element-source-post"]').show().siblings('.select_fake').show();
if('source-taxonomy' in layers[key]['settings'])
jQuery('select[name="element-source-taxonomy"] option[value="'+layers[key]['settings']['source-taxonomy']+'"]').attr("selected","selected");
jQuery('select[name="element-source-post"] option[value="'+layers[key]['settings']['source-post']+'"]').attr("selected","selected");
if(layers[key]['settings']['source-post'] == 'meta')
jQuery('input[name="element-source-meta"]').val(layers[key]['settings']['source-meta']);
}
}else if(handle == 'link-type'){
jQuery('#eg-element-post-url-wrap').hide();
jQuery('#eg-element-post-meta-wrap').hide();
jQuery('#eg-element-post-javascript-wrap').hide();
jQuery('#eg-element-link-details-wrap').show();
jQuery('#eg-element-facebook-wrap').hide();
jQuery('#eg-element-gplus-wrap').hide();
jQuery('#eg-element-pinterest-wrap').hide();
jQuery('#eg-element-twitter-wrap').hide();
switch(layers[key]['settings'][handle]){
case 'post':
case 'lightbox':
case 'embedded_media':
break;
case 'url':
jQuery('#eg-element-post-url-wrap').show();
jQuery('input[name="element-url-link"]').val(layers[key]['settings']['link-type-url']);
break;
case 'meta':
jQuery('#eg-element-post-meta-wrap').show();
jQuery('input[name="element-meta-link"]').val(layers[key]['settings']['link-type-meta']);
break;
case 'javascript':
jQuery('#eg-element-post-javascript-wrap').show();
jQuery('input[name="element-javascript-link"]').val(layers[key]['settings']['link-type-javascript']);
break;
case 'sharefacebook':
jQuery('#eg-element-link-details-wrap').hide();
jQuery('#eg-element-facebook-wrap').show();
jQuery('select[name="element-facebook-sharing-link"]').val(layers[key]['settings']['link-type-sharefacebook']);
jQuery('input[name="element-facebook-link-url"]').val(layers[key]['settings']['link-type-sharefacebook-custom-url']);
if(jQuery('select[name="element-facebook-sharing-link"]').val()=="custom") jQuery(".eg-element-facebook_link_custom").show();
else jQuery(".eg-element-facebook_link_custom").hide();
break;
case 'sharegplus':
jQuery('#eg-element-link-details-wrap').hide();
jQuery('#eg-element-gplus-wrap').show();
jQuery('select[name="element-gplus-sharing-link"]').val(layers[key]['settings']['link-type-sharegplus']);
jQuery('input[name="element-gplus-link-url"]').val(layers[key]['settings']['link-type-sharegplus-custom-url']);
if(jQuery('select[name="element-gplus-sharing-link"]').val()=="custom") jQuery(".eg-element-gplus_link_custom").show();
else jQuery(".eg-element-gplus_link_custom").hide();
break;
case 'sharepinterest':
jQuery('#eg-element-link-details-wrap').hide();
jQuery('#eg-element-pinterest-wrap').show();
jQuery('select[name="element-pinterest-sharing-link"]').val(layers[key]['settings']['link-type-sharepinterest']);
jQuery('input[name="element-pinterest-link-url"]').val(layers[key]['settings']['link-type-sharepinterest-custom-url']);
jQuery('textarea[name="element-pinterest-description"]').val(layers[key]['settings']['link-type-sharepinterest-description']);
if(jQuery('select[name="element-pinterest-sharing-link"]').val()=="custom") jQuery(".eg-element-pinterest_link_custom").show();
else jQuery(".eg-element-pinterest_link_custom").hide();
break;
case 'sharetwitter':
jQuery('#eg-element-link-details-wrap').hide();
jQuery('#eg-element-twitter-wrap').show();
jQuery('select[name="element-twitter-sharing-link"]').val(layers[key]['settings']['link-type-sharetwitter']);
jQuery('input[name="element-twitter-link-url"]').val(layers[key]['settings']['link-type-sharetwitter-custom-url']);
jQuery('input[name="element-twitter-text-before"]').val(layers[key]['settings']['link-type-sharetwitter-text-before']);
jQuery('input[name="element-twitter-text-after"]').val(layers[key]['settings']['link-type-sharetwitter-text-after']);
if(jQuery('select[name="element-twitter-sharing-link"]').val()=="custom") jQuery(".eg-element-twitter_link_custom").show();
else jQuery(".eg-element-twitter_link_custom").hide();
break;
}
}else if(handle == 'display'){
jQuery('#element-text-align-wrap').hide();
jQuery('#element-float-wrap').hide();
switch(layers[key]['settings'][handle]){
case 'block':
jQuery('#element-text-align-wrap').show();
break;
case 'inline-block':
jQuery('#element-float-wrap').show();
break;
}
}else if(handle == 'background-size'){
if(layers[key][handle] == '%'){
jQuery('#background-size-percent-wrap').css('display', 'inline-block');
jQuery('input[name="element-background-size-x"]').val(layers[key]['settings']['background-size-x']);
jQuery('input[name="element-background-size-y"]').val(layers[key]['settings']['background-size-y']);
}
}else if(handle == 'align'){
jQuery('select[name="element-absolute-unit"] option[value="'+layers[key]['settings']['absolute-unit']+'"]').attr('selected', 'selected');
}
}else if(all_attributes[handle]['type'] == 'multi-text'){
var multi_key = 0;
jQuery('input[name="element-'+handle+'[]"]').each(function(){
jQuery(this).val(layers[key]['settings'][handle][multi_key]);
multi_key++;
});
}else{
jQuery('input[name="element-'+handle+'"]').val(layers[key]['settings'][handle]);
}
//check the unit of elements
if(jQuery('select[name="element-'+handle+'-unit"]').length > 0){
jQuery('select[name="element-'+handle+'-unit"] option[value="'+layers[key]['settings'][handle+'-unit']+'"]').attr("selected","selected");
}
}
break;
}
}
}
/**
* set setting styles from object
*/
t.set_setting_styles = function(){
if(selected_layer == null) return(false);
var layer_id = selected_layer.data('id');
for(var key in layers){
if(layers[key].id == layer_id){
//t.set_element_styles(selected_layer, layers[key]['settings']);
t.set_inline_styles(selected_layer, layers[key]['settings']);
found = true;
break;
}
}
}
/**
* Set css inline styles element
*/
t.set_inline_styles = function(on_layer, settings, demo_element){
var isw = jQuery('#eg-inline-style-wrapper');
if(on_layer.data('handle') == 'eg-line-break' || on_layer.data('handle') == 'eg-blank-element') return true;
var idle = [];
var hover = [];
//check if we have selected to not set any styles here
if(settings['source'] == 'text' && typeof(settings['source-text-style-disable']) !== 'undefined' && settings['source-text-style-disable'] == 'on'){
//do not write anything
}else{
var do_important = '';
var do_hover = false;
if(settings['force-important'] == 'true') do_important = ' !important';
if(settings['enable-hover'] == 'on') do_hover = true;
for(var handle in all_attributes){
if(demo_element !== undefined){
if(handle == 'margin') continue;
if(handle == 'position') continue;
}
var style_type = all_attributes[handle]['style'];
if(style_type == 'hover'){ //look for spacings, use same as idle
switch(handle){
case 'display':
case 'text-align':
case 'float':
case 'clear':
case 'margin':
case 'padding':
break;
default:
if(all_attributes[handle]['style'] != style_type) continue;
}
}
if(all_attributes[handle]['style'] != 'idle' && all_attributes[handle]['style'] != 'hover') continue; //only styles idle and hover
if(!do_hover && all_attributes[handle]['style'] == 'hover') continue;
if(typeof(settings[handle]) !== 'undefined'){
var set_handle = (style_type == 'idle') ? handle : handle.replace('-hover', '');
if(all_attributes[handle]['type'] == 'multi-text'){
if(typeof settings[handle+'-unit'] == 'undefined') settings[handle+'-unit'] = 'px';
var set_unit = settings[handle+'-unit'];
if(set_handle == 'border-radius'){ //check if this works
if(style_type == 'idle'){
idle.push('border-top-left-radius: '+settings[handle][0]+set_unit+do_important+';');
idle.push('border-top-right-radius: '+settings[handle][1]+set_unit+do_important+';');
idle.push('border-bottom-right-radius: '+settings[handle][2]+set_unit+do_important+';');
idle.push('border-bottom-left-radius: '+settings[handle][3]+set_unit+do_important+';');
}else{
hover.push('border-top-left-radius: '+settings[handle][0]+set_unit+do_important+';');
hover.push('border-top-right-radius: '+settings[handle][1]+set_unit+do_important+';');
hover.push('border-bottom-right-radius: '+settings[handle][2]+set_unit+do_important+';');
hover.push('border-bottom-left-radius: '+settings[handle][3]+set_unit+do_important+';');
}
}else if(set_handle == 'border'){ //check if this works
if(style_type == 'idle'){
idle.push('border-top: '+settings[handle][0]+set_unit+do_important+';');
idle.push('border-right: '+settings[handle][1]+set_unit+do_important+';');
idle.push('border-bottom: '+settings[handle][2]+set_unit+do_important+';');
idle.push('border-left: '+settings[handle][3]+set_unit+do_important+';');
}else{
hover.push('border-top: '+settings[handle][0]+set_unit+do_important+';');
hover.push('border-right: '+settings[handle][1]+set_unit+do_important+';');
hover.push('border-bottom: '+settings[handle][2]+set_unit+do_important+';');
hover.push('border-left: '+settings[handle][3]+set_unit+do_important+';');
}
}else if(set_handle == 'box-shadow' || set_handle == 'background-color'){
var multi_string = '';
for(var mkey in settings[handle]){
multi_string += settings[handle][mkey]+set_unit+' ';
}
//get box shadow color
var shadow_color = (style_type == 'idle') ? settings['shadow-color'] : settings['shadow-color-hover'];
/* 2.1.6 */
/*
//get box shadow transaprency
var shadow_transparency = (style_type == 'idle') ? settings['shadow-alpha'] : settings['shadow-alpha-hover'];
shadow_color = AdminEssentials.hex_to_rgba(shadow_color, shadow_transparency, true);
*/
multi_string += ' '+shadow_color;
if(style_type == 'idle'){
idle.push('-moz-'+set_handle+': '+multi_string+do_important+';');
idle.push('-webkit-'+set_handle+': '+multi_string+do_important+';');
idle.push(set_handle+': '+multi_string+do_important+';');
}else{
hover.push('-moz-'+set_handle+': '+multi_string+do_important+';');
hover.push('-webkit-'+set_handle+': '+multi_string+do_important+';');
hover.push(set_handle+': '+multi_string+do_important+';');
}
}else{
var multi_string = '';
for(var mkey in settings[handle]){
multi_string += settings[handle][mkey]+set_unit+' ';
}
if(style_type == 'idle'){
idle.push(set_handle+': '+multi_string+do_important+';');
}else{
hover.push(set_handle+': '+multi_string+do_important+';');
}
}
}else{
if(set_handle == 'background-color'){
/* 2.1.6 */
/*
//get bg color transaprency
var bg_color_transparency = (style_type == 'idle') ? settings['bg-alpha'] : settings['bg-alpha-hover'];
var bg_color_rgba = AdminEssentials.hex_to_rgba(settings[handle], bg_color_transparency, true); // we only need rgba in backend
*/
var bg_color_rgba = settings[handle];
if(typeof RevColor !== 'undefined') bg_color_rgba = RevColor.get(bg_color_rgba);
if(style_type == 'idle'){
idle.push('background: '+bg_color_rgba+do_important+';');
}else{
hover.push('background: '+bg_color_rgba+do_important+';');
}
}else{
if(set_handle == 'border'){
if(style_type == 'idle'){
idle.push('border-style: solid'+do_important+';');
}else{
hover.push('border-style: solid'+do_important+';');
}
}
if(set_handle == 'font-style' && settings[handle] == 'true') settings[handle] = 'italic'+do_important+';';
var set_unit = all_attributes[handle]['unit'];
if(set_unit == undefined) set_unit = '';
if(settings[handle] == '') continue;
if(style_type == 'idle'){
if(set_handle == 'display') //force important on display setting
idle.push(set_handle+': '+settings[handle]+set_unit+' !important;');
else
idle.push(set_handle+': '+settings[handle]+set_unit+do_important+';');
if(set_handle == 'position' && settings[handle] == 'absolute'){
idle.push('height: auto'+do_important+';');
idle.push('width: auto'+do_important+';');
idle.push('white-space: nowrap'+do_important+';');
var lr = settings['left-right'] == "NaN" ? 0 : settings['left-right'];
var tb = settings['top-bottom'] == "NaN" ? 0 : settings['top-bottom'];
switch(settings['align']){
case 't_l':
idle.push('top: '+tb+settings['absolute-unit']+';');
idle.push('left: '+lr+settings['absolute-unit']+';');
idle.push('bottom:auto;');
idle.push('right:auto;');
break;
case 't_r':
idle.push('top: '+tb+settings['absolute-unit']+';');
idle.push('right: '+lr+settings['absolute-unit']+';');
idle.push('bottom:auto;');
idle.push('left:auto;');
break;
case 'b_l':
idle.push('bottom: '+tb+settings['absolute-unit']+';');
idle.push('left: '+lr+settings['absolute-unit']+';');
idle.push('top:auto;');
idle.push('right:auto;');
break;
case 'b_r':
idle.push('bottom: '+tb+settings['absolute-unit']+';');
idle.push('right: '+lr+settings['absolute-unit']+';');
idle.push('top:auto;');
idle.push('left:auto;');
break;
}
}
}else{
hover.push(set_handle+': '+settings[handle]+set_unit+do_important+';');
}
}
}
}
}
}
var html = ''+"\n";
//remove styles tag of element if exists
if(jQuery('#eg-element-style-'+on_layer.data('handle')).length > 0) jQuery('#eg-element-style-'+on_layer.data('handle')).remove();
isw.append(html);
}
/**
* Set css inline styles element
*/
t.set_global_inline_styles = function(){
var isw = jQuery('#eg-inline-style-wrapper');
if(jQuery('#eg-global-inline-styles').length > 0) jQuery('#eg-global-inline-styles').remove();
html = ''+"\n";
save_needed = true;
isw.append(html);
}
/**
* Set Settings like delay and animation type
*/
t.set_setting_attributes = function(){
if(selected_layer == null) return(false);
var layer_id = selected_layer.data('id');
//if(typeof(layers[layer_id]) === 'undefined') return false;
for(var key in layers){
if(layers[key]['id'] == layer_id){ //element == layers[key]['handle'] &&
for(var handle in all_attributes){
if(all_attributes[handle]['style'] !== 'attribute') continue;
if(handle == 'delay'){
var delay = layers[key]['settings'][handle];
if(delay > 0) delay = delay / 100;
selected_layer.data('delay', delay);
}
else if(handle == 'duration') {
var duration = layers[key]['settings'][handle];
selected_layer.data('duration', duration);
}else if(handle == 'transition'){
var classes = selected_layer.attr('class');
var class_arr = classes.split(' ');
//reset classes
for(var class_key in class_arr){
if(class_arr[class_key].indexOf('esg-') !== -1) selected_layer.removeClass(class_arr[class_key]);
}
if(typeof layers[key]['settings']['transition-type'] === 'undefined') layers[key]['settings']['transition-type'] = '';
//add transition
selected_layer.addClass('esg-'+layers[key]['settings'][handle]+layers[key]['settings']['transition-type']);
}/*else if(handle == 'split'){
var split_on = layers[key]['settings'][handle];
//console.log(split_on);
selected_layer.data('split', split_on);
selected_layer.attr('data-split', split_on);
}*/
}
}
}
}
/**
* Set the caption text of the element
*/
t.set_setting_caption = function(){
if(selected_layer == null) return(false);
var layer_id = selected_layer.data('id');
var caption = '';
for(var key in layers){
if(layers[key]['id'] == layer_id){
//check if we are special blank html element. If yes, leave empty in backend
if(typeof layers[key]['settings']['special'] !== undefined && layers[key]['settings']['special'] == 'true'){
if(typeof layers[key]['settings']['special-type'] !== undefined && layers[key]['settings']['special-type'] == 'blank-element'){
selected_layer.html(' ');
return true;
}
}
switch(layers[key]['settings']['source']){
case 'icon':
if(typeof layers[key]['settings']['source-icon'] !== 'undefined')
var caption = '';
break;
case 'text':
if(typeof layers[key]['settings']['source-text'] !== 'undefined')
var caption = layers[key]['settings']['source-text'];
break;
case 'event':
if(typeof layers[key]['settings']['source-event'] !== 'undefined')
var caption = layers[key]['settings']['source-event'];
break;
case 'woocommerce':
if(typeof layers[key]['settings']['source-woocommerce'] !== 'undefined')
var caption = layers[key]['settings']['source-woocommerce'];
break;
case 'post':
default:
if(typeof layers[key]['settings']['source-post'] !== 'undefined')
var caption = layers[key]['settings']['source-post'];
}
if(layers[key]['settings']['source'] == 'post' || layers[key]['settings']['source'] == 'event' || layers[key]['settings']['source'] == 'woocommerce'){
if(caption == ''){
caption = 'title';
layers[key]['settings']['source'] = 'post';
}
switch(caption){ //set shorts for woocommerce
case 'wc_full_price':
caption = eg_lang.full_price;
break;
case 'wc_price':
caption = eg_lang.regular_price;
break;
case 'wc_price_no_cur':
caption = eg_lang.regular_price_no_cur;
break;
default:
caption = jQuery('select[name="element-source-'+layers[key]['settings']['source']+'"] option[value="'+caption+'"]').text();
break;
}
}
selected_layer.html(caption);
break;
}
}
}
/**
* propagate styles into all layers (when layers get filled at start)
*/
t.propagate_layer_styles = function(handle, layer_id){
if(typeof init_elements[handle] == 'undefined') return false;
for(var key in init_elements[handle]['settings']){
layers[layer_id]['settings'][key] = init_elements[handle]['settings'][key];
}
}
/**
* propagate elements into selectbox
*/
t.propagate_element_selector = function(){
jQuery('#element-settings-current-name').html('');
for(var lkey in layers){ //add layers
var ele_text = '';
switch(layers[lkey]['settings']['source']){
case 'icon':
ele_text = layers[lkey]['settings']['source-icon'];
break;
case 'post':
ele_text = jQuery('select[name="element-source-post"] option[value="'+layers[lkey]['settings']['source-post']+'"]').text();
break;
case 'event':
ele_text = jQuery('select[name="element-source-event"] option[value="'+layers[lkey]['settings']['source-event']+'"]').text();
break;
case 'woocommerce':
ele_text = jQuery('select[name="element-source-woocommerce"] option[value="'+layers[lkey]['settings']['source-woocommerce']+'"]').text();
break;
case 'text':
ele_text = layers[lkey]['settings']['source-text'].replace(/(<([^>]+)>)/ig,"");
break;
}
jQuery('#element-settings-current-name').append(jQuery('