function jcf_init()
{
    if (!is_admin()) {
        return;
    }
    /**
     *	load translations
     */
    load_plugin_textdomain(JCF_TEXTDOMAIN, false, dirname(plugin_basename(__FILE__)) . '/languages/');
    // init global variables
    global $jcf_fields, $jcf_fieldsets;
    // add admin page
    add_action('admin_menu', 'jcf_admin_menu');
    // add ajax call processors
    add_action('wp_ajax_jcf_add_fieldset', 'jcf_ajax_add_fieldset');
    add_action('wp_ajax_jcf_delete_fieldset', 'jcf_ajax_delete_fieldset');
    add_action('wp_ajax_jcf_change_fieldset', 'jcf_ajax_change_fieldset');
    add_action('wp_ajax_jcf_update_fieldset', 'jcf_ajax_update_fieldset');
    add_action('wp_ajax_jcf_add_field', 'jcf_ajax_add_field');
    add_action('wp_ajax_jcf_save_field', 'jcf_ajax_save_field');
    add_action('wp_ajax_jcf_delete_field', 'jcf_ajax_delete_field');
    add_action('wp_ajax_jcf_edit_field', 'jcf_ajax_edit_field');
    add_action('wp_ajax_jcf_fields_order', 'jcf_ajax_fields_order');
    // add $post_type for ajax
    if (!empty($_POST['post_type'])) {
        jcf_set_post_type($_POST['post_type']);
    }
    // init field classes and fields array
    jcf_field_register('Just_Field_Input');
    jcf_field_register('Just_Field_Select');
    jcf_field_register('Just_Field_SelectMultiple');
    jcf_field_register('Just_Field_Checkbox');
    jcf_field_register('Just_Field_Textarea');
    jcf_field_register('Just_Field_DatePicker');
    jcf_field_register('Just_Field_Upload');
    jcf_field_register('Just_Field_FieldsGroup');
    jcf_field_register('Just_Field_RelatedContent');
    /**
     *	to add more fields with your custom plugin:
     *	- add_action  'jcf_register_fields'
     *	- include your components files
     *	- run jcf_field_register('YOUR_COMPONENT_CLASS_NAME');
     */
    do_action('jcf_register_fields');
    // add post edit/save hooks
    add_action('add_meta_boxes', 'jcf_post_load_custom_fields', 10, 1);
    add_action('save_post', 'jcf_post_save_custom_fields', 10, 2);
    // add custom styles and scripts
    if (!empty($_GET['page']) && $_GET['page'] == 'just_custom_fields') {
        add_action('admin_print_styles', 'jcf_admin_add_styles');
        add_action('admin_print_scripts', 'jcf_admin_add_scripts');
    }
}
/**
 * Include classes for shortcodes for the frontend usage
 */
function jcf_shortcode_init_fields()
{
    // init field classes and fields array
    jcf_field_register('Just_Field_Input');
    jcf_field_register('Just_Field_Select');
    jcf_field_register('Just_Field_SelectMultiple');
    jcf_field_register('Just_Field_Checkbox');
    jcf_field_register('Just_Field_Textarea');
    jcf_field_register('Just_Field_DatePicker');
    jcf_field_register('Just_Field_Simple_Media');
    jcf_field_register('Just_Field_Table');
    jcf_field_register('Just_Field_Collection');
    jcf_field_register('Just_Field_RelatedContent');
    jcf_field_register('Just_Field_Upload');
    jcf_field_register('Just_Field_FieldsGroup');
    /**
     *	to add more fields with your custom plugin:
     *	- add_action  'jcf_register_fields'
     *	- include your components files
     *	- run jcf_field_register('YOUR_COMPONENT_CLASS_NAME');
     */
    do_action('jcf_register_fields');
}