public function locate_template($template_names, $load = FALSE, $require_once = TRUE)
 {
     $located = FALSE;
     $dir = '/' . $this->constants['theme_templates_dir'] . '/';
     foreach ((array) $template_names as $template_name) {
         if (empty($template_name)) {
             continue;
         }
         $name = gPluginUtils::untrail($template_name);
         if (file_exists(get_stylesheet_directory() . $dir . $name)) {
             $located = get_stylesheet_directory() . $dir . $name;
         } else {
             if (file_exists(get_template_directory() . $dir . $name)) {
                 $located = get_template_directory() . $dir . $name;
             } else {
                 if (file_exists($this->constants['plugin_dir'] . '/templates/' . $name)) {
                     $located = $this->constants['plugin_dir'] . '/templates/' . $name;
                 }
             }
         }
         if ($located) {
             break;
         }
     }
     if ($load && !empty($located)) {
         load_template($located, $require_once);
     }
     return $located;
 }