text: ;
  /* 
   * Common variables and functions.
   */
  jQuery(document).ready(function(){
  	/* 
  	 * Function remove all "multiplied_example" containers on page before send request.
  	 */
  	jQuery('#update-nav-menu .button-primary, .mm_theme_options_form .button-primary').click( function( event ) {
  		;jQuery( '.multiplied_example' ).remove();
  //		;jQuery( '[value="is_checkbox"]' ).remove();
  //		;jQuery('#menu-to-edit > li:not(.menu-item-depth-0) div[class*="submenu_"]').remove();
  	});
  
  	/* 
  	 * Initialize all functions.
  	 */
  	mm_multiplier();
  	mm_dependency_init();
  	mm_generator_bind();
  
  	jQuery(document).on( 'mousemove', function( e ){
  		now = e.timeStamp;    
  		if ( typeof last_moved === "undefined" ) {
  			last_moved = 0;
  		}
  		if ( now - last_moved > 1000 ) {
  			last_moved = now;
  			mm_generator_bind()
  		}
  	});
  /*
  	jQuery( 'body' ).on( 'mousemove', function() {
  		prev_dom_mod = 0;
  		last_dom_mod = 0;
  		jQuery( 'body' ).bind( 'DOMSubtreeModified', function() {
  			jQuery( this ).attr( 'data-last_dom_mod', jQuery.now() );
  			last_dom_mod = jQuery( this ).attr( 'data-last_dom_mod' );
  		});
  		console.log( prev_dom_mod + ' = ' + last_dom_mod );
  		if ( prev_dom_mod < last_dom_mod ) {
  			mm_generator_bind()
  			prev_dom_mod = last_dom_mod;
  		}
  	});
  */
  /*
  */
  /*
  	jQuery( '.vc_panel-body' ).on('change', function (e) {
  		mm_generator_bind();
  	});
  */
  /*
  	jQuery( 'body' ).bind( 'DOMSubtreeModified', function() {
  		jQuery( this ).attr( 'data-last_dom_mod', jQuery.now() );
  	});
  	alert( jQuery( 'body' ).attr( 'data-last_dom_mod' ) );
  // wpb_edit_form_elements
  // 1422536531990
  */
  
  /*
  	jQuery( 'body' ).on( 'mousemove', function() {
  		jQuery( 'body' ).bind( 'DOMSubtreeModified', function() {
  		});
  		mm_generator_bind();
  	});
  */
  });
  
  /* 
   * List of functions what must bind's everytime
   */
  function mm_generator_bind(){
  	mm_modal_trigger_open();
  	mm_modal_trigger_close();
  	mm_multiplier_numerator();
  	mm_multiplier_helpers();
  	mm_gradient_example();
  	mm_file_upload();
  	mm_icon_selector();
  	mm_animation_example();
  	mm_must_be_colorpicker();
  	mm_dependency_watcher();
  };
  
  /* 
   * Function just adds the HTML code of the modal at end of the body.
   */
  function mm_add_modal_template( modal_args ){
  	mm_modal_template_html_id = 'mm_undefined_id';
  	if ( typeof modal_args.modal_html_id !== 'undefined' ) {
  		mm_modal_template_html_id = modal_args.modal_html_id;
  	}
  	mm_modal_html_template = 
  	"\n" + '<div class="bootstrap mm_modal">'
  	+ "\n" + '	<div class="mm_modal_template modal fade" id="' + mm_modal_template_html_id + '" tabindex="-1" role="dialog" aria-hidden="true">'
  	+ "\n" + '		<div class="modal-dialog">'
  	+ "\n" + '			<div class="modal-content">'
  	+ "\n" + '			</div><!-- class="modal-content" -->'
  	+ "\n" + '		</div><!-- class="modal-dialog" -->'
  	+ "\n" + '	</div><!-- class="mm_modal_template" -->'
  	+ "\n" + '</div><!-- class="mm_modal" -->';
  	jQuery('body').append( mm_modal_html_template );
  	mm_generator_bind();
  };
  
  /* 
   * Function is looking for trigger that open the modal.
   */
  function mm_modal_trigger_open(){
  	mm_modal_button = jQuery('[data-toggle="modal"]');
  	mm_modal_button.unbind();
  	mm_modal_button.on( 'click', function() {
  		if ( jQuery( this ).attr( 'data-mm_modal_args' ).length > 0 ) {
  			mm_modal_args_string = jQuery( this ).attr( 'data-mm_modal_args' );
  			mm_modal_args_array = JSON.parse( mm_modal_args_string.replace( /\'/g, '\"' ) );
  		}
  		mm_add_modal_template( mm_modal_args_array );
  		mm_generator_bind();
  	});
  };
  
  /* 
   * Function is looking for trigger that closes the modal.
   */
  function mm_modal_trigger_close(){
  	mm_modal = jQuery( '.mm_modal .mm_modal_template' );
  	mm_modal.find( '.close' ).on( 'click', function (e) {
  		mm_modal.hide();
  		jQuery( mm_modal ).parent().remove();
  		jQuery( 'body' ).removeClass( 'modal-open' );
  		mm_generator_bind();
  	});
  };
  
  /* 
   * Function add one more item from example
   */
  function mm_multiplier(){
  	var mm_clone = '';
  	jQuery( '.multiplier_type' ).unbind();
  	jQuery( '.multiplier_type' ).each( function( p_index, p_element ) {
  		/* multipler_add_one_more button manipulation */
  		mm_clone = '';
  		jQuery( p_element ).find( '.multipler_add_one_more' ).click( function() {
  			mm_clone = jQuery( p_element ).find( '.multiplied_example > *' ).clone();
  			jQuery( p_element ).find('.multiplied_content').append( mm_clone );
  			mm_generator_bind();
  		});
  	});
  };
  
  /* 
   * Create helpers for mm_multiplier.
   */
  function mm_multiplier_helpers(){
  	jQuery( '.multiplier_type' ).unbind();
  	jQuery( '.multiplier_type' ).each( function( p_index, p_element ) {
  		/* make multiplier items sortable */
  		jQuery( p_element ).find( '.multiplied_content' ).sortable({ 
  			opacity: 0.6, 
  			cursor: 'move', 
  			distance: 15,
  			revert: 150,
  			update: function() {
  				mm_generator_bind();
  			}
  		});
  		/* "remove" button manipulation */
  		jQuery( p_element ).find( '.multiplied_content > div' ).each( function( index, element ) {
  			check_remover = jQuery( element ).find('.multiple_item_remover');
  			if ( check_remover.length == 0 ) {
  				jQuery( element ).prepend( '<span class="multiple_item_remover">X</span>' );
  			}
  			jQuery( element ).find( '.multiple_item_remover' ).click(function(){
  				jQuery( element ).fadeOut( 400, function() {
  					jQuery( this ).remove();
  					mm_multiplier_numerator();
  					mm_generator_bind();
  				});
  			});
  		});
  	});
  };
  
  /* 
   * Function select important multiplied containers id-values and set them current order.
   */
  function mm_multiplier_numerator () {
  	jQuery( '.multiplier_type' ).unbind();
  	jQuery( '.multiplier_type' ).each( function( p_index, p_element ) {
  		classes_new_id = 1;
  		jQuery( p_element ).find( '.multiplied_content > div' ).each( function( index, element ) {
  				// replace all href="" identificators
  				jQuery(this).find('*[href]').each(function(index,element){
  					element_href = jQuery(element).attr( 'href' );
  					jQuery(element).attr( 'href', element_href.replace( /\d+/g, classes_new_id ) );
  					element_text = jQuery(element).text();
  					jQuery(element).text( element_text.replace( /\d+/g, classes_new_id ) );
  				});
  				// replace all id="" identificators
  				jQuery(this).find('*[id]').each(function(index,element){
  					element_id = jQuery(element).attr( 'id' );
  					jQuery(element).attr( 'id', element_id.replace( /\d+/g, classes_new_id ) );
  				});
  				// replace all name="" identificators
  				jQuery(this).find('*[name]').each(function(index,element){
  					element_name = jQuery(element).attr( 'name' );
  					jQuery(element).attr( 'name', element_name.replace( /\[\d+\]/g, '[' + classes_new_id + ']' ) );
  				});
  				// replace all data-imgprev="" identificators
  				jQuery(this).find('*[data-imgprev]').each(function(index,element){
  					element_data = jQuery(element).attr( 'data-imgprev' );
  					jQuery(element).attr( 'data-imgprev', element_data.replace( /\d+/g, classes_new_id ) );
  				});
  				// replace all data-mm_icon="" identificators
  				jQuery(this).find('*[data-mm_icon]').each(function(index,element){
  					element_data = jQuery(element).attr( 'data-mm_icon' );
  					jQuery(element).attr( 'data-mm_icon', element_data.replace( /\d+/g, classes_new_id ) );
  				});
  				// replace all data-target="" identificators
  				jQuery(this).find('*[data-target]').each(function(index,element){
  					element_data = jQuery(element).attr( 'data-target' );
  					jQuery(element).attr( 'data-target', element_data.replace( /\d+/g, classes_new_id ) );
  				});
  				// replace all scripts identificators
  				jQuery(this).find('script').each(function(index,element){
  					element_html = jQuery(element).html();
  					jQuery(element).html( element_html.replace( /\d+/g, classes_new_id ) );
  				});
  
  				classes_new_id = classes_new_id + 1;
  		});
  	});
  };
  
  /* 
   * 
   */
  function mm_dependency_watcher () {
  	jQuery( '[data-dependencyelement]' ).unbind();
  	jQuery( '[data-dependencyelement]' ).each( function( p_index, p_element ) {
  		jQuery( '[name*="' + jQuery( p_element ).attr( 'data-dependencyelement' ) + '"]' ).change(function(){
  			current_val = jQuery( this ).val();
  			if ( jQuery( this ).attr( 'type' ) == 'checkbox' || jQuery( this ).attr( 'type' ) == 'radio' ) {
  				current_val = jQuery( '[name*="' + jQuery( p_element ).attr( 'data-dependencyelement' ) + '"]:checked' ).val()
  			}
  			if ( jQuery.inArray( current_val, jQuery( p_element ).attr( 'data-dependencyvalue' ).split( '|' ) ) == -1 ) {
  				jQuery( p_element ).slideUp( 500 );
  			} else {
  				jQuery( p_element ).slideDown( 500 );
  			};
  		});
  	});
  };
  
  /* 
   * 
   */
  function mm_dependency_init () {
  	jQuery( 'div[data-dependencyelement]' ).unbind();
  	jQuery( 'div[data-dependencyelement]' ).each( function( p_index, p_element ) {
  		// ID manipulations
  		child_name = jQuery( p_element ).find('input[name], select[name], textarea[name]').attr( 'name' );
  		child_id = child_name.replace(/[^0-9]/g,'');
  		element_name = jQuery( p_element ).attr( 'data-dependencyelement' );
  		element_name = element_name.replace( /__ID__/g, child_id );
  		jQuery( p_element ).attr( 'data-dependencyelement', element_name );
  		// regular dependency function
  		current_val = '';
  
  		jQuery( '[name*="' + element_name + '"]' ).each( function( index, element ) {
  			current_val = jQuery( element ).val();
  			if ( jQuery( element ).attr( 'type' ) == 'checkbox' || jQuery( element ).attr( 'type' ) == 'radio' ) {
  				current_val = jQuery( '[name*="' + element_name + '"]:checked' ).val()
  			}
  		});
  		if ( jQuery.inArray( current_val, jQuery( p_element ).attr( 'data-dependencyvalue' ).split( '|' ) ) == -1 ) {
  			jQuery( p_element ).css({ display: "none" });
  		} else {
  			jQuery( p_element ).css({ display: "block" });
  		};
  	});
  };
  
  /* 
   * 
   */
  function mm_icon_selector( input_name, modal_id ) {
  	checked_icon = jQuery( '#' + modal_id + ' .all_icons_container input:checked' ).val(); 
  	jQuery( 'i[data-mm_icon="' + modal_id + '"]' ).removeClass(); 
  	jQuery( 'i[data-mm_icon="' + modal_id + '"]' ).addClass( checked_icon ); 
  	jQuery( 'input[data-mm_icon="' + modal_id + '"]' ).val( checked_icon ); 
  //	jQuery( '#' + modal_id ).modal('hide'); 
  	jQuery( '#' + modal_id ).parent().remove();
  	jQuery( 'body' ).removeClass( 'modal-open' );
  };
  
  /* 
   * Trigger on all "ColorPicker" buttons.
   */
  function mm_must_be_colorpicker(){
  	jQuery( '.mm_must_be_colorpicker' ).unbind();
  	jQuery( '.mm_must_be_colorpicker' ).each( function( p_index, p_element ) {
  		if ( jQuery( this ).find( 'input' ).val() == '' ){
  			jQuery( this ).find( '.add-on i' ).css( 'background-color', 'transparent');
  		};
  		jQuery( this ).mm_colorpicker();
  	});
  };
  
  /* 
   * Trigger on "Upload Image" button.
   */
  function mm_file_upload() {
  	jQuery( '.file_type, .background_image_type' ).unbind();
  	jQuery( '.file_type, .background_image_type' ).each( function( index, element ) {
  		jQuery( element ).find( '.select_file_button' ).click(function(){
  			mmUploadID = jQuery( element ).find( '.upload' );
  			mmPrewImage = jQuery( element ).find( '.img_preview' );
  			tb_show("Select file", "media-upload.php?type=image&amp;TB_iframe=true");
  			return false;
  		});
  		window.send_to_editor = function(html) {
  			imgurl = jQuery("img",html).attr("src");
  			mmUploadID.val(imgurl);
  			mmPrewImage.attr({src: imgurl});
  			tb_remove();
  		};
  	});
  };
  
  /* 
   * Animation Example
   */
  function mm_animation_example() {
  	jQuery( '.option.animation_type' ).unbind();
  	jQuery( '.option.animation_type' ).each( function( index, element ) {
  		jQuery( this ).on( 'change', 'select', function(){
  			jQuery( element ).find( '.animation_preview > span' ).attr( 'class', 'mme_animation animated ' + jQuery( this ).val() );
  		});
  	});
  };
  
  /* 
   * Trigger on "Gradient Example" button.
   */
  function mm_gradient_example( ) {
  	jQuery( '.gradient_type' ).unbind();
  	jQuery( '.gradient_type' ).each( function( index, element ) {
  		jQuery( element ).find( '.gradient_example' ).click(function(){
  			color1 = jQuery( element ).find( 'input[name*="[color1]"]' ).val();
  			color2 = jQuery( element ).find( 'input[name*="[color2]"]' ).val();
  			start = jQuery( element ).find( 'input[name*="[start]"]' ).val();
  			end = jQuery( element ).find( 'input[name*="[end]"]' ).val();
  			orientation = jQuery( element ).find( '*[name*="[orientation]"]' ).val();
  			if ( orientation == 'radial' ) {
  				orient1 = 'radial-gradient(center, ellipse cover';
  				orient2 = 'radial, center center, 0px, center center, 100%';
  				orient3 = 'radial-gradient(ellipse at center';
  			} else if ( orientation == 'left' ) {
  				orient1 = 'linear-gradient(left';
  				orient2 = 'linear, left top, right top';
  				orient3 = 'linear-gradient(to right';
  			} else {
  				orient1 = 'linear-gradient(top';
  				orient2 = 'linear, left top, left bottom';
  				orient3 = 'linear-gradient(to bottom';
  			}
  			gradient = 'background-color: ' + color1 + ';';
  			gradient += 'background: -moz-' + orient1 + ',  ' + color1 + ' ' + start + '%, ' + color2 + ' ' + end + '%);';
  			gradient += 'background: -webkit-' + orient1 + ',  ' + color1 + ' ' + start + '%,' + color2 + ' ' + end + '%);';
  			gradient += 'background: -o-' + orient1 + ',  ' + color1 + ' ' + start + '%,' + color2 + ' ' + end + '%);';
  			gradient += 'background: -ms-' + orient1 + ',  ' + color1 + ' ' + start + '%,' + color2 + ' ' + end + '%);';
  			gradient += 'background: -webkit-gradient(' + orient2 + ', color-stop(' + start + '%,' + color1 + '), color-stop(' + end + '%,' + color2 + '));';
  			gradient += 'background: ' + orient3 + ',  ' + color1 + ' ' + start + '%,' + color2 + ' ' + end + '%);';
  			gradient += 'filter: progid:DXImageTransform.Microsoft.gradient( startColorstr="' + color1 + '", endColorstr="' + color2 + '",GradientType=0 );';
  			jQuery( this ).attr( 'style', gradient );
  		});
  	});
  };