HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux bsx-1-dev 6.8.0-101-generic #101-Ubuntu SMP PREEMPT_DYNAMIC Mon Feb 9 10:15:05 UTC 2026 x86_64
User: www-data (33)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/plugins/revslider-fluiddynamics-addon/framework/base.class.php
<?php
/* 
 * @author    ThemePunch <info@themepunch.com>
 * @link      http://www.themepunch.com/
 * @copyright 2024 ThemePunch
*/

if(!defined('ABSPATH')) exit();

class RsAddOnTheFluidDynamicsBase {
	
	const MINIMUM_VERSION = '6.7.0';
	
	protected function systemsCheck() {
		
		if(!class_exists('RevSliderFront')) {
		
			return 'add_notice_plugin';
		
		}
		else if(!version_compare(RevSliderGlobals::SLIDER_REVISION, RsAddOnTheFluidDynamicsBase::MINIMUM_VERSION, '>=')) {
		
			return 'add_notice_version';
		
		}
		else if(get_option('revslider-valid', 'false') == 'false') {
		
			 return 'add_notice_activation';
		
		}
		
		return false;
		
	}
	
	protected function loadClasses() {
		
		$isAdmin = is_admin();
		
		if($isAdmin) {
			
			//handle update process, this uses the typical ThemePunch server process
			require_once(static::$_PluginPath . 'admin/includes/update.class.php');
			$update_admin = new RevAddOnTheFluidDynamicsUpdate(static::$_Version);

			add_filter('pre_set_site_transient_update_plugins', array($update_admin, 'set_update_transient'));
			add_filter('plugins_api', array($update_admin, 'set_updates_api_results'), 10, 3);
			
			// admin CSS/JS
			add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_scripts'));
			add_action( 'revslider_do_ajax', array($this, 'do_ajax'),10,2);
			
		}

		//v7, load always as things are needed in overview page
		require_once(static::$_PluginPath . 'public/includes/front.class.php');
		new SrFluidDynamicsFront(static::$_PluginTitle);

		global $SR_GLOBALS;
    	if(!isset($SR_GLOBALS['front_version']) || $SR_GLOBALS['front_version'] !== 7){
			/* 
			frontend scripts always enqueued for admin previews
			*/
			require_once(static::$_PluginPath . 'sr6/includes/slider.class.php');
			require_once(static::$_PluginPath . 'sr6/includes/slide.class.php');
			
			new RsTheFluidDynamicsSliderFront(static::$_Version, static::$_PluginUrl, static::$_PluginTitle, $isAdmin);
			new RsTheFluidDynamicsSlideFront(static::$_PluginTitle);
		}
		
	}
	
	/**
	 * Load the textdomain
	 **/
	public function _loadPluginTextDomain(){
		
		load_plugin_textdomain('rs_' . static::$_PluginTitle, false, static::$_PluginPath . 'languages/');
		
	}

	// load admin scripts
	public function enqueue_admin_scripts($hook) {

		if($hook === 'toplevel_page_revslider') {

			if(!isset($_GET['page']) || !isset($_GET['view'])) return;
			
			$page = $_GET['page'];
			if($page !== 'revslider') return;
			
			$_handle = 'rs-' . static::$_PluginTitle;
			$_base   = static::$_PluginUrl . 'admin/assets/';
			
			// load fronted Script for some global function
			$_jsPathMin = file_exists(RS_FLUIDDYNAMICS_PLUGIN_PATH . 'sr6/assets/js/revolution.addon.' . static::$_PluginTitle . '.js') ? '' : '.min';	
			wp_enqueue_script($_handle.'-js', static::$_PluginUrl . 'sr6/assets/js/revolution.addon.' . static::$_PluginTitle . $_jsPathMin . '.js', array('jquery', 'revbuilder-admin'), static::$_Version, true);
			
			$_jsPathMin = file_exists(static::$_PluginPath . 'admin/assets/js/revslider-' . static::$_PluginTitle . '-addon-admin.dev.js') ? '.dev' : '';
			wp_enqueue_style($_handle.'-css', $_base . 'css/revslider-' . static::$_PluginTitle . '-addon-admin.css', array(), static::$_Version);
			wp_enqueue_script($_handle.'-addon-admin-js', $_base . 'js/revslider-' . static::$_PluginTitle . '-addon-admin' . $_jsPathMin . '.js', array('jquery', 'revbuilder-admin', 'revbuilder-threejs'), static::$_Version, true);
			wp_localize_script($_handle.'-addon-admin-js', 'revslider_fluiddynamics_addon', self::get_var() );
			
			wp_enqueue_script('revbuilder-threejs', RS_PLUGIN_URL . 'sr6/assets/js/libs/three.min.js', array('jquery', 'revbuilder-admin',$_handle.'-js'), RS_REVISION);
			
		}		
	}

	
	/**
	 * New function for ajax activation to include AddOn help definitions
	 *
	 * @since    2.0.0
	 */
	public static function get_data($var='',$slug='revslider-fluiddynamics-addon') {
		
		if($slug === 'revslider-fluiddynamics-addon'){
			
			$obj = self::get_var();
			$obj['help'] = self::get_definitions();
			return $obj;
			
		}
		
		return $var;
	
	}
	
	/**
	 * Called via php filter.  Merges AddOn definitions with core revslider definitions
	 *
	 * @since    2.0.0
	 */
	public static function get_help($definitions) {
		
		if(empty($definitions) || !isset($definitions['editor_settings'])) return $definitions;
		
		if(isset($definitions['editor_settings']['layer_settings']) && isset($definitions['editor_settings']['layer_settings']['addons'])) {
			$help = self::get_definitions();
			$definitions['editor_settings']['layer_settings']['addons']['fluiddynamics_addon'] = $help['layer'];
		}
		
		return $definitions;
	
	}

	public function do_ajax($return = "",$action ="") {
		switch ($action) {
			case 'delete_custom_templates_revslider-fluiddynamics-addon':
				$return = $this->delete_template($_REQUEST["data"]);
				if($return){
					return  __('Fluid Dynamics Template deleted', 'revslider-fluiddynamics-addon');
				}
				else{
					return  __('Fluid Dynamics Template could not be deleted', 'revslider-fluiddynamics-addon');
				}
				break;
			case 'save_custom_templates_revslider-fluiddynamics-addon':
				$return = $this->save_template($_REQUEST["data"]);
				if(empty($return) || !$return){
					return  __('Fluid Dynamics Template could not be saved', 'revslider-fluiddynamics-addon');
				} 
				else {
					return  array( 'message' => __('Fluid Dynamics Template saved', 'revslider-fluiddynamics-addon'), 'data' => array("id" => $return));	
				}
				break;
			default:
				return $return;
				break;
		}
	}

	/**
	 * Save Custom Template
	 *
	 * @since    2.0.0
	 */
	private function save_template($template){
		//load already saved templates
		$custom = $this->get_templates();

		//empty custom templates?
		if(!$custom || !is_array($custom)){
			$custom = array();
			$new_id = 1;
		}
		else{
			//custom templates exist
			if(isset($template["id"]) && is_numeric($template["id"]) ){
				//id exists , overwrite
				$new_id = $template["id"];
			}
			else{
				//id does not exist , new template
				$new_id = max(array_keys($custom))+1;
			}
		}

		//update or insert template
		$custom[$new_id]["title"] = $template["obj"]["title"];
		$custom[$new_id]["preset"] = $template["obj"]["preset"];
		if(update_option( 'revslider_addon_fluiddynamics_templates', $custom )){
			//return the ID the template was saved with
			return $new_id;
		}
		else {
			//updating failed, blank result set
			return "";
		}

	}

	/**
	 * Delete Custom Template
	 *
	 * @since    2.0.0
	 */
	private function delete_template($template){
		//load templates array
		$custom = $this->get_templates();

		//custom template exist
		if(isset($template["id"]) && is_numeric($template["id"]) ){
			//delete given ID
			$delete_id = $template["id"];
			unset($custom[$delete_id]);
			//save the resulting templates array again
			if(update_option( 'revslider_addon_fluiddynamics_templates', $custom )){
				return true;
			}
			else {
				return false;
			}
		}
	}

	/**
	 * Read Custom Templates from WP option, false if not set
	 *
	 * @since    2.0.0
	 */
	private static function get_templates(){
		//load WP option
		$custom = get_option('revslider_addon_fluiddynamics_templates',false);

		//check for templates saved before 6.0
		if(!isset($custom[1]["title"])){
			$custom = self::fallback_templates($custom);
			//save new array into WP option
			update_option('revslider_addon_fluiddynamics_templates',$custom);
		}

		return $custom;
	}

	/**
	 * Prepare old templates (before 6.0) to be readable/translateable for 6.x
	 *
	 * @since    2.0.0
	 */
	private static function fallback_templates($templates){
		$template_count = 1;
		$custom = array();
		/*
		//run through templates and build compatible array
		foreach($templates as $template_title => $template_presets){
			$custom[$template_count]["title"] = $template_title;
			$custom[$template_count]["preset"] = $template_presets;
		}
		*/
		return $custom;
	}

	
	/**
	 * Returns the global JS variable
	 *
	 * @since    2.0.0
	 */
	public static function get_var() {
			
		$_textdomain = 'revslider-fluiddynamics-addon';
		return array(
			'custom_templates' => self::get_templates(),
			'bricks' => array(		
				// GENERAL
				'fluiddynamics' => __('Fluid Dynamics', $_textdomain),
				'fluiddynamicsdatt' => __('Fluid Dynamics Setup', $_textdomain),
				'restartAni' => __('Restart Animation', $_textdomain),
				'pelib' => __('Fluid Dynamics FX Library',$_textdomain),
				'parpres' => __('Default Presets',$_textdomain),
				'custompres' => __('Custom Presets',$_textdomain),
				'select' => __('Select', $_textdomain),
				
				//Menus
				'main' => __('Main', $_textdomain),
				'simu' => __('Simulation', $_textdomain),
				'color' => __('Color', $_textdomain),

				//Main
				'followMouseSetup' => __('Mouse Setup', $_textdomain),
				'followMouse' => __('Follow Mouse', $_textdomain),
				'followAMGen' => __('Follow Mouse', $_textdomain),
				'paramSetup' => __('Parameter Setup', $_textdomain),
				'curlVal' => __('Curl', $_textdomain),
				'mousePower' => __('Mouse Power', $_textdomain),
				'splatRadius' => __('Radius', $_textdomain),
				'lifetimeSetup' => __('Lifetime Setup', $_textdomain),
				'densityDissipation' => __('Density', $_textdomain),
				'velocityDissipation' => __('Velocity', $_textdomain),
				'pressureDissipation' => __('Pressure', $_textdomain),
				'densityDissipationValueHelper' => __('Density controlls the speed the Color fades away (Base value: 69)', $_textdomain),
				'velocityDissipationValueHelper' => __('Velocity controlls how long the Path stays visible (Base value: 96)', $_textdomain),
				'pressureDissipationValueHelper' => __('Pressure controlls how long the pressure fields of prior movement stay in the Scene (Base value: 75)', $_textdomain),
				'dprSetup' => __('Resolution Setup', $_textdomain),
				'qualityFluid' => __('Quality', $_textdomain),
				'dprFluid' => __('DPR', $_textdomain),
				'dprSetupMobile' => __('Mobile', $_textdomain),
				'dprOnMobile' => __('Mobile Setup', $_textdomain),

				//SIMU
				'direction' => __('Direction', $_textdomain),
				'simulationSetup' => __('Simulation Setup', $_textdomain),
				'simuDelay' => __('Delay', $_textdomain),
				'simuLength' => __('Duration', $_textdomain),
				'simuWait' => __('Interval', $_textdomain),
				'simuPower' => __('Power', $_textdomain),
				'simuRadius' => __('Radius', $_textdomain),
				'vecLength' => __('Speed', $_textdomain), 
				'mistHelperDuration' => __('Controls the Speed and Randomness of the Emitters', $_textdomain),
				'mistHelperPower' => __('Controls the Power of the Emitters', $_textdomain),
				'mistHelperSpeed' => __('Controls the Speed of spreading', $_textdomain),

				//COLOR
				'colorSetup' => __('Main Color Setup', $_textdomain),
				'colorChangeSetup' => __('Color Change Setup', $_textdomain),
				'colorEffectSetup' => __('Effects', $_textdomain),
				'maxOpacitySetup' => __('Opacity Setup', $_textdomain),
				'colorChangeLenth' => __('Duration', $_textdomain),
				'allColorCount' => __('Colors used', $_textdomain),
				'fd_color1' => __('Color 1', $_textdomain),
				'fd_color2' => __('Color 2', $_textdomain),
				'fd_color3' => __('Color 3', $_textdomain),
				'fd_color4' => __('Color 4', $_textdomain),
				'fd_color5' => __('Color 5', $_textdomain),
				'fd_color6' => __('Color 6', $_textdomain),
				'maxOpacityValue' => __('Max Opacity', $_textdomain),
				'colorFull' => __('Colorfull', $_textdomain),
				'maxOpacityValueHelper' => __('Limits the Opacity of all Colors shown to selected Value', $_textdomain),
				'colorFade' => __('Color Fade', $_textdomain),
				'alphaClearHelper' => __('Option currently only works on Windows (After changings state, save & reload)', $_textdomain),
				'colorFullHelper' => __('When turned on, max Opacity should be reduced', $_textdomain),
				'glow' => __('Glow', $_textdomain),
			)
		);
	
	}
	
	/**
	 * Returns the addon help definitions
	 *
	 * @since    2.0.0
	 */
	private static function get_definitions() {
		
		return array(
			
			'layer' => array(
	
				/**
				 * _____________________________________
				 * ________________MAIN_________________
				 * _____________________________________
				 */

				// ____MOUSE SETUP_____

				'followMouse' => array(
					
					'buttonTitle' => __('Follow Mouse', 'revslider-fluiddynamics-addon'), 
					'title' => __('Follow Mouse', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.followMouse', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Follow Mouse'), 
					'description' => __("Toggles the ability to controll the Fluid by moving the Mouse", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.followMouse']"
						
					)
					
				),

				'mousePower' => array(
					
					'buttonTitle' => __('Mouse Power', 'revslider-fluiddynamics-addon'), 
					'title' => __('Mouse Power', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.mousePower', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Mouse Power'), 
					'description' => __("Controlls the Force of the mouse interacting with the Fluid", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.mousePower']"
						
					)
					
				),

				// ____PARAMETER SETUP_____

				'curlVal' => array(
					
					'buttonTitle' => __('Curl', 'revslider-fluiddynamics-addon'), 
					'title' => __('Curl', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.curlVal', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'curlVal'), 
					'description' => __("Amount of Curl added to the Fluid Effect", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.curlVal']"
						
					)
					
				),

				'splatRadius' => array(
					
					'buttonTitle' => __('Radius', 'revslider-fluiddynamics-addon'), 
					'title' => __('Radius', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.splatRadius', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Radius'), 
					'description' => __("Sets the max value for the Fluids Radius (Radius is also affected by the mouse movement Speed)", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.splatRadius']"
						
					)
					
				),

				// ____LIFETIME SETUP_____

				'densityDissipation' => array(
					
					'buttonTitle' => __('Density', 'revslider-fluiddynamics-addon'), 
					'title' => __('Density', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.densityDissipation', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Density'), 
					'description' => __("Controlls the Speed the Color Fades away at (higher value = color fades slower)", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.densityDissipation']"
						
					)
					
				),

				'velocityDissipation' => array(
					
					'buttonTitle' => __('Velocity', 'revslider-fluiddynamics-addon'), 
					'title' => __('Velocity', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.velocityDissipation', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Velocity'), 
					'description' => __("Controlls how long the Path stays visible (lower value = path visible for longer)", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.velocityDissipation']"
						
					)
					
				),

				'pressureDissipation' => array(
					
					'buttonTitle' => __('Pressure', 'revslider-fluiddynamics-addon'), 
					'title' => __('Pressure', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.pressureDissipation', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Pressure'), 
					'description' => __("Contolls how long prior movements in the Fluid affect new Movements (higher value = higher effect from prior movements", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.pressureDissipation']"
						
					)
					
				),

				// ____RESOLUTION SETUP_____

				'qualityFluid' => array(
					
					'buttonTitle' => __('Quality', 'revslider-fluiddynamics-addon'), 
					'title' => __('Quality', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.qualityFluid', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Quality'), 
					'description' => __("Adjusts the quality of the simulation on all devices", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.qualityFluid']"
						
					)
					
				),

				'dprFluid' => array(
					
					'buttonTitle' => __('DPR', 'revslider-fluiddynamics-addon'), 
					'title' => __('DPR', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.dprFluid', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'DPR'), 
					'description' => __("Sets the max. device pixel ratio on all devices", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.dprFluid']"
						
					)
					
				),

				'dprOnMobile' => array(
					
					'buttonTitle' => __('Mobile Setup', 'revslider-fluiddynamics-addon'), 
					'title' => __('Mobile Setup', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.dprOnMobile', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Mobile Setup'), 
					'description' => __("If turned on, mobile devices can have seperate device pixel ratio settings to maximise performance", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.dprOnMobile']"
						
					)
					
				),

				// ____MOBILE_____

				'qualityFluidMobile' => array(
					
					'buttonTitle' => __('Quality', 'revslider-fluiddynamics-addon'), 
					'title' => __('Quality', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.qualityFluidMobile', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Quality'), 
					'description' => __("Adjusts the quality of the simulation on mobile devices", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.qualityFluidMobile']"
						
					)
					
				),

				'dprFluidMobile' => array(
					
					'buttonTitle' => __('DPR', 'revslider-fluiddynamics-addon'), 
					'title' => __('DPR', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.dprFluidMobile', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'DPR'), 
					'description' => __("Sets the max. device pixel ratio on mobile devices", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.dprFluidMobile']"
						
					)
					
				),

				/**
				 * _____________________________________
				 * __________SIMULATION_________________
				 * _____________________________________
				 */

				'automateSel' => array(
					
					'buttonTitle' => __('Select', 'revslider-fluiddynamics-addon'), 
					'title' => __('Select', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.automateSel', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Select'), 
					'description' => __("Select Simulation", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.automateSel']"
						
					)
					
				),

				'directionChooser' => array(
					
					'buttonTitle' => __('Direction', 'revslider-fluiddynamics-addon'), 
					'title' => __('Direction', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.directionChooser', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Direction'), 
					'description' => __("Select Direction for Simulation", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.directionChooser']"
						
					)
					
				),

				'colDirectionChooser' => array(
					
					'buttonTitle' => __('Direction', 'revslider-fluiddynamics-addon'), 
					'title' => __('Direction', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.colDirectionChooser', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Direction'), 
					'description' => __("Select Direction for Simulation", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.colDirectionChooser']"
						
					)
					
				),

				// _______SIMULATION SETUP____________

				'simuLength' => array(
					
					'buttonTitle' => __('Duration', 'revslider-fluiddynamics-addon'), 
					'title' => __('Duration', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.simuLength', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Duration'), 
					'description' => __("Sets time period for the visible Part of the Simulation", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.simuLength']"
						
					)
					
				),

				'simuWait' => array(
					
					'buttonTitle' => __('Wait', 'revslider-fluiddynamics-addon'), 
					'title' => __('Wait', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.simuWait', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Wait'), 
					'description' => __("Sets time period between Simulations", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.simuWait']"
						
					)
					
				),

				'simuPower' => array(
					
					'buttonTitle' => __('Power', 'revslider-fluiddynamics-addon'), 
					'title' => __('Power', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.simuPower', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Power'), 
					'description' => __("Sets Power and Force of Simulation", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.simuPower']"
						
					)
					
				),

				'simuRadius' => array(
					
					'buttonTitle' => __('Radius', 'revslider-fluiddynamics-addon'), 
					'title' => __('Radius', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.simuRadius', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Radius'), 
					'description' => __("Sets the Radius for circular Simulations", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.simuRadius']"
						
					)
					
				),

				/**
				 * _____________________________________
				 * _______________COLOR_________________
				 * _____________________________________
				 */

				// _______MAIN COLOR SETUP___________

				'colorChangeType' => array(
					
					'buttonTitle' => __('Select', 'revslider-fluiddynamics-addon'), 
					'title' => __('Select', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.colorChangeType', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Select'), 
					'description' => __("Choose between timed and lifetime color fade options", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.colorChangeType']"
						
					)
					
				),

				'colorChangeLenth' => array(
					
					'buttonTitle' => __('Duration', 'revslider-fluiddynamics-addon'), 
					'title' => __('Duration', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.colorChangeLenth', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Duration'), 
					'description' => __("Length of time it takes to change colors", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.colorChangeLenth']"
						
					)
					
				),

				'colorFull' => array(
					
					'buttonTitle' => __('Colorfull', 'revslider-fluiddynamics-addon'), 
					'title' => __('Colorfull', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.colorFull', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Colorfull'), 
					'description' => __("Randomly generate colors for the fluid", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.colorFull']"
						
					)
					
				),

				'allColorCount' => array(
					
					'buttonTitle' => __('Colors Used', 'revslider-fluiddynamics-addon'), 
					'title' => __('Colors Used', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.allColorCount', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Colors Used'), 
					'description' => __("The Fluid Effect will cycle through all colors set by the User", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.allColorCount']"
						
					)
					
				),

				'maxOpacityValue' => array(
					
					'buttonTitle' => __('Max Opacity', 'revslider-fluiddynamics-addon'), 
					'title' => __('Max Opacity', 'revslider-fluiddynamics-addon'),
					'helpPath' => 'addOns.revslider-fluiddynamics-addon.maxOpacityValue', 
					'keywords' => array('addon', 'addons', 'fluiddynamics', 'fluiddynamics addon', 'Max Opacity'), 
					'description' => __("Limits the Opacity of all Colors in the Simulation to a set Value", 'revslider-fluiddynamics-addon'), 
					'helpStyle' => 'normal', 
					'article' => 'http://docs.themepunch.com/slider-revolution/fluiddynamics-addon/', 
					'video' => false,
					'section' => 'Layer Settings -> TheFluidDynamics',
					'highlight' => array(
						
						'dependencies' => array('layerselected::shape{{fluiddynamics}}'), 
						'menu' => "#module_layers_trigger, #gst_layer_revslider-fluiddynamics-addon", 
						'scrollTo' => '#form_layerinner_revslider-fluiddynamics-addon', 
						'focus' => "*[data-r='addOns.revslider-fluiddynamics-addon.maxOpacityValue']"
						
					)
					
				),
			)
			
		);
		
	}

}
	
?>