public static function parseUri($uriToParse)
 {
     $result = array();
     $routes = Router::getRoutes();
     $hasArea = Router::uriHasArea($uriToParse);
     $normalizedUri = Router::normalizeUri($uriToParse);
     $normalizedSplitUri = explode("/", $normalizedUri);
     // try custom routes
     foreach ($routes as $route) {
         if ($hasArea) {
             if (strstr($normalizedUri, "/") !== false) {
                 $normalizedUri = strstr($normalizedUri, "/");
                 $normalizedUri = substr($normalizedUri, 1);
             }
         }
         if (Router::startsWith($normalizedUri, $route["url"])) {
             if ($hasArea) {
                 $result['area'] = $route['area'];
             }
             $result['controller'] = $route['controller'];
             $result['method'] = $route['method'];
             $paramsUri = str_ireplace($route['url'], "", $normalizedUri);
             $params = explode("/", $paramsUri);
             $result['parameters'] = array_filter($params);
             return $result;
         }
     }
     // default route
     if ($hasArea) {
         $result['area'] = $normalizedSplitUri[0];
         $result['controller'] = $normalizedSplitUri[1] . "Controller";
         if (isset($normalizedSplitUri[2])) {
             $result['method'] = $normalizedSplitUri[2];
             $result['parameters'] = array_slice($normalizedSplitUri, 3);
         } else {
             $result['method'] = 'index';
         }
     } else {
         $result['controller'] = $normalizedSplitUri[0] . "Controller";
         if (isset($normalizedSplitUri[1])) {
             $result['method'] = $normalizedSplitUri[1];
             $result['parameters'] = array_slice($normalizedSplitUri, 2);
         } else {
             $result['method'] = 'index';
         }
     }
     return $result;
 }