$sc_class = 'wt_tag_sc';
        $id = mt_rand(9999, 99999);
        if (trim($el_id) != false) {
            $el_id = esc_attr(trim($el_id));
        } else {
            $el_id = $sc_class . '-' . $id;
        }
        $el_style = esc_attr($el_style);
        $el_class = esc_attr($this->getExtraClass($el_class));
        $css_class = apply_filters(VC_SHORTCODE_CUSTOM_CSS_FILTER_TAG, $sc_class . $el_class . vc_shortcode_custom_css_class($css, ' '), $this->settings['base']);
        $css_class .= $this->wt_sc->getWTCSSAnimationClass($css_animation, $anim_type);
        $anim_data = $this->wt_sc->getWTCSSAnimationData($css_animation, $anim_delay);
        $el_style = $this->wt_sc->getWTElementStyle($el_style);
        $content = wpb_js_remove_wpautop($content);
        // fix unclosed/unwanted paragraph tags in $content
        $output = '<' . $type . ' id="' . $el_id . '" class="' . $css_class . '"' . $el_style . $anim_data . '>';
        $output .= "\n\t\t\t" . $content;
        $output .= '</' . $type . '>';
        return $output;
    }
}
/*
Register WhoaThemes shortcode within Visual Composer interface.
*/
if (function_exists('wpb_map')) {
    $add_wt_sc_func = new WT_VCSC_SHORTCODE();
    $add_wt_css_animation = $add_wt_sc_func->getWTAnimations();
    $add_wt_css_animation_type = $add_wt_sc_func->getWTAnimationsType();
    $add_wt_css_animation_delay = $add_wt_sc_func->getWTAnimationsDelay();
    wpb_map(array('name' => __('WT Tag', 'wt_vcsc'), 'base' => 'wt_tag', 'icon' => 'wt_vc_ico_tag', 'class' => 'wt_vc_sc_tag', 'category' => __('by WhoaThemes', 'wt_vcsc'), 'description' => __('Place HTML tags ( div, section, span, i )', 'wt_vcsc'), 'params' => array(array('type' => 'dropdown', 'heading' => __('Type', 'wt_vcsc'), 'param_name' => 'type', 'value' => array(__('Div', 'wt_vcsc') => 'div', __('Section', 'wt_vcsc') => 'section', __('Span', 'wt_vcsc') => 'span', __('I', 'wt_vcsc') => 'i'), 'description' => __('Select the html tag you need. This shortcode is very useful because you can create block elements withought html coding. You can give them an id, a class attribute or set an inline style.', 'wt_vcsc')), array('type' => 'textfield', 'heading' => __('Extra Unique ID name', 'wt_vcsc'), 'param_name' => 'el_id', 'description' => __('If you wish to style particular content element differently, then use this field to add a UNIQUE ID name and then refer to it in your css file.', 'wt_vcsc')), array('type' => 'textfield', 'heading' => __('Extra class name', 'wt_vcsc'), 'param_name' => 'el_class', 'description' => __('If you wish to style particular content element differently, then use this field to add a class name and then refer to it in your css file.', 'wt_vcsc')), array('type' => 'textarea', 'heading' => __('Extra style', 'wt_vcsc'), 'param_name' => 'el_style', 'description' => __('If you wish to use inline styles, then use this field. The style attribute can contain any CSS property. <br>Example: color:sienna;margin-left:20px;', 'wt_vcsc')), array('type' => 'textarea_html', 'holder' => 'div', 'class' => '', 'heading' => __('Content', 'wt_vcsc'), 'param_name' => 'content', 'value' => __('<p>I am test text block. Click edit button to change this text.</p>', 'wt_vcsc'), 'description' => __('Enter your content.', 'wt_vcsc')), $add_wt_css_animation, $add_wt_css_animation_type, $add_wt_css_animation_delay, array('type' => 'css_editor', 'heading' => __('Css', 'wt_vcsc'), 'param_name' => 'css', 'group' => __('Design options', 'wt_vcsc')))));
}
                if ($align == 'left' || $align == 'center') {
                    // center is not working with this anyway
                    $output .= '<' . $tag . $el_style . '>' . $content . '</' . $tag . '>';
                    $output .= '<div class="wt_cheading_sep_wrap"><div class="wt_cheading_sep"></div></div>';
                } else {
                    // right
                    $output .= '<div class="wt_cheading_sep_wrap"><div class="wt_cheading_sep"></div></div>';
                    $output .= '<' . $tag . $el_style . '>' . $content . '</' . $tag . '>';
                }
                break;
            case "wt_cheading_3":
            default:
                $output .= '<' . $tag . $el_style . '><span>' . $content . '</span></' . $tag . '>';
                break;
        }
        $output .= '</div>';
        return $output;
    }
}
/*
Register WhoaThemes shortcode within Visual Composer interface.
*/
if (function_exists('wpb_map')) {
    $add_wt_sc_func = new WT_VCSC_SHORTCODE();
    $add_wt_extra_id = $add_wt_sc_func->getWTExtraId();
    $add_wt_extra_class = $add_wt_sc_func->getWTExtraClass();
    $add_wt_css_animation = $add_wt_sc_func->getWTAnimations();
    $add_wt_css_animation_type = $add_wt_sc_func->getWTAnimationsType();
    $add_wt_css_animation_delay = $add_wt_sc_func->getWTAnimationsDelay();
    wpb_map(array('name' => __('WT Custom Heading', 'wt_vcsc'), 'base' => 'wt_custom_heading', 'icon' => 'wt_vc_ico_custom_heading', 'class' => 'wt_vc_sc_custom_heading', 'category' => __('by WhoaThemes', 'wt_vcsc'), 'description' => __('Add custom heading text', 'wt_vcsc'), 'params' => array(array('type' => 'textarea', 'heading' => __('Text', 'wt_vcsc'), 'param_name' => 'content', 'admin_label' => true, 'value' => __('This is a custom heading element', 'wt_vcsc'), 'description' => __('Enter your custom heading content.', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Element tag', 'wt_vcsc'), 'param_name' => 'tag', 'value' => array(__('H1', 'wt_vcsc') => 'h1', __('H2', 'wt_vcsc') => 'h2', __('H3', 'wt_vcsc') => 'h3', __('H4', 'wt_vcsc') => 'h4', __('H5', 'wt_vcsc') => 'h5', __('H6', 'wt_vcsc') => 'h6'), 'std' => 'h2', 'description' => __('Select the element tag.', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Heading style', 'wt_vcsc'), 'param_name' => 'style', 'value' => array(__('Style #1', 'wt_vcsc') => 'wt_cheading_1', __('Style #2', 'wt_vcsc') => 'wt_cheading_2', __('Style #3', 'wt_vcsc') => 'wt_cheading_3', __('Style #4', 'wt_vcsc') => 'wt_cheading_4'), 'std' => 'wt_cheading_3', 'description' => __('Select the element tag.', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Text align', 'wt_vcsc'), 'param_name' => 'align', 'value' => array(__('Align left', 'wt_vcsc') => 'left', __('Align right', 'wt_vcsc') => 'right', __('Align center', 'wt_vcsc') => 'center'), 'std' => 'left', 'description' => __('Select text alignment. <strong>Style #2 is not working on center.</strong>', 'wt_vcsc')), array('type' => 'colorpicker', 'heading' => __('Text color', 'wt_vcsc'), 'param_name' => 'color', 'description' => __('Select text color.', 'wt_vcsc')), array('type' => 'colorpicker', 'heading' => __('Custom heading background', 'wt_vcsc'), 'param_name' => 'background', 'description' => __('Select custom heading background.', 'wt_vcsc')), $add_wt_extra_id, $add_wt_extra_class, $add_wt_css_animation, $add_wt_css_animation_type, $add_wt_css_animation_delay, array('type' => 'css_editor', 'heading' => __('Css', 'wt_vcsc'), 'param_name' => 'css', 'group' => __('Design options', 'wt_vcsc')))));
}
            // End portfolio article
            if ($carousel == 'true') {
                $output .= '</div>';
                // End "item" div
            }
        }
        if ($carousel == 'true') {
            $output .= '</div>';
            // End "wt_owl_carousel" div
            $output .= '</div>';
            // End "wt_port_carousel" div
        }
        if ($pagination == 'true' && $carousel == 'false') {
            ob_start();
            WT_VCSC_PortfolioPageNavi('', '', $wt_query, $paged, $pagination_align);
            $output .= ob_get_clean();
        }
        wp_reset_postdata();
        $wp_filter['the_content'] = $the_content_filter_backup;
        return $output;
    }
}
/*
Register WhoaThemes shortcode within Visual Composer interface.
*/
if (function_exists('wpb_map')) {
    $add_wt_sc_func = new WT_VCSC_SHORTCODE();
    $add_wt_extra_id = $add_wt_sc_func->getWTExtraId();
    $add_wt_extra_class = $add_wt_sc_func->getWTExtraClass();
    wpb_map(array('name' => __('WT Portfolio', 'wt_vcsc'), 'base' => 'wt_portfolio', 'icon' => 'wt_vc_ico_portfolio', 'class' => 'wt_vc_sc_portfolio', 'category' => __('by WhoaThemes', 'wt_vcsc'), 'description' => __('Recent portfolio posts', 'wt_vcsc'), 'params' => array(array('type' => 'dropdown', 'class' => '', 'heading' => __('Columns', 'wt_vcsc'), 'param_name' => 'columns', 'admin_label' => true, 'value' => array(__('Two', 'wt_vcsc') => '2', __('Three', 'wt_vcsc') => '3', __('Four', 'wt_vcsc') => '4', __('Five', 'wt_vcsc') => '5', __('Six', 'wt_vcsc') => '6'), 'std' => '4', 'description' => __('How many columns? Only \'1, 2, 3, 4, 6\' are accepted.', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Portfolio Grid Spaces', 'wt_vcsc'), 'param_name' => 'grid_spaces', 'value' => array(__('No', 'wt_vcsc') => 'false', __('Yes', 'wt_vcsc') => 'true'), 'description' => __('If selected, portfolio articles will have spaces around.', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Portfolio Overlay Title / Excerpt', 'wt_vcsc'), 'param_name' => 'overlay_desc', 'value' => array(__('Yes', 'wt_vcsc') => 'true', __('No', 'wt_vcsc') => 'false'), 'description' => __('If selected, title and portfolio excerpt will overlay the featured image on hover.', 'wt_vcsc')), array('type' => 'textfield', 'heading' => __('Max (posts number)', 'wt_vcsc'), 'param_name' => 'max', 'value' => '-1', 'description' => __('How many items do you wish to show? Set -1 to display all.', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Pagination', 'wt_vcsc'), 'param_name' => 'pagination', 'value' => array(__('No', 'wt_vcsc') => 'false', __('Yes', 'wt_vcsc') => 'true'), 'description' => __('Display pagination.', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Pagination alignment', 'wt_vcsc'), 'param_name' => 'pagination_align', 'value' => array(__('Align left', 'wt_vcsc') => 'left', __('Align right', 'wt_vcsc') => 'right', __('Align center', 'wt_vcsc') => 'center'), 'std' => 'center', 'param_holder_class' => 'border_box wt_dependency', 'dependency' => array('element' => 'pagination', 'value' => 'true'), 'description' => __('Aligns pagination links to left / center / right.', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Sortable', 'wt_vcsc'), 'param_name' => 'sortable', 'value' => array(__('No', 'wt_vcsc') => 'false', __('Yes', 'wt_vcsc') => 'true'), 'description' => __('Display sortable portfolio. Posts will be sorted and grouped by category. This will disable "Pagination" above option.', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Carousel', 'wt_vcsc'), 'param_name' => 'carousel', 'value' => array(__('No', 'wt_vcsc') => 'false', __('Yes', 'wt_vcsc') => 'true'), 'description' => __('Display portfolio posts with carousel. This will disable "Pagination & Sortable" above options.', 'wt_vcsc')), array('type' => 'textfield', 'heading' => __('Carousel Autoscrolling', 'wt_vcsc'), 'param_name' => 'auto_slide', 'value' => '0', 'param_holder_class' => 'border_box wt_dependency', 'dependency' => array('element' => 'carousel', 'value' => 'true'), 'description' => __('Enables autoscrolling and define the time interval (in miliseconds - Ex: 3000, 4000, 5000 etc) between transitions.', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Carousel Navigation', 'wt_vcsc'), 'param_name' => 'carousel_nav', 'value' => array(__('No', 'wt_vcsc') => 'false', __('Yes', 'wt_vcsc') => 'true'), 'param_holder_class' => 'border_box wt_dependency', 'dependency' => array('element' => 'carousel', 'value' => 'true'), 'description' => __('Enables carousel navigation ( prev / next buttons ).', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Title', 'wt_vcsc'), 'param_name' => 'title', 'value' => array(__('Yes', 'wt_vcsc') => 'true', __('No', 'wt_vcsc') => 'false'), 'description' => __('Display post title?', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Title linkable', 'wt_vcsc'), 'param_name' => 'title_linkable', 'value' => array(__('Yes', 'wt_vcsc') => 'true', __('No', 'wt_vcsc') => 'false'), 'param_holder_class' => 'border_box wt_dependency', 'dependency' => array('element' => 'title', 'value' => 'true'), 'description' => __('Link on title?', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Excerpt (post content)', 'wt_vcsc'), 'param_name' => 'excerpt', 'value' => array(__('Yes', 'wt_vcsc') => 'true', __('No', 'wt_vcsc') => 'false'), 'std' => 'false', 'description' => __('Display post excerpt / content?', 'wt_vcsc')), array('type' => 'textfield', 'heading' => __('Excerpt (post content) length', 'wt_vcsc'), 'param_name' => 'excerpt_length', 'value' => '15', 'param_holder_class' => 'border_box wt_dependency', 'dependency' => array('element' => 'excerpt', 'value' => 'true'), 'description' => __('Enter a custom excerpt length. Will trim the excerpt by this number of words.', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Display full post?', 'wt_vcsc'), 'param_name' => 'full', 'value' => array(__('No', 'wt_vcsc') => 'false', __('Yes', 'wt_vcsc') => 'true'), 'param_holder_class' => 'border_box wt_dependency', 'dependency' => array('element' => 'excerpt', 'value' => 'true'), 'description' => __('Display all posts content instead of the auto excerpt. Excerpt option above should be \'YES\'.', 'wt_vcsc')), array('type' => 'dropdown', 'heading' => __('Category', 'wt_vcsc'), 'param_name' => 'category', 'value' => array(__('Yes', 'wt_vcsc') => 'true', __('No', 'wt_vcsc') => 'false'), 'std' => 'false', 'description' => __('Display portfolio post category.', 'wt_vcsc')), array('type' => 'dropdown', 'class' => '', 'heading' => __('Read More', 'wt_vcsc'), 'param_name' => 'read_more', 'value' => array(__('Yes', 'wt_vcsc') => 'true', __('No', 'wt_vcsc') => 'false'), 'std' => 'false', 'description' => __('Display post readmore button after excerpt?', 'wt_vcsc')), array('type' => 'textfield', 'class' => '', 'heading' => __('Read More Text', 'wt_vcsc'), 'param_name' => 'read_more_text', 'value' => '', 'description' => __('Enter your custom text for the read more button.', 'wt_vcsc'), 'param_holder_class' => 'border_box wt_dependency', 'dependency' => array('element' => 'read_more', 'value' => 'true')), array('type' => 'dropdown', 'heading' => __('Group', 'wt_vcsc'), 'param_name' => 'group', 'value' => array(__('Yes', 'wt_vcsc') => 'true', __('No', 'wt_vcsc') => 'false'), 'description' => __('Portfolio item tuhmbnails (featured images) will be grouped in the lightbox.', 'wt_vcsc')), array('type' => 'wt_multidropdown', 'heading' => __('Display specific portfolio items (optional)', 'wt_vcsc'), 'param_name' => 'ids', 'value' => '', 'target' => 'wt_portfolio', 'description' => __('Display only specific / selected portfolio items. <b>Hold the \'Ctrl\' or \'Shift\' keys while clicking to select multiple items</b>.', 'wt_vcsc')), array('type' => 'wt_multidropdown', 'heading' => __('Display from category (optional)', 'wt_vcsc'), 'param_name' => 'cat', 'value' => '', 'target' => 'wt_portfolio_category', 'description' => __('Display portfolio items from selected categories. <b>Hold the \'Ctrl\' or \'Shift\' keys while clicking to select multiple items</b>.', 'wt_vcsc')), array('type' => 'wt_multidropdown', 'heading' => __('Exclude selected categories (optional)', 'wt_vcsc'), 'param_name' => 'cat__not', 'value' => '', 'target' => 'wt_portfolio_category', 'description' => __('Display portfolio items and exclude selected categories. <b>Hold the \'Ctrl\' or \'Shift\' keys while clicking to select multiple items</b>.', 'wt_vcsc')), array('type' => 'dropdown', 'class' => '', 'heading' => __('Order', 'wt_vcsc'), 'param_name' => 'order', 'description' => sprintf(__('Designates the ascending or descending order. More at %s.', 'wt_vcsc'), '<a href="http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters" target="_blank">WordPress codex</a>'), 'value' => array(__('DESC', 'wt_vcsc') => 'DESC', __('ASC', 'wt_vcsc') => 'ASC')), array('type' => 'dropdown', 'class' => '', 'heading' => __('Order By', 'wt_vcsc'), 'param_name' => 'orderby', 'description' => sprintf(__('Select how to sort retrieved posts. More at %s.', 'wt_vcsc'), '<a href="http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters" target="_blank">WordPress codex</a>'), 'value' => array(__('None', 'wt_vcsc') => 'none', __('Id', 'wt_vcsc') => 'ID', __('Author', 'wt_vcsc') => 'author', __('Title', 'wt_vcsc') => 'title', __('Date', 'wt_vcsc') => 'date', __('Modified', 'wt_vcsc') => 'modified', __('Parent', 'wt_vcsc') => 'parent', __('Random', 'wt_vcsc') => 'rand', __('Comment Count', 'wt_vcsc') => 'comment_count', __('Menu Order', 'wt_vcsc') => 'menu_order'), 'std' => 'date'), $add_wt_extra_id, $add_wt_extra_class, array('type' => 'css_editor', 'heading' => __('Css', 'wt_vcsc'), 'param_name' => 'css', 'group' => __('Design options', 'wt_vcsc')))));
}