/**
  * Styles output, if cache exsists will return cached file, else will cache then return cached file
  * 
  * @param array
  * 
  * return array
  */
 public static function styles($todo)
 {
     if (!empty($todo)) {
         $dir = self::get_page_cache_dir('styles');
         if (!$dir) {
             return $todo;
         }
         $enque_styles = array();
         $fname = self::$is_footer ? 'footer' : 'header';
         $cache_dir = self::create_scripts_dir('styles', $fname);
         $file_path = self::get_cache_dir(true);
         $file_path .= $dir . pathinfo($cache_dir, PATHINFO_BASENAME);
         if (!self::$is_footer || is_file($cache_dir)) {
             $enque_styles[] = 'themify_cache_' . $fname;
             wp_enqueue_style('themify_cache_' . $fname, $file_path, array(), THEMIFY_VERSION);
         }
         if (is_file($cache_dir)) {
             return $enque_styles;
         }
         global $wp_styles;
         foreach ($todo as $handler) {
             if (isset($wp_styles->registered[$handler]) && $wp_styles->registered[$handler]->src && !isset(self::$header_styles[$handler]) && !isset(self::$footer_styles[$handler])) {
                 if (!isset($wp_styles->registered[$handler]->extra['conditional']) || !$wp_styles->registered[$handler]->extra['conditional'] || !$wp_styles->registered[$handler]['args'] || $wp_styles->registered[$handler]['args'] == 'screen' || $wp_styles->registered[$handler]['args'] == 'all') {
                     if (self::$is_footer || $wp_styles->groups[$handler] == 1) {
                         self::$footer_styles[$handler]['src'] = $wp_styles->registered[$handler]->src;
                     } else {
                         self::$header_styles[$handler]['src'] = $wp_styles->registered[$handler]->src;
                     }
                 } else {
                     $enque_styles[] = $handler;
                 }
             }
         }
         $styles = self::$is_footer ? self::$footer_styles : self::$header_styles;
         $minifier = new CSS();
         foreach ($styles as $value) {
             if (self::is_remote($value['src'])) {
                 if (strpos($value['src'], '//') === 0) {
                     $value['src'] = 'http:' . $value['src'];
                 }
                 $response = wp_remote_get($value['src'], array('timeout' => 4, 'sslverify' => false));
                 if (is_array($response)) {
                     $minifier->add($response['body']);
                 }
             } else {
                 $path = self::get_full_path($value['src']);
                 if (!file_exists($path)) {
                     $response = wp_remote_get($value['src'], array('timeout' => 4, 'sslverify' => false));
                     if (is_array($response)) {
                         $minifier->add($response['body']);
                     }
                 } else {
                     $minifier->add($path);
                 }
             }
         }
         if (self::$is_footer) {
             $temp_dir = pathinfo($cache_dir);
             $cache_dir = $temp_dir['dirname'] . '/' . $temp_dir['filename'] . '-tmp.css';
             $content = $minifier->minify();
             self::$footer_file['css'] = array('dir' => $cache_dir, 'path' => $file_path);
             if (file_put_contents($cache_dir, $content, FILE_APPEND)) {
                 return $enque_styles;
             }
         } else {
             $minifier->minify($cache_dir);
             return $enque_styles;
         }
     }
     return $todo;
 }