Index: /FCKreleaser/trunk/fckreleaser.php
===================================================================
--- /FCKreleaser/trunk/fckreleaser.php	(revision 2268)
+++ /FCKreleaser/trunk/fckreleaser.php	(revision 2269)
@@ -1,3 +1,3 @@
-﻿#!/usr/bin/php -q
+#!/usr/bin/php -q
 <?php
 /*
@@ -338,5 +338,5 @@
 }
 ?>
-<?php
+﻿<?php
 
 
@@ -514,5 +514,6 @@
 			$processed = $this->_ProcessVars( $processed, $this->_Parameters ) ;
 
-		$numVarMatches = preg_match_all( '/\bvar\b\s+([\w_][\w\d_]+)/', $processed, $varsMatches ) ;
+		// Match "var" declarations.
+		$numVarMatches = preg_match_all( '/\bvar\b\s+((?:({(?:(?>[^{}]*)|(?2))*})|[^;])+?)(?=(?:\bin\b)|;)/', $processed, $varsMatches ) ;
 
 		if ( $numVarMatches > 0 )
@@ -522,5 +523,18 @@
 			for ( $i = 0 ; $i < $numVarMatches ; $i++ )
 			{
-				$vars[] = $varsMatches[1][$i] ;
+				$varsMatch = $varsMatches[1][$i];
+				
+				// Removed all (...), [...] and {...} blocks from the var
+				// statement to avoid problems with commas inside them.
+				$varsMatch = preg_replace( '/(\((?:(?>[^\(\)]*)|(?1))*\))+/', '', $varsMatch ) ;
+				$varsMatch = preg_replace( '/(\[(?:(?>[^\[\]]*)|(?1))*\])+/', '', $varsMatch ) ;
+				$varsMatch = preg_replace( '/({(?:(?>[^{}]*)|(?1))*})+/', '', $varsMatch ) ;
+				
+				$numVarNameMatches = preg_match_all( '/(?:^|,)\s*([^\s=,]+)/', $varsMatch, $varNameMatches ) ;
+				
+				for ( $j = 0 ; $j < $numVarNameMatches ; $j++ )
+				{
+					$vars[] = $varNameMatches[1][$j] ;
+				}
 			}
 
@@ -536,5 +550,5 @@
 		{
 			if ( strlen( $var) > 1 )
-				$source = preg_replace( '/(?<!\w|\d|\.)' . $var . '(?!\w|\d)/', $this->_GetVarName(), $source ) ;
+				$source = preg_replace( '/(?<!\w|\d|\.)' . preg_quote( $var ) . '(?!\w|\d)/', $this->_GetVarName(), $source ) ;
 		}
 
@@ -552,5 +566,5 @@
 		$var = $this->_VarPrefix . $this->_VarChars[ $this->_LastCharIndex++ ] ;
 
-		if ( preg_match( '/(?<!\w|\d|\.)' . $var . '(?!\w|\d)/', $this->_Function ) )
+		if ( preg_match( '/(?<!\w|\d|\.)' . preg_quote( $var ) . '(?!\w|\d)/', $this->_Function ) )
 			return $this->_GetVarName() ;
 		else
@@ -575,4 +589,5 @@
 
 ?>
+
 <?php
 
@@ -695,11 +710,29 @@
 			$parameters = preg_split( '/\s*,\s*/', trim( $match[1] ) ) ;
 
-		$funcProcessor = new FCKFunctionProcessor( $match[0], $parameters, false ) ;
-
-		return $funcProcessor->Process() ;
-	}
-}
-
-?>
+		$hasfuncProcessor = isset( $GLOBALS['funcProcessor'] ) ;
+
+		if ( $hasfuncProcessor != TRUE )
+			$GLOBALS['funcProcessor'] = new FCKFunctionProcessor( $match[0], $parameters, false ) ;
+		else
+		{
+			$GLOBALS['funcProcessor']->_Function = $match[0];
+			$GLOBALS['funcProcessor']->_Parameters = $parameters;
+		}
+
+		$processed = $GLOBALS['funcProcessor']->Process() ;
+		
+		$processed = substr_replace( $processed, '', 0, 8 ) ;
+
+		$processed = FCKJavaScriptCompressor::_ProcessFunctions( $processed ) ;
+
+		if ( $hasfuncProcessor != TRUE )
+			unset( $GLOBALS['funcProcessor'] ) ;
+		
+		return 'function'. $processed ;
+	}
+}
+
+?>
+
 <?php
 
@@ -1061,4 +1094,5 @@
 
 ?>
+
 <?php
 
