diff --git a/files/api.php b/files/api.php
index d6e04d4550faff23bd40f7929a19aa43c7689c35..3cb796d432cbef2a80b275667d97d1954ace7fce 100644
--- a/files/api.php
+++ b/files/api.php
@@ -53,7 +53,10 @@ if($arguments['action']){
 			OC_FILES::get($arguments['dir'],$arguments['file']);
 			break;
 		case 'getfiles':
-			echo json_encode(OC_FILES::getdirectorycontent($arguments['dir']));
+			$max_upload=min(return_bytes(ini_get('post_max_size')),return_bytes(ini_get('upload_max_filesize')));
+			$files=OC_FILES::getdirectorycontent($arguments['dir']);
+			$files['__max_upload']=$max_upload;
+			echo json_encode($files);
 			break;
 		case 'gettree':
 			echo json_encode(OC_FILES::getTree($arguments['dir']));
@@ -80,4 +83,19 @@ if($arguments['action']){
 	}
 }
 
-?>
\ No newline at end of file
+function return_bytes($val) {
+    $val = trim($val);
+    $last = strtolower($val[strlen($val)-1]);
+    switch($last) {
+        // The 'G' modifier is available since PHP 5.1.0
+        case 'g':
+            $val *= 1024;
+        case 'm':
+            $val *= 1024;
+        case 'k':
+            $val *= 1024;
+    }
+
+    return $val;
+}
+?>
diff --git a/js/lib_files.js b/js/lib_files.js
index 94af0b896a4408f2d930c62166e716f86db31550..f28a46d3a0a41522b706fef094748f0d5e4d4fcf 100644
--- a/js/lib_files.js
+++ b/js/lib_files.js
@@ -41,18 +41,16 @@ OC_FILES.xmlloader=new OCXMLLoader();
 
 OC_FILES.getdirectorycontent_parse=function(req){
 	var files=new Array();
-	var response=req.responseXML;
+	var json=eval('('+req.responseText+')');
 	OC_FILES.cache.files=Array();
-	if(response){
-		var dir=response.getElementsByTagName('dir').item(0);
-		var fileElements=response.getElementsByTagName('file');
-		if(fileElements.length>0){
-			for(index=0;index<fileElements.length;index++){
+	if(json){
+		for(var name in json){
+			if(name!='__max_upload'){
 				var file=new Array();
 				var attributes=Array('size','name','type','directory','date','mime');
-				for(i in attributes){
-					var name=attributes[i];
-					file[name]=fileElements.item(index).getAttribute(name);
+				for(var i in attributes){
+					var attributeName=attributes[i];
+					file[attributeName]=json[name][attributeName];
 				}
 				files[file.name]=file;
 			}
@@ -61,7 +59,7 @@ OC_FILES.getdirectorycontent_parse=function(req){
 		if(OC_FILES.cache.incomplete[OC_FILES.dir]){
 			files=arrayMerge(files,OC_FILES.cache.incomplete[OC_FILES.dir]);
 		}
-		files['max_upload']=dir.getAttribute('max_upload');
+		files['max_upload']=json['__max_upload'];
 		if(OC_FILES.getdirectorycontent_callback){
 			OC_FILES.getdirectorycontent_callback(files);
 		}
@@ -75,7 +73,8 @@ OC_FILES.getdirectorycontent=function(dir,callback,refresh){
 			OC_FILES.getdirectorycontent_callback=callback;
 		}
 		OC_FILES.xmlloader.setCallBack(OC_FILES.getdirectorycontent_parse);
-		OC_FILES.xmlloader.load('files/get_files.php?dir='+encodeURIComponent(dir));
+// 		OC_FILES.xmlloader.load('files/get_files.php?dir='+encodeURIComponent(dir));
+		OC_FILES.xmlloader.load('files/api.php?action=getfiles&dir='+encodeURIComponent(dir));
 	}else{
 		var files=OC_FILES.cache.files
 		if(OC_FILES.cache.incomplete[OC_FILES.dir]){