--- flashvideo.module	2009-05-02 04:28:01.000000000 +0200
+++ flashvideo.module	2009-05-31 18:42:56.000000000 +0200
@@ -1926,7 +1926,6 @@ function flashvideo_does_video_exist($no
  */
 function flashvideo_get_video($node, $params = array(), $file_only = FALSE) {
   $video = flashvideo_get_video_object($node, $params);
-
   // If a video file is defined, return the video object.
   if (isset($video['file'])) {
     return ($file_only ? $video['file'] : flashvideo_play($video));
@@ -2147,14 +2146,14 @@ function flashvideo_get_video_object($no
 function _flashvideo_parse_params($body, &$pos, $max_params = 10) {
 
   // If we are able to find the end tag delimiter denoted by "]"
-  if (($endpos = strpos($body, ']', $pos)) !== FALSE) {
+  if (($endpos = mb_strpos($body, ']', $pos)) !== FALSE) {
 
     // Set up an array of characters to take out from the parameter string.
     $bad_chars = array("<p>", "</p>", "<br>", "<br />", "\n", "\r", "\t", " ");
 
     // Get our parameter string.
     $param_string = drupal_substr($body, $pos, ($endpos - $pos));
-
+    
     // Replace all bad characters with null chars.
     $param_string = str_replace($bad_chars, '', $param_string);
 
@@ -2229,7 +2228,7 @@ function _flashvideo_replace_tags(&$node
   $body = (isset($node->teaser) && $node->body == '') ? $node->teaser : $node->body;
 
   // Search for tags
-  for ($pos = 0; (($pos = $startpos = strpos($body, $tag, $pos)) !== FALSE); $pos++) {
+  for ($pos = 0; (($pos = $startpos = mb_strpos($body, $tag, $pos)) !== FALSE); $pos++) {
 
     // We need to check to see if this tag has "!" in front of it, if it does, then we will ignore this tag.
     if (drupal_substr($body, $pos - 1, 1) == '!') {
@@ -2247,14 +2246,14 @@ function _flashvideo_replace_tags(&$node
       // Initialize our parameters array.
       $params = array();
 
-      // Parse all the parameters.
+	// Parse all the parameters.
       $params = _flashvideo_parse_params($body, $pos);
-
+	
       // Set the object based on the parameters given.
       $object = ($tag == '[thumbnail') ? flashvideo_get_thumbnail($node, $params) : flashvideo_get_video($node, $params);
 
       // Replace this tag with the real object code.
-      $body = substr_replace($body, $object, $startpos, ($pos - $startpos));  // Replace this tag.
+      $body = mb_substr_replace($body, $object, $startpos, ($pos - $startpos));  // Replace this tag.
     }
 
     // If the position exceeds the body length, then break out of the loop.
@@ -2269,6 +2268,48 @@ function _flashvideo_replace_tags(&$node
     $node->body = $body;
 }
 
+function mb_substr_replace($string, $replacement, $start, $length = null, $encoding = null)    {
+        if (extension_loaded('mbstring') === true)
+        {
+            $string_length = (is_null($encoding) === true) ? mb_strlen($string) : mb_strlen($string, $encoding);
+            
+            if ($start < 0)
+            {
+                $start = max(0, $string_length + $start);
+            }
+            
+            else if ($start > $string_length)
+            {
+                $start = $string_length;
+            }
+            
+            if ($length < 0)
+            {
+                $length = max(0, $string_length - $start + $length);
+            }
+            
+            else if ((is_null($length) === true) || ($length > $string_length))
+            {
+                $length = $string_length;
+            }
+            
+            if (($start + $length) > $string_length)
+            {
+                $length = $string_length - $start;
+            }
+            
+            if (is_null($encoding) === true)
+            {
+                return mb_substr($string, 0, $start) . $replacement . mb_substr($string, $start + $length, $string_length - $start - $length);
+            }
+            
+            return mb_substr($string, 0, $start, $encoding) . $replacement . mb_substr($string, $start + $length, $string_length - $start - $length, $encoding);
+        }
+        
+        return (is_null($length) === true) ? substr_replace($string, $replacement, $start) : substr_replace($string, $replacement, $start, $length);
+}
+
+
 /**
  * Implementation of hook_nodeapi().
  */
@@ -2519,4 +2560,4 @@ function _flashvideo_load($node) {
     $files[$file->fid] = $file;
   }
   return $files;
-}
\ No newline at end of file
+}
