/**
 * enque screen wise admin assets 
 *
 * @param string hook_suffix (file name)
 * @todo add all case
 */
function mgm_admin_enqueue_scripts($hook_suffix)
{
    global $wp_version, $wp_styles, $wp_scripts;
    // check and disable jquery ui
    if (isset($_GET['page']) && preg_match('#^mgm/admin#', $_GET['page'])) {
        // remove style by handler
        $style_handles = array('jquery-ui-css', 'jquery-ui', 'aiow-plugin-css', 'smoothness');
        // reset
        foreach ($style_handles as $style_handle) {
            if (isset($wp_styles->registered[$style_handle])) {
                unset($wp_styles->registered[$style_handle]);
            }
        }
        // remove script by handler
        $script_handles = array('jquery-ui');
        // reset
        foreach ($script_handles as $script_handle) {
            if (isset($wp_scripts->registered[$script_handle])) {
                unset($wp_scripts->registered[$script_handle]);
            }
        }
    }
    // screen
    $screen_id = get_current_screen()->id;
    // edit taxonomy
    if (preg_match('/^edit-/', $screen_id)) {
        if ('edit-tags.php' == $hook_suffix) {
            $screen_id = 'edit-taxonomy';
        }
    }
    // echo $screen_id;
    // post screen
    switch ($screen_id) {
        case 'post':
            // post edit,add
        // post edit,add
        case 'page':
            // page @todo custompage
            // case 'edit-post':// post listing
            // load respective jQueryUI
            $jqueryui_version = sprintf('js/jquery/jquery.ui/jquery-ui-%s.min.js', mgm_get_jqueryui_version());
            // load ui
            wp_enqueue_script('mgm-jquery-ui', MGM_ASSETS_URL . $jqueryui_version, array('jquery'));
            // custom scripts
            wp_enqueue_script('mgm-helpers', MGM_ASSETS_URL . 'js/helpers.js');
            // ui css
            wp_enqueue_style('mgm-jqueryui-css', MGM_ASSETS_URL . 'css/default/mgm/jquery.ui.css');
            wp_enqueue_style('mgm-widgets-css', MGM_ASSETS_URL . 'css/admin/mgm.widgets.css');
            break;
        case 'edit-category':
        case 'edit-post_tag':
        case 'edit-taxonomy':
            // styles
            wp_enqueue_style('mgm-adminui-css', MGM_ASSETS_URL . 'css/admin/mgm.adminui.css');
            // wp 3.3+ fix
            if (mgm_compare_wp_version('3.3', '>')) {
                wp_enqueue_style('mgm-adminui-wp3fix-css', MGM_ASSETS_URL . 'css/admin/mgm.adminui.wp3fix.css');
            }
            break;
        case 'users':
            // list
            // case 'user':// add
        // list
        // case 'user':// add
        case 'user-edit':
            // edit
            wp_enqueue_style('mgm-users-css', MGM_ASSETS_URL . 'css/admin/mgm.users.css');
            break;
        case 'dashboard':
            wp_enqueue_style('mgm-dashboard-css', MGM_ASSETS_URL . 'css/admin/mgm.dashboard.css');
            break;
        case 'profile_page_mgm/membership_details':
        case 'profile_page_mgm/membership_contents':
            // profile pages
            // ui css
            wp_enqueue_style('mgm-ui-css', MGM_ASSETS_URL . 'css/default/mgm/jquery.ui.css');
            // styles
            wp_enqueue_style('mgm-adminui-css', MGM_ASSETS_URL . 'css/admin/mgm.adminui.css');
            // styles
            wp_enqueue_style('mgm-wp-profile-css', MGM_ASSETS_URL . 'css/admin/mgm.wp-profile.css');
            break;
        case 'toplevel_page_mgm/admin':
            // mgm admin ui
            // load respective jQueryUI
            $jqueryui_version = sprintf('js/jquery/jquery.ui/jquery-ui-%s.min.js', mgm_get_jqueryui_version());
            // load ui
            wp_enqueue_script('mgm-jquery-ui', MGM_ASSETS_URL . $jqueryui_version, array('jquery'));
            // helpers scripts
            wp_enqueue_script('mgm-jquery-validate', MGM_ASSETS_URL . 'js/jquery/jquery.validate.pack.js');
            wp_enqueue_script('mgm-jquery-metadata', MGM_ASSETS_URL . 'js/jquery/jquery.metadata.js');
            wp_enqueue_script('mgm-jquery-form', MGM_ASSETS_URL . 'js/jquery/jquery.form.js');
            // custom scripts
            wp_enqueue_script('mgm-helpers', MGM_ASSETS_URL . 'js/helpers.js');
            wp_enqueue_script('mgm-string', MGM_ASSETS_URL . 'js/string.js');
            wp_enqueue_script('mgm-jquery-helpers', MGM_ASSETS_URL . 'js/jquery/jquery.helpers.js');
            // helpers scripts
            wp_enqueue_script('mgm-jquery-ajaxupload', MGM_ASSETS_URL . 'js/jquery/jquery.ajaxfileupload.js');
            // ?? is used
            wp_enqueue_script('mgm-jquery-scrollto', MGM_ASSETS_URL . 'js/jquery/jquery.scrollTo-min.js');
            wp_enqueue_script('mgm-jquery-corner', MGM_ASSETS_URL . 'js/jquery/jquery.corner.js');
            // wp_enqueue_script('mgm-jquery-tools', MGM_ASSETS_URL . 'js/jquery/jquery.tools.min.js');
            // wp_enqueue_script('mgm-jquery-tools', MGM_ASSETS_URL . 'js/jquery/messi/messi.min.js');
            wp_enqueue_script('mgm-nicedit', MGM_ASSETS_URL . 'js/nicedit/nicedit.js');
            wp_enqueue_script('mgm-checkboxtree', MGM_ASSETS_URL . 'js/jquery/jquery.tree.js');
            wp_enqueue_script('mgm-excanvas-min', MGM_ASSETS_URL . 'js/flot/excanvas.min.js');
            wp_enqueue_script('mgm-jquery-flot', MGM_ASSETS_URL . 'js/flot/jquery.flot.js');
            // ui css
            wp_enqueue_style('mgm-ui-css', MGM_ASSETS_URL . 'css/default/mgm/jquery.ui.css');
            // styles
            wp_enqueue_style('mgm-adminui-css', MGM_ASSETS_URL . 'css/admin/mgm.adminui.css');
            // wp 3.3+ fix
            if (mgm_compare_wp_version('3.3', '>')) {
                wp_enqueue_style('mgm-adminui-wp3fix-css', MGM_ASSETS_URL . 'css/admin/mgm.adminui.wp3fix.css');
            }
            // other
            // wp_enqueue_style('mgm-admin-overlay-css', MGM_ASSETS_URL . 'css/admin/jquery.overlay.css' );
            // wp_enqueue_style('mgm-admin-overlay-css', MGM_ASSETS_URL . 'css/admin/messi/messi.min.css' );
            wp_enqueue_style('mgm-admin-checkboxtree-css', MGM_ASSETS_URL . 'css/admin/jquery.tree.css');
            break;
        case 'widgets':
            // styles
            wp_enqueue_style('mgm-widgets-css', MGM_ASSETS_URL . 'css/admin/mgm.widgets.css');
            break;
        case 'profile_page_mgm/profile':
        case 'profile_page_mgm/membership/content':
            // styles
            wp_enqueue_style('mgm-adminui-css', MGM_ASSETS_URL . 'css/admin/mgm.adminui.css');
            wp_enqueue_style('mgm-pages-css', MGM_ASSETS_URL . 'css/default/mgm.pages.css');
            break;
    }
}
function mgm_attach_scripts($return = false, $exclude = array('jquery.ajaxfileupload.js'))
{
    global $mgm_scripts;
    // wp login form
    $wordpres_login_form = mgm_check_wordpress_login();
    // int css array
    $css_files = array();
    // subscribe page css, loaded from wp-admin
    /*
    if( mgm_get_query_var('purchase_subscription') || mgm_get_query_var('payment_return')):
    	$css_files[] = admin_url('/css/login.css');
    	$css_files[] = admin_url('/css/colors-fresh.css'); 
    endif; 
    */
    // group
    $css_group = mgm_get_css_group();
    //issue #867
    if ($css_group != 'none') {
        // other, loaded from mgm custom
        $css_files[] = MGM_ASSETS_URL . 'css/' . $css_group . '/mgm.form.fields.css';
        $css_files[] = MGM_ASSETS_URL . 'css/' . $css_group . '/mgm.site.css';
        $css_files[] = MGM_ASSETS_URL . 'css/' . $css_group . '/mgm.cc.fields.css';
        $css_files[] = MGM_ASSETS_URL . 'css/' . $css_group . '/mgm/jquery.ui.css';
        $css_files[] = MGM_ASSETS_URL . 'css/' . $css_group . '/mgm.pages.css';
    }
    // disable
    $disable_jquery = false;
    //this is for blocking loading jquery externally, to disable jquery add_filter and modify disable_jquery to return true
    $disable_jquery = apply_filters('disable_jqueryon_page', $disable_jquery);
    // init js array
    $js_files = array();
    $arr_default_pages = array('wp-login.php', 'user-edit.php', 'profile.php');
    $default_page = in_array(basename($_SERVER['SCRIPT_FILENAME']), $arr_default_pages) ? true : false;
    // jquery from wp distribution
    if ($default_page && !in_array('jquery.js', (array) $mgm_scripts) || !wp_script_is('jquery') && !$disable_jquery) {
        if ($default_page && !in_array('jquery.js', (array) $mgm_scripts) || !mgm_is_script_already_included('jquery.js')) {
            $js_files[] = includes_url('/js/jquery/jquery.js');
            $mgm_scripts[] = 'jquery.js';
        }
    }
    // custom
    //if(!wp_script_is('mgm-jquery-validate'))
    //	if(!mgm_is_script_already_included('jquery.validate.pack.js')) {
    if ($default_page && !in_array('jquery.validate.pack.js', (array) $mgm_scripts) || !wp_script_is('mgm-jquery-validate') && !mgm_is_script_already_included(MGM_ASSETS_URL . 'js/jquery/jquery.validate.pack.js', true)) {
        $js_files[] = MGM_ASSETS_URL . 'js/jquery/jquery.validate.pack.js';
        $mgm_scripts[] = 'jquery.validate.pack.js';
    }
    //if(!wp_script_is('mgm-jquery-metadata'))
    //	if(!mgm_is_script_already_included('jquery.metadata.js')) {
    if ($default_page && !in_array('jquery.metadata.js', (array) $mgm_scripts) || !wp_script_is('mgm-jquery-metadata') && !mgm_is_script_already_included(MGM_ASSETS_URL . 'js/jquery/jquery.metadata.js', true)) {
        $js_files[] = MGM_ASSETS_URL . 'js/jquery/jquery.metadata.js';
        $mgm_scripts[] = 'jquery.metadata.js';
    }
    //if(!wp_script_is('mgm-helpers'))
    //	if(!mgm_is_script_already_included('helpers.js', true)) {
    if ($default_page && !in_array('helpers.js', (array) $mgm_scripts) || !wp_script_is('mgm-helpers') && !mgm_is_script_already_included(MGM_ASSETS_URL . 'js/helpers.js', true)) {
        $js_files[] = MGM_ASSETS_URL . 'js/helpers.js';
        $mgm_scripts[] = 'helpers.js';
    }
    // ui on wp version
    $jqueryui_version = mgm_get_jqueryui_version();
    // add to array
    //if(!wp_script_is('mgm-jquery-ui')) {
    //if(!mgm_is_script_already_included('jquery-ui-'.$jqueryui_version.'.min.js')) {
    if ($default_page && !in_array('jquery-ui-' . $jqueryui_version . '.min.js', (array) $mgm_scripts) || !wp_script_is('mgm-jquery-ui') && !mgm_is_script_already_included('jquery-ui-' . $jqueryui_version . '.min.js')) {
        $js_files[] = MGM_ASSETS_URL . 'js/jquery/jquery.ui/jquery-ui-' . $jqueryui_version . '.min.js';
        $mgm_scripts[] = 'jquery-ui-' . $jqueryui_version . '.min.js';
    }
    //}
    //if(!wp_script_is('mgm-jquery-ajaxupload')) {
    //	if(!mgm_is_script_already_included('jquery.ajaxfileupload.js')) {
    if ($default_page && !in_array('jquery.ajaxfileupload.js', (array) $mgm_scripts) || !mgm_is_script_already_included(MGM_ASSETS_URL . 'js/jquery/jquery.ajaxfileupload.js', true) && !wp_script_is('mgm-jquery-ajaxupload')) {
        $js_files[] = MGM_ASSETS_URL . 'js/jquery/jquery.ajaxfileupload.js';
        $mgm_scripts[] = 'jquery.ajaxfileupload.js';
    }
    //}
    // if(!wp_script_is('mgm-jquery-watermarkinput'))
    // $js_files[] = MGM_ASSETS_URL . 'js/jquery/jquery.watermarkinput.js';
    // init
    $scripts = '';
    // css format
    $css_link_format = '<link rel="stylesheet" href="%s" type="text/css" media="all" />';
    // add
    foreach ($css_files as $css_file) {
        $scripts .= sprintf($css_link_format, $css_file);
    }
    // js format
    $js_script_format = '<script type="text/javascript" src="%s"></script>';
    // add
    if ($js_files) {
        foreach ($js_files as $js_file) {
            $scripts .= sprintf($js_script_format, $js_file);
        }
    }
    // return
    if ($return) {
        return $scripts;
    } else {
        echo $scripts;
    }
}