public function setURIString( $uri, $fullInitialize = true )
    {
        if ( strlen( $uri ) > 0 and
             $uri[0] == '/' )
            $uri = substr( $uri, 1 );

        $uri = eZURI::decodeIRI( $uri );

        $this->URI = $uri;
        $this->URIArray = explode( '/', $uri );
        $this->Index = 0;

        if ( !$fullInitialize )
            return;

        $this->OriginalURI = $uri;
        $this->UserArray = array();

        unset( $paramName, $paramValue );
        foreach ( array_keys( $this->URIArray ) as $key )
        {
            if ( !isset( $this->URIArray[$key] ) )
                continue;

            if ( preg_match( "/^[\(][a-zA-Z0-9_]+[\)]/", $this->URIArray[$key] ) )
            {
                if ( isset( $paramName, $paramValue ) )
                {
                    $this->UserArray[ $paramName ] = $paramValue;
                    unset( $paramName, $paramValue );
                }
                $paramName = substr( $this->URIArray[$key], 1, strlen( $this->URIArray[$key] ) - 2 );
                if ( isset( $this->URIArray[$key+1] ) )
                {
                    $this->UserArray[ $paramName ] = $this->URIArray[$key+1];
                    unset( $this->URIArray[$key+1] );
                }
                else
                    $this->UserArray[ $paramName ] = "";
                unset( $this->URIArray[$key] );
            }
            else if ( isset( $paramName ) )
            {
                $this->UserArray[ $paramName ] .= '/' . $this->URIArray[$key];
                unset( $this->URIArray[$key] );
            }
        }

        // Remake the URI without any user parameters
        $this->URI = implode( '/', $this->URIArray );

        if ( eZINI::instance( 'template.ini' )->variable( 'ControlSettings', 'AllowUserVariables' ) == 'false' )
        {
            $this->UserArray = array();
        }
        // Convert filter string to current locale
        $this->convertFilterString();
    }