Index: !install.txt
===================================================================
--- !install.txt	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ !install.txt	(revision 80375943887b81466b712c3282096edfb72c3124)
@@ -1,5 +1,4 @@
 requirements:
--rtorrent 0.7.8, compiled with "--with-xmlrpc-c"
- -xmlrpc >= 1.07
+-rtorrent 0.7.7
 -some webserver
 -php5, with the following extensions:
@@ -9,54 +8,21 @@
 installation:
 
-to install xmlrpc, get the source from here: http://sourceforge.net/project/showfiles.php?group_id=16847
-in my case, i could only compile the 1.11.00 version (due to a known bug, you may try to configure with --disable-cplusplus)
-of course, you can try any version, over 1.07
-follow the next steps, as root (this step is not needed, if you're upgrading from a pervious version):
-	cd /usr/src
-	wget http://dfn.dl.sourceforge.net/sourceforge/xmlrpc-c/xmlrpc-c-1.11.00.tgz
-	tar xvf xmlrpc-c-1.11.00.tgz
-	cd xmlrpc-c-1.11.00
-	./configure --disable-cplusplus
-	make
-	make install
-
-to install libtorrent, follow the next steps, as a root:
-	mkdir /usr/src/libtorrent
-	wget http://libtorrent.rakshasa.no/downloads/libtorrent-0.11.8.tar.gz
-	tar xvf libtorrent-0.11.8.tar.gz
-	cd /usr/src/libtorrent-0.11.8
-	./configure
-	make
-	make install
-
-to install rtorrent, follow the next steps, as a root:
-	mkdir /usr/src/rtorrent
-	wget http://libtorrent.rakshasa.no/downloads/rtorrent-0.7.8.tar.gz
-	tar xvf rtorrent-0.7.8.tar.gz
-	cd /usr/src/rtorrent-0.7.8
-	./configure --with-xmlrpc-c
-	make
-	make install
-	
-now, after everything's done
--extract the rtwi-xxxxxx.tar.gz to some place where your webserver can see it
--open the includes/config.php.inc, and edit the next lines (this step is not needed, if you're upgrading from a pervious version):
- -$abs_path (the absolute path of your webroot, i.e.: "/var/www")
- -$domain (your domain, i.e.: "example.com")
- -$site_path (the relative path of the rtwi-xxxx directory, or whatever you renamed it, within your webroot, i.e.: "/rtwi/", if it's absolute path is /var/www/rtwi/)
- -$include_path (if you move the includes directory, or eave it untouched, i.e.: "/includes")
+-open the includes/config.php.inc, and edit the next lines:
+ -$abs_path
+ -$domain
+ -$subdomain
+ -$site_path
+ -$include_path (if you move the includes directory)
  -if your php interpreter does not handle .html files (only .php) set the $default_ext variable to "php", and rename the index.html to index.php
 
--you can find an example .rtorrent.rc file here: http://libtorrent.rakshasa.no/browser/trunk/rtorrent/doc/rtorrent.rc?rev=latest
 -open .rtorrent.rc, and edit them (for each user)
  -add this line to your .rtorrent.rc "scgi_port = 127.0.0.1:12345" where 12345 can be replaced by your choice, and restart rtorrent
- -if you have more than one user, set a different port for each user's .rtorrent.rc file (be aware, to set different session directories for the users)
+ -if you have more than one user, set a different port for each user's .rtorrent.rc file
 
--adding users (this step is not needed, if you're upgrading from a pervious version):
+-adding users:
  -find row 44, and change it:
- -replace "userX" with the actual linux username (keep the quotes)
- -replace "1234567890abcdef1234567890abcdef12345678" with the hash of the choosen password for the webui (you can generate the sha1 hash here => http://www.johnmaguire.us/tools/hashcalc/index.php)
- -replace "12345", with the port, you've set in the user's .rtorrent.rc file
- -keep the quotes in the last three steps
+ -replace "username" with the actual linux username
+ -replace "sha1has of the password" with thre hash of the choosen password for the webui (you can generate the sha1 hash here => http://www.johnmaguire.us/tools/hashcalc/index.php)
+ -replace "36100", with the port, you've set in the .rtorrent.rc file
  -if you have more than one user, you have to do these steps, for each one of them, sop you'll get something like this:
 	$users = array(
Index: cludes/classes/db_mysql_handler.inc.php
===================================================================
--- includes/classes/db_mysql_handler.inc.php	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ 	(revision )
@@ -1,117 +1,0 @@
-<?php
-
-class db_handler {
-
-	var $db_host;
-	var $db_database;
-	var $db_user;
-	var $db_pass;
-	var $db_charset;
-	var $db_debugmode;
-
-	var $db_connection;
-	var $db_lasterrorcode = 0;
-	var $db_lastquery = "";
-	
-	var $db_result;
-	var $db_numrows;
-
-	function __construct( &$db ) {
-		$this->db_host			= $db["host"];
-		$this->db_database		= $db["database"];
-		$this->db_user			= $db["user"];
-		$this->db_pass			= $db["pass"];
-		$this->db_charset		= $db["charset"];
-		$this->db_debugmode		= $db["debugmode"];
-	}
-
-	function db_connect() {
-		$this->db_connection = mysql_connect( $this->db_host, $this->db_user, $this->db_pass );
-		if ( $this->db_connection !== false ) {
-			if ( mysql_select_db( $this->db_database, $this->db_connection ) !== false ) {
-				mysql_query( "SET CHARACTER SET '{$this->db_charset}';", $this->db_connection );
-				mysql_query( "SET NAMES '{$this->db_charset}';", $this->db_connection );
-				return $this->db_connection;
-			} else {
-				$this->db_lasterrorcode = 3;
-			}
-			$this->db_lasterrorcode = 2;
-		} else {
-			$this->db_lasterrorcode = 1;
-			return false;
-		}
-	}
-
-	function db_info() {
-		$ret = mysql_info( $this->db_connection );
-		if ( $ret !== false ) {
-			return $ret;
-		} else {
-			$this->db_lasterrorcode = 4;
-			return false;
-		}
-	}
-
-	function db_query( &$db_query ) {
-//print "{$db_query}<br />\r\n";
-		if ( $this->db_debugmode ) {
-			print "{$db_query}<br />\r\n";
-		}
-//$st = getmicrotime();
-		$this->db_result = mysql_query( $db_query, $this->db_connection );
-//$tt = getmicrotime();
-//printf( "<br />\r\nQuery time: %0.6f sec", $tt - $st );
-		if ( $this->db_result !== false ) {
-			if ( strtolower( substr( $db_query, 0, 6 ) ) == "select" ) {
-				$this->numrows = mysql_num_rows( $this->db_result );
-				return $this->numrows;
-			} else {
-				$this->numrows = mysql_affected_rows( $this->db_connection );
-				if ( strtolower( substr( $db_query, 0, 6 ) ) == "insert" ) {
-					return mysql_insert_id( $this->db_connection );
-				} else {
-					return $this->numrows;
-				}
-			}
-		} else {
-//print mysql_error();
-			$this->db_lasterrorcode = 5;
-			$this->db_lastquery = $db_query;
-			return false;
-		}
-	}
-
-	function db_fetch( &$xml, &$node, &$nodename ) {
-		if ( is_resource( $this->db_result ) ) {
-			$i = 0;
-			while ( $value = mysql_fetch_assoc( $this->db_result ) ) {
-				$nnode = $node->appendChild( $xml->createElement( $nodename ) );
-				$item = $nnode->appendChild( $xml->createElement( "db_counter" ) );
-				$text = $item->appendChild( $xml->createTextNode( ++$i ) );
-				foreach ( $value as $key => $val ) {
-					$item = $nnode->appendChild( $xml->createElement( $key ) );
-					$text = $item->appendChild( $xml->createTextNode( $val ) );
-				}
-			}
-			if ( mysql_free_result( $this->db_result ) === false ) {
-				$this->db_lasterrorcode = 6;
-			}
-			return true;
-		} else {
-			$this->db_lasterrorcode = 7;
-			return false;
-		}
-	}
-
-	function __destruct() {
-		if ( mysql_close( $this->db_connection ) !== false ) {
-			return true;
-		} else {
-			$this->db_lasterrorcode = 8;
-			return false;
-		}
-	}
-
-}
-
-?>
Index: cludes/classes/net_handler.inc.php
===================================================================
--- includes/classes/net_handler.inc.php	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ 	(revision )
@@ -1,303 +1,0 @@
-<?php
-
-/*
-2 info
-1 error
-0 none
-*/
-
-class net_handler {
-
-	private $net_host;
-	private $net_url;
-	private $net_port;
-	private $net_tmpfile;
-	private $net_cookie;
-	private $net_charset;
-	private $net_errno;
-	private $net_errmsg;
-	private $net_debugmode;
-
-	private $net_reply;
-
-	private $net_connection;
-	private $net_lasterrorcode = 0;
-
-	function net_handler( &$net ) {
-		if ( $net["allownameres"] === true ) {
-			$this->net_host		= gethostbyname( $net["host"] );
-		} else {
-			$this->net_host		= $net["host"];
-		}
-		$this->net_port			= $net["port"];
-		$this->net_tmpfile		= $net["tmpfile"];
-		$this->net_timeout		= $net["timeout"];
-		$this->net_url			= $net["url"];
-		$this->net_cookie		= $net["cookie"];
-		$this->net_debugmode		= $net["debugmode"];
-	}
-
-	function net_connect() {
-		if ( $this->net_debugmode === 2 ) {
-			print "Connecting to {$this->net_host} on port {$this->net_port} (timeout: {$this->net_timeout}).";
-		}
-		do {
-			if ( $this->net_debugmode === 2 ) {
-				print "\r\nTrying...";
-			}
-			$this->net_connection = @pfsockopen( $this->net_host, $this->net_port, $this->net_errno, $this->net_errstr, $this->net_timeout );
-			if ( $this->net_connection === false && $this->net_debugmode > 0 ) {
-				print trim( $this->net_errstr );
-			}
-		} while ( $this->net_connection === false );
-
-		if ( $this->net_debugmode === 2 ) {
-			print "done.\r\n";
-		}
-
-		return true;
-	}
-
-	function net_seturl( $url ) {
-		$this->net_url = $url;
-		return true;
-	}
-
-	function net_request() {
-		if ( $this->net_debugmode === 2 ) {
-			print "Sending data...";
-		}
-
-		$out  = "GET {$this->net_url} HTTP/1.1\r\n";
-		$out .= "Host: {$this->net_host}\r\n";
-		$out .= "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1) Gecko/20060918 Firefox/2.0\r\n";
-		$out .= "Accept: text/xml,application/xml,application/xhtml+xml,text/html,text/plain,image/png,*/*;\r\n";
-		$out .= "Accept-Language: hu,en-us,en;q=0.5\r\n";
-		$out .= "Accept-Encoding: gzip,deflate\r\n";
-		$out .= "Accept-Charset: ISO-8859-2,utf-8;*\r\n";
-		$out .= "Keep-Alive: 300\r\n";
-		$out .= "Connection: keep-alive\r\n";
-		if ( $this->net_cookie !== "" ) {
-			$out .= "Cookie: {$this->net_cookie}\r\n";
-		}
-		$out .= "\r\n";
-
-		$ret = fwrite( $this->net_connection, $out );
-		if ( $this->net_debugmode === 2 ) {
-			print "done, {$ret} byte(s) sent.\r\n";
-		}
-
-		fflush( $this->net_connection );
-		if ( $this->net_debugmode === 2 ) {
-			print "Data flushed.\r\n";
-		}
-	}
-
-	function net_readreply() {
-		if ( $this->net_debugmode === 2 ) {
-			print "Recieving reply...";
-		}
-
-		if ( isset( $this->net_reply ) ) {
-			unset( $this->net_reply );
-		}
-
-		$ret = 0;
-		$this->net_reply["status"] = fgets( $this->net_connection );
-		$ret += strlen( $this->net_reply["status"] );
-		$this->net_reply["status"] = trim( $this->net_reply["status"] );
-
-		do {
-			$content = fgets( $this->net_connection );
-			$ret += strlen( $content );
-			$content = trim( $content );
-			$contents = split( ": ", $content );
-
-			if( $content !== "" ) {
-				$this->net_reply["header"][strtolower( $contents[0] )] = $contents[1];
-			}
-
-		} while ( $content !== "" );
-
-		if ( $this->net_debugmode === 2 ) {
-			print "done, {$ret} byte(s) recieved for headers.\r\n";
-			print_r( $this->net_reply );
-		}
-
-		return $ret;
-	}
-
-	function net_readcontent( $file = "" ) {
-		if ( $file == "" ) {
-			$file = $this->net_tmpfile;
-		}
-		if ( $this->net_reply["status"] === "HTTP/1.1 200 OK" ) {
-
-			if ( $this->net_debugmode === 2 ) {
-				print "Reading message body.\r\n";
-			}
-
-			if ( isset ( $this->net_reply["header"]["transfer-encoding"] ) && $this->net_reply["header"]["transfer-encoding"] === "chunked" ) {
-				$ret = $this->net_readchunkedcontent( $file );
-			} else {
-				$ret = $this->net_readsimplecontent( $file );
-			}
-
-			if ( $this->net_debugmode === 2 ) {
-				print "\r\nDone, {$ret} byte(s) was recieved for message body, and has been written to file.\r\n\r\n";
-			}
-		}
-	}
-
-	function net_disconnect() {
-		if ( $this->net_debugmode === 2 ) {
-			print "Closing connection...";
-		}
-		fclose( $this->net_connection );
-		if ( $this->net_debugmode === 2 ) {
-			print "done.\r\n";
-		}
-	}
-
-	private function net_readsimplecontent( &$file ) {
-		if ( $this->net_debugmode === 2 ) {
-			print "\r\nOpening file...";
-		}
-		$filehandle = fopen( $file, "wb+" );
-		if ( $this->net_debugmode === 2 ) {
-			print "done.\r\n";
-			print "Trying to read data as 8192 byte blocks in \"simple\" mode...\r\n";
-		}
-
-		if ( isset ( $this->net_reply["header"]["content-length"] ) ) {
-			settype( $this->net_reply["header"]["content-length"], "int" );
-			$block = $this->net_reply["header"]["content-length"];
-
-			$ret = 0;
-			$done = false;
-			while ( $done === false ) {
-				if ( $block < 8192 ) {
-					$content = fread( $this->net_connection, $block );
-				} else {
-					$content = fread( $this->net_connection, 8192 );
-				}
-
-				$len = fwrite( $filehandle, $content );
-				$ret += $len;
-
-				if ( $block < 8192 ) {
-					$block -= $len;
-				}
-
-				if ( $this->net_debugmode === 2 ) {
-					print "{$len} byte(s) was recieved, and has been written to file.\r\n";
-				}
-
-				fflush( $filehandle );
-				if ( $this->net_debugmode === 2 ) {
-					print "File flushed.\r\n";
-				}
-
-				if ( $block === 0 || feof( $this->net_connection ) ) {
-					$done = true;
-				}
-			}
-		} else {
-			$ret = 0;
-			while ( !feof( $this->net_connection ) ) {
-				$content = fread( $this->net_connection, 8192 );
-
-				$len = fwrite( $filehandle, $content );
-				$ret += $len;
-
-				if ( $this->net_debugmode === 2 ) {
-					print "{$len} byte(s) was recieved, and has been written to file.\r\n";
-				}
-
-				fflush( $filehandle );
-				if ( $this->net_debugmode === 2 ) {
-					print "File flushed.\r\n";
-				}
-			}
-		}
-
-		if ( $this->net_debugmode === 2 ) {
-			print "Closing file...";
-		}
-		fclose( $filehandle );
-		if ( $this->net_debugmode === 2 ) {
-			print "done.\r\n";
-		}
-
-		return $ret;
-	}
-
-	private function net_readchunkedcontent( &$file ) {
-		if ( $this->net_debugmode === 2 ) {
-			print "\r\nOpening file...";
-		}
-		$filehandle = fopen( $file, "wb+" );
-		if ( $this->net_debugmode === 2 ) {
-			print "done.\r\n";
-		}
-
-		$ret = 0;
-		$done = false;
-		while ( $done === false ) {
-			$chunklength = hexdec( trim( fgets( $this->net_connection ) ) );
-			if ( $chunklength === 0 ) {
-				fgets( $this->net_connection );
-				$done = true;
-			} else {
-				if ( $this->net_debugmode === 2 ) {
-					print "Trying to read {$chunklength} byte(s) in \"chunked\" mode...";
-				}
-
-				$contents = "";
-				$len = 0;
-				$flen = 0;
-				while ( $chunklength > 0 ) {
-					$content = fread( $this->net_connection, $chunklength  );
-					//if ( $content === false ) { exit; };
-					$contents .= $content;
-
-					$len = strlen( $content );
-					$chunklength -= $len;
-					$flen += $len;
-					$ret += $len;
-
-					if ( $this->net_debugmode === 2 ) {
-						if ( $chunklength === 0 ) {
-							print "done.\r\n";
-						} else {
-							print "recieved {$len} byte(s).\r\nNeed to get another {$chunklength} byte(s)....";
-						}
-					}
-				}
-				fgets( $this->net_connection );
-
-				fwrite( $filehandle, $contents );
-				if ( $this->net_debugmode === 2 ) {
-					print "{$flen} byte(s) has been written to file.\r\n";
-				}
-
-				fflush( $filehandle );
-				if ( $this->net_debugmode === 2 ) {
-					print "File flushed.\r\n";
-				}
-			}
-		}
-
-		if ( $this->net_debugmode === 2 ) {
-			print "Closing file...";
-		}
-		fclose( $filehandle );
-		if ( $this->net_debugmode === 2 ) {
-			print "done.\r\n";
-		}
-
-		return $ret;
-	}
-}
-
-?>
Index: cludes/classes/sql_handler.inc.php
===================================================================
--- includes/classes/sql_handler.inc.php	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ 	(revision )
@@ -1,89 +1,0 @@
-<?php
-
-class sql_handler {
-	var $sql_host;
-	var $sql_db;
-	var $sql_user;
-	var $sql_pass;
-
-	var $data;
-	var $result;
-
-	function __construct( &$sql ) {
-		$this->data = new db_handler( $sql );
-		$this->data->db_connect();
-	}
-
-	function get_info() {
-		return $this->data->db_info();
-	}
-
-	function load_content( &$sel_array ) {
-		$query = "SELECT {$sel_array["sel_what"]} FROM {$sel_array["sel_table"]}";
-
-		if ( isset( $sel_array["sel_where"] ) ) {
-			$query .= " WHERE {$sel_array["sel_where"]}";
-		}
-
-		if ( isset( $sel_array["sel_orderby"] ) ) {
-			$query .= " ORDER BY {$sel_array["sel_orderby"]}";
-
-			if ( isset( $sel_array["sel_how"] ) ) {
-				$query .= " {$sel_array["sel_how"]}";
-			} else {
-				$query .= " ASC";
-			}
-		}
-
-		if ( isset( $sel_array["sel_limit"] ) ) {
-			$query .= " LIMIT {$sel_array["sel_limit"]}";
-		}
-
-		$query .= ";";
-
-		$this->result = $this->data->db_query( $query );
-
-		return $this->result;
-	}
-
-	function add_content( &$add_array ) {
-		$query = "INSERT INTO {$add_array["add_table"]} ({$add_array["add_fields"]}) VALUES ({$add_array["add_what"]});";
-		$this->result = $this->data->db_query( $query );
-		return $this->result;
-	}
-
-	function set_content( &$set_array ) {
-		$query = "UPDATE {$set_array["set_table"]} SET {$set_array["set_changes"]} WHERE {$set_array["set_where"]};";
-		$this->result = $this->data->db_query( $query );
-		return $this->result;
-	}
-
-	function del_content( &$del_array ) {
-		$query = "DELETE FROM {$del_array["del_table"]} WHERE {$del_array["del_where"]};";
-		$this->result = $this->data->db_query( $query );
-		return $this->result;
-	}
-
-	function describe_table( &$desc_array ) {
-		$query = "DESCRIBE {$desc_array["desc_table"]} {$desc_array["desc_field"]};";
-		$this->result = $this->data->db_query( $query );
-		return $this->result;
-	}
-
-	function alter_table( &$alt_array ) {
-		$query = "ALTER TABLE {$alt_array["alt_table"]} CHANGE {$alt_array["alt_field"]} {$alt_array["alt_field"]} {$alt_array["alt_value"]} CHARACTER SET {$alt_array["alt_charset"]} COLLATE {$alt_array["alt_collate"]} {$alt_array["alt_null"]};";
-		$this->result = $this->data->db_query( $query );
-		return $this->result;
-	}
-
-	function get_content( &$xml, &$node, $nodename ) {
-		$this->content = $this->data->db_fetch( $xml, $node, $nodename );
-		return $this->content;
-	}
-
-	function __destruct() {
-	}
-
-}
-
-?>
Index: includes/config.inc.php
===================================================================
--- includes/config.inc.php	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ includes/config.inc.php	(revision 80375943887b81466b712c3282096edfb72c3124)
@@ -9,12 +9,13 @@
 
 // paths
-$abs_path	= "/var/www";			// webroot (with heading slash) -- change this, if neccessary
-$domain		= "rtwi.cyla.homelinux.net";	// site domain (or ip) -- change this, if neccessary
-$site_path	= "/";				// site path (with heading and trailing slash) -- change this, if neccessary
-$include_path	= "includes";			// include path (include files can be found here)
+$abs_path	= "/var/www";		// webroot (with heading slash)
+$domain		= "cyla.homelinux.net";	// site domain (or ip)
+$subdomain	= "rtwi";		// subdomain (if exists)
+$site_path	= "/";			// site path (with heading and trailing slash)
+$include_path	= "includes";		// include path (include files can be found here)
 
 // URLs
 $url = array(
-	"base"	=> "http://{$domain}{$site_path}",		// base url
+	"base"	=> "http://{$subdomain}.{$domain}{$site_path}",	// base url (if you do not have a subdomain, you might want to edit this line)
 	"index"	=> "index.{$default_ext}",			// index page
 	"input"	=> "input.php",					// input file (for forms)
@@ -39,10 +40,7 @@
 $home_path = "/home/";
 
-// array of users, each, with the sha1 hash of the password, and the scgi port of the rtorrent -- you can add users here
+// array of users, each, with the sha1 hash of the password, and the scgi port of the rtorrent
 $users = array(
-//	"username"		=> array( "pass" => "7e240de74fb1ed08fa08d38063f6a6a91462a815", "port"	=> "36100" ),
-	"cyla"		=> array( "pass" => "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8", "port"	=> "36100" ),
-	"freez"		=> array( "pass" => "3c6ac60db4ea17076ddd3e044799e70832916837", "port"	=> "36099" ),
-	"pilok"		=> array( "pass" => "bbe31b37f154f7eadbc657d4187e79122592cd13", "port"	=> "36098" ),
+	"username"		=> array( "pass" => "sha1has of the password", "port"	=> "36100" ),
 );
 
Index: includes/messages.en.inc.php
===================================================================
--- includes/messages.en.inc.php	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ includes/messages.en.inc.php	(revision 80375943887b81466b712c3282096edfb72c3124)
@@ -5,6 +5,4 @@
 	"succlogin"				=> "You have been logged in successfully",
 	"succlogout"				=> "You have been logged out successfully",
-
-	"noconn"				=> "No connection",
 
 	"nohashfound"				=> "No torrents found for this hash",
@@ -64,24 +62,18 @@
 	"no"					=> "No",
 	"yes"					=> "Yes",
-	"disabled"				=> "Disabled",
-	"enabled"				=> "Enabled",
-	"notset"				=> "Not set",
-
 	"d_connection_current_leech"		=> "Leeching",
 	"d_connection_current_seed"		=> "Seeding",
 	"d_ignore_commands_0"			=> "Not ignoring commands",
 	"d_ignore_commands_1"			=> "Ignoring commands",
-	"d_active_0"				=> "Stopped",
-	"d_active_1"				=> "Started",
-	"d_hash_checked_0"			=> "Hash not checked",
-	"d_hash_checked_1"			=> "Hash checked",
-	"d_multi_file_multi"			=> "Multi",
-	"d_multi_file_single"		=> "Single",
-	"d_open_0"				=> "Closed",
-	"d_open_1"				=> "Open",
+	"d_is_active_0"				=> "Stopped",
+	"d_is_active_1"				=> "Started",
+	"d_is_hash_checked_0"			=> "Hash not checked",
+	"d_is_hash_checked_1"			=> "Hash checked",
+	"d_is_multi_file_multi"			=> "Multi",
+	"d_is_multi_file_single"		=> "Single",
+	"d_is_open_0"				=> "Closed",
+	"d_is_open_1"				=> "Open",
 	"d_complete_0"				=> "Incomplete",
 	"d_complete_1"				=> "Completed",
-	"d_hash_checking_0"			=> "Not hashing",
-	"d_hash_checking_1"			=> "Hashing",
 	"d_hashing_0"				=> "Not hashing",
 	"d_hashing_1"				=> "Normal hashing",
@@ -99,14 +91,12 @@
 	"f_priority_1"				=> "Normal",
 	"f_priority_2"				=> "High",
+	"safe_sync_0"				=> "No",
+	"safe_sync_1"				=> "Yes",
 	"t_enabled_0"				=> "Disabled",
 	"t_enabled_1"				=> "Enabled",
-	"t_open_0"				=> "Closed",
-	"t_open_1"				=> "Open",
+	"t_is_open_0"				=> "Closed",
+	"t_is_open_1"				=> "Open",
 	"t_type_1"				=> "TCP",
 	"t_type_2"				=> "UDP",
-
-	"bind_0000"				=> "Not set",
-	"ip_0000"				=> "All IP addresses",
-	"proxy_address_0000"			=> "Not set",
 
 	"pics"					=> "rTWi - The rTorrent Web interface",
@@ -156,4 +146,10 @@
 	"selectrefreshrate"			=> "Select refresh rate",
 
+
+
+
+
+
+
 );
 
Index: cludes/tools/data.v_tlds.inc.php
===================================================================
--- includes/tools/data.v_tlds.inc.php	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ 	(revision )
@@ -1,26 +1,0 @@
-<?php
-
-// valos top level domain-ek (email cim ellenorzeshez)
-$v_tld = array(
-	"arpa", "biz", "com", "edu", "gov", "info", "int", "mil", "net", "org", 
-	"ad", "ae", "af", "ag", "ai", "al", "am", "an", "ao", "aq", "ar", "as", "at", "au", 
-	"aw", "az", "ba", "bb", "bd", "be", "bf", "bg", "bh", "bi", "bj", "bm", "bn", "bo", 
-	"br", "bs", "bt", "bv", "bw", "by", "bz", "ca", "cc", "cf", "cd", "cg", "ch", "ci", 
-	"ck", "cl", "cm", "cn", "co", "cr", "cs", "cu", "cv", "cx", "cy", "cz", "de", "dj", 
-	"dk", "dm", "do", "dz", "ec", "ee", "eg", "eh", "er", "es", "et", "fi", "fj", "fk", 
-	"fm", "fo", "fr", "fx", "ga", "gb", "gd", "ge", "gf", "gh", "gi", "gl", "gm", "gn", 
-	"gp", "gq", "gr", "gs", "gt", "gu", "gw", "gy", "hk", "hm", "hn", "hr", "ht", "hu", 
-	"id", "ie", "il", "in", "io", "iq", "ir", "is", "it", "jm", "jo", "jp", "ke", "kg", 
-	"kh", "ki", "km", "kn", "kp", "kr", "kw", "ky", "kz", "la", "lb", "lc", "li", "lk", 
-	"lr", "ls", "lt", "lu", "lv", "ly", "ma", "mc", "md", "mg", "mh", "mk", "ml", "mm", 
-	"mn", "mo", "mp", "mq", "mr", "ms", "mt", "mu", "mv", "mw", "mx", "my", "mz", "na", 
-	"nc", "ne", "nf", "ng", "ni", "nl", "no", "np", "nr", "nt", "nu", "nz", "om", "pa", 
-	"pe", "pf", "pg", "ph", "pk", "pl", "pm", "pn", "pr", "pt", "pw", "py", "qa", "re", 
-	"ro", "ru", "rw", "sa", "sb", "sc", "sd", "se", "sg", "sh", "si", "sj", "sk", "sl", 
-	"sm", "sn", "so", "sr", "st", "su", "sv", "sy", "sz", "tc", "td", "tf", "tg", "th", 
-	"tj", "tk", "tm", "tn", "to", "tp", "tr", "tt", "tv", "tw", "tz", "ua", "ug", "uk", 
-	"um", "us", "uy", "uz", "va", "vc", "ve", "vg", "vi", "vn", "vu", "wf", "ws", "ye", 
-	"yt", "yu", "za", "zm", "zr", "zw"
-); 
-
-?>
Index: cludes/tools/functions.convert.inc.php
===================================================================
--- includes/tools/functions.convert.inc.php	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ 	(revision )
@@ -1,95 +1,0 @@
-<?php
-
-function ip_to_long( $from ) {
-	list( $_1, $_2, $_3, $_4 ) = explode( ".", $from );
-
-	$to = 0.0 + ( ( ( ( ( $_1 * 256 ) + $_2 ) * 256) + $_3 ) * 256 ) + $_4;
-	return $to;
-}
-
-function long_to_ip( $from ) {
-	if ( $from >= 2147483648 ) {
-		$from -= 2147483648;
-		$_1 = $from % 256;
-		$from = ( $from - $_1 ) / 256;
-		$_2 = $from % 256;
-		$from = ( $from - $_2 ) / 256;
-		$_3 = $from % 256;
-		$from = ( $from - $_3 ) / 256;
-		$_4 = $from % 256 + 128;
-	} else {
-		$_1 = $from % 256;
-		$from = ( $from - $_1 ) / 256;
-		$_2 = $from % 256;
-		$from = ( $from - $_2 ) / 256;
-		$_3 = $from % 256;
-		$from = ( $from - $_3 ) / 256;
-		$_4 = $from % 256;
-	}
-
-	$to = "{$_4}.{$_3}.{$_2}.{$_1}";
-	return $to;
-}
-
-function ip_to_hex( $from, $spacer ) {
-	$_ip = $from;
-	$tok = strtok( $_ip, "." );
-	$_1 = $tok;
-	$tok = strtok( "." );
-	$_2 = $tok;
-	$tok = strtok( "." );
-	$_3 = $tok;
-	$tok = strtok( "." );
-	$_4 = $tok;
-
-	if ( strlen( $_1 ) < 2 ) {
-		$_1h = "0".dechex( $_1 );
-	} else {
-		$_1h = dechex( $_1 );
-	}
-
-	if ( strlen( $_2 ) < 2 ) {
-		$_2h = "0".dechex( $_2 );
-	} else {
-		$_2h = dechex( $_2 );
-	}
-
-	if ( strlen( $_3 ) < 2 ) {
-		$_3h = "0".dechex( $_3 );
-	} else {
-		$_3h = dechex( $_3 );
-	}
-
-	if ( strlen( $_4 ) < 2 ) {
-		$_4h = "0".dechex( $_4 );
-	} else {
-		$_4h = dechex( $_4 );
-	}
-
-	$to = "{$_1h}{$spacer}{$_2h}{$spacer}{$_3h}{$spacer}{$_4h}";
-	return $to;
-}
-
-function hex_to_ip( $from ) {
-	$_1 = substr( $from, 0, 2 );
-	$_2 = substr( $from, 2, 2 );
-	$_3 = substr( $from, 4, 2 );
-	$_4 = substr( $from, 6, 2 );
-
-	$to = hexdec( $_1 ).".".hexdec( $_2 ).".".hexdec( $_3 ).".".hexdec( $_4 );
-	return $to;
-}
-
-function hex_to_long( $from ) {
-	$to = ip_to_long( hex_to_ip( $from ) );
-	return $to;
-}
-
-function long_to_hex( $from ) {
-	$to = ip_to_hex( long_to_ip( $from), "" );
-	return $to;
-}
-
-$addr = isset( $_SERVER["REMOTE_ADDR"] ) ? $_SERVER["REMOTE_ADDR"] : "127.0.0.1";
-
-?>
Index: index.html
===================================================================
--- index.html	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ index.html	(revision 80375943887b81466b712c3282096edfb72c3124)
@@ -1,24 +1,3 @@
 <?php
-
-$xmlrpc_methods = array(
-	"si"	=> array( "get_bind", "get_check_hash", "get_connection_leech", "get_connection_seed", "get_directory", "get_download_rate", "get_handshake_log", "get_hash_interval", "get_hash_max_tries", "get_hash_read_ahead", "get_http_cacert", "get_http_capath", "get_http_proxy", "get_ip", "get_key_layout", "get_max_downloads_div", "get_max_downloads_global", "get_max_file_size", "get_max_memory_usage", "get_max_open_files", "get_max_open_http", "get_max_open_sockets", "get_max_peers", "get_max_peers_seed", "get_max_uploads", "get_max_uploads_div", "get_max_uploads_global", "get_memory_usage", "get_min_peers", "get_min_peers_seed", "get_name", "get_peer_exchange", "get_port_open", "get_port_random", "get_port_range", "get_preload_min_size", "get_preload_required_rate", "get_preload_type", "get_proxy_address", "get_receive_buffer_size", "get_safe_free_diskspace", "get_safe_sync", "get_scgi_dont_route", "get_send_buffer_size", "get_session", "get_session_lock", "get_session_on_completion", "get_split_file_size", "get_split_suffix", "get_stats_not_preloaded", "get_stats_preloaded", "get_timeout_safe_sync", "get_timeout_sync", "get_tracker_dump", "get_tracker_numwant", "get_upload_rate", "get_use_udp_trackers", "system.client_version", "system.get_cwd", "system.hostname", "system.library_version", "system.pid" ),
-	"d"	=> array( "d.get_base_filename=", "d.get_base_path=", "d.get_bytes_done=", "d.get_chunk_size=", "d.get_chunks_hashed=", "d.get_complete=", "d.get_completed_bytes=", "d.get_completed_chunks=", "d.get_connection_current=", "d.get_connection_leech=", "d.get_connection_seed=", "d.get_creation_date=", "d.get_custom1=", "d.get_custom2=", "d.get_custom3=", "d.get_custom4=", "d.get_custom5=", "d.get_directory=", "d.get_down_rate=", "d.get_down_total=", "d.get_free_diskspace=", "d.get_hash=", "d.get_hashing=", "d.get_ignore_commands=", "d.get_left_bytes=", "d.get_local_id=", "d.get_local_id_html=", "d.get_max_file_size=", "d.get_max_peers=", "d.get_max_uploads=", "d.get_message=", "d.get_min_peers=", "d.get_name=", "d.get_peer_exchange=", "d.get_peers_accounted=", "d.get_peers_complete=", "d.get_peers_connected=", "d.get_peers_max=", "d.get_peers_min=", "d.get_peers_not_connected=", "d.get_priority=", "d.get_priority_str=", "d.get_ratio=", "d.get_size_bytes=", "d.get_size_chunks=", "d.get_size_files=", "d.get_skip_rate=", "d.get_skip_total=", "d.get_state=", "d.get_state_changed=", "d.get_tied_to_file=", "d.get_tracker_focus=", "d.get_tracker_numwant=", "d.get_tracker_size=", "d.get_up_rate=", "d.get_up_total=", "d.get_uploads_max=", "d.is_active=", "d.is_hash_checked=", "d.is_hash_checking=", "d.is_multi_file=", "d.is_open=", "d.is_private=" ),
-	"f"	=> array( "f.get_completed_chunks=", "f.get_frozen_path=", "f.get_is_created=", "f.get_is_open=", "f.get_last_touched=", "f.get_match_depth_next=", "f.get_match_depth_prev=", "f.get_offset=", "f.get_path=", "f.get_path_components=", "f.get_path_depth=", "f.get_priority=", "f.get_range_first=", "f.get_range_second=", "f.get_size_bytes=", "f.get_size_chunks=" ),
-	"t"	=> array( "t.get_group=", "t.get_id=", "t.get_min_interval=", "t.get_normal_interval=", "t.get_scrape_complete=", "t.get_scrape_downloaded=", "t.get_scrape_incomplete=", "t.get_scrape_time_last=", "t.get_type=", "t.get_url=", "t.is_enabled=", "t.is_open=" )
-);
-
-function make_abs_path( &$rel_path, &$cwd, $home ) {
-	if ( substr( $rel_path, 0, 2 ) == "./" ) {
-		$ret = substr( $rel_path, 2 );
-		$ret = "{$cwd}/{$ret}";
-	} elseif ( substr( $rel_path, 0, 2 ) == "~/" ) {
-		$ret = substr( $rel_path, 2 );
-		$ret = "{$home}/{$ret}";
-	} else {
-		$ret = $rel_path;
-	}
-	$ret = str_replace( "//", "/", $ret );
-	return $ret;
-}
 
 function switch_bytes( $bytes ) {
@@ -40,12 +19,9 @@
 }
 
-function prepare_si_responses( &$responses, &$message, &$home_path ) {
+function prepare_r_responses( &$responses, &$message ) {
 	$bytes_down_arr = switch_bytes( $responses["bytes_down"] );
 	$bytes_up_arr = switch_bytes( $responses["bytes_up"] );
 	$download_rate_arr = switch_bytes( $responses["download_rate"] );
-	$hash_read_ahead_arr = switch_bytes( $responses["hash_read_ahead"] );
 	$max_memory_usage_arr = switch_bytes( $responses["max_memory_usage"] );
-	$preload_min_size_arr = switch_bytes( $responses["preload_min_size"] );
-	$preload_required_rate_arr = switch_bytes( $responses["preload_required_rate"] );
 	$receive_buffer_size_arr = switch_bytes( $responses["receive_buffer_size"] );
 	$send_buffer_size_arr = switch_bytes( $responses["send_buffer_size"] );
@@ -58,54 +34,14 @@
 	$responses["download_rate_value"] = sprintf( "%.1f", $download_rate_arr[0] );
 	$responses["download_rate_suffix"] = $download_rate_arr[1];
-	$responses["hash_read_ahead_value"] = sprintf( "%.1f", $hash_read_ahead_arr[0] );
-	$responses["hash_read_ahead_suffix"] = $hash_read_ahead_arr[1];
 	$responses["max_memory_usage_value"] = sprintf( "%.1f", $max_memory_usage_arr[0] );
 	$responses["max_memory_usage_suffix"] = $max_memory_usage_arr[1];
-	$responses["preload_min_size_value"] = sprintf( "%.1f", $preload_min_size_arr[0] );
-	$responses["preload_min_size_suffix"] = $preload_min_size_arr[1];
-	$responses["preload_required_rate_value"] = sprintf( "%.1f", $preload_required_rate_arr[0] );
-	$responses["preload_required_rate_suffix"] = $preload_required_rate_arr[1];
 	$responses["receive_buffer_size_value"] = sprintf( "%.1f", $receive_buffer_size_arr[0] );
 	$responses["receive_buffer_size_suffix"] = $receive_buffer_size_arr[1];
+	$responses["upload_rate_value"] = sprintf( "%.1f", $upload_rate_arr[0] );
+	$responses["upload_rate_suffix"] = $upload_rate_arr[1];
 	$responses["send_buffer_size_value"] = sprintf( "%.1f", $send_buffer_size_arr[0] );
 	$responses["send_buffer_size_suffix"] = $send_buffer_size_arr[1];
-	$responses["upload_rate_value"] = sprintf( "%.1f", $upload_rate_arr[0] );
-	$responses["upload_rate_suffix"] = $upload_rate_arr[1];
-
-	$responses["check_hash_value"] = $responses["check_hash"] == 0 ? $message["no"] : $message["yes"];
-	$responses["handshake_log_value"] = $responses["handshake_log"] == 0 ? $message["no"] : $message["yes"];
-	$responses["safe_sync_value"] = $responses["safe_sync"] == 0 ? $message["no"] : $message["yes"];
-
-	$responses["bind_value"] = $responses["bind"] == "0.0.0.0" ? $message["bind_0000"] : $responses["bind"];
-	$responses["ip_value"] = $responses["ip"] == "0.0.0.0" ? $message["ip_0000"] : $responses["ip"];
-	$responses["max_peers_value"] = $responses["max_peers"] == -1 ? $message["disabled"] : $responses["max_peers"];
-	$responses["max_peers_seed_value"] = $responses["max_peers_seed"] == -1 ? $message["disabled"] : $responses["max_peers_seed"];
-	$responses["max_uploads_value"] = $responses["max_uploads"] == -1 ? $message["disabled"] : $responses["max_uploads"];
-	$responses["min_peers_value"] = $responses["min_peers"] == -1 ? $message["disabled"] : $responses["min_peers"];
-	$responses["min_peers_seed_value"] = $responses["min_peers_seed"] == -1 ? $message["disabled"] : $responses["min_peers_seed"];
-	$responses["port_open_value"] = $responses["port_open"] == -1 ? $message["no"] : $message["yes"];
-	$responses["port_random_value"] = $responses["port_random"] == -1 ? $message["no"] : $message["yes"];
-	$responses["port_range_value"] = $responses["port_range"] == -1 ? $message["disabled"] : $responses["port_range"];
-	$responses["proxy_address_value"] = $responses["proxy_address"] == "0.0.0.0" ? $message["proxy_address_0000"] : $responses["proxy_address"];
-	$responses["tracker_numwant_value"] = $responses["tracker_numwant"] == -1 ? $message["disabled"] : $responses["tracker_numwant"];
-
-	$responses["directory_value"] = make_abs_path( $responses["directory"], $responses["get_cwd"], "{$home_path}{$_SESSION["rtwi_nick"]}" );
-	$responses["session_value"] = make_abs_path( $responses["session"], $responses["get_cwd"], "{$home_path}{$_SESSION["rtwi_nick"]}" );
-
-	if ( $responses["max_file_size"] == -1 ) {
-		$responses["max_file_size_value"] = $message["disabled"];
-	} else {
-		$max_file_size_arr = switch_bytes( $responses["max_file_size"] );
-		$responses["max_file_size_value"] = sprintf( "%.1f", $max_file_size_arr[0] );
-		$responses["max_file_size_suffix"] = $max_file_size_arr[1];
-	}
-
-	if ( $responses["split_file_size"] == -1 ) {
-		$responses["split_file_size_value"] = $message["disabled"];
-	} else {
-		$split_file_size_arr = switch_bytes( $responses["split_file_size"] );
-		$responses["split_file_size_value"] = sprintf( "%.1f", $split_file_size_arr[0] );
-		$responses["split_file_size_suffix"] = $split_file_size_arr[1];
-	}
+
+	$responses["safe_sync_value"] = $responses["safe_sync"] == 0 ? $message["safe_sync_0"] : $message["safe_sync_1"];
 
 	ksort( $responses );
@@ -114,5 +50,5 @@
 }
 
-function prepare_d_responses( &$responses, &$message, &$home_path, &$cwd ) {
+function prepare_d_responses( &$responses, &$message, &$home_path ) {
 	$d_bytes_done_arr = switch_bytes( $responses["d_bytes_done"] );
 	$d_chunk_size_arr = switch_bytes( $responses["d_chunk_size"] );
@@ -156,32 +92,29 @@
 	$responses["d_up_total_suffix"] = $d_up_total_arr[1];
 
-	$responses["d_active_value"] = $responses["d_active"] == 1 ? $message["d_active_1"] : $message["d_active_0"];
 	$responses["d_complete_value"] = $responses["d_complete"] == 1 ? $message["d_complete_1"] : $message["d_complete_0"];
 	$responses["d_connection_current_value"] = $responses["d_connection_current"] == "seed" ? $message["d_connection_current_seed"] : $message["d_connection_current_leech"];
-	$responses["d_creation_date_value"] = date( "Y-m-d H:i:s", $responses["d_creation_date"] );
 	$responses["d_ignore_commands_value"] = $responses["d_ignore_commands"] == 1 ? $message["d_ignore_commands_1"] : $message["d_ignore_commands_0"];
-	$responses["d_hash_checked_value"] = $responses["d_hash_checked"] == 1 ? $message["d_hash_checked_1"] : $message["d_hash_checked_0"];
-	$responses["d_hash_checking_value"] = $responses["d_hash_checking"] == 1 ? $message["d_hash_checking_1"] : $message["d_hash_checking_0"];
-	$responses["d_max_peers_value"] = $responses["d_max_peers"] == -1 ? $message["disabled"] : $responses["d_max_peers"];
-	$responses["d_max_uploads_value"] = $responses["d_max_uploads"] == -1 ? $message["disabled"] : $responses["d_max_uploads"];
-	$responses["d_min_peers_value"] = $responses["d_min_peers"] == -1 ? $message["disabled"] : $responses["d_min_peers"];
-	$responses["d_multi_file_value"] = $responses["d_multi_file"] == 1 ? $message["d_multi_file_multi"] : $message["d_multi_file_single"];
-	$responses["d_open_value"] = $responses["d_open"] == 1 ? $message["d_open_1"] : $message["d_open_0"];
-	$responses["d_peer_exchange_value"] = $responses["d_peer_exchange"] == 0 ? $message["disabled"] : $message["enabled"];
-	$responses["d_peers_max_value"] = $responses["d_peers_max"] == -1 ? $message["disabled"] : $responses["d_peers_max"];
-	$responses["d_peers_min_value"] = $responses["d_peers_min"] == -1 ? $message["disabled"] : $responses["d_peers_min"];
-	$responses["d_private_value"] = $responses["d_private"] == 1 ? $message["yes"] : $message["no"];
+	$responses["d_is_active_value"] = $responses["d_is_active"] == 1 ? $message["d_is_active_1"] : $message["d_is_active_0"];
+	$responses["d_is_hash_checked_value"] = $responses["d_is_hash_checked"] == 1 ? $message["d_is_hash_checked_1"] : $message["d_is_hash_checked_0"];
+	$responses["d_is_multi_file_value"] = $responses["d_is_multi_file"] == 1 ? $message["d_is_multi_file_multi"] : $message["d_is_multi_file_single"];
+	$responses["d_is_open_value"] = $responses["d_is_open"] == 1 ? $message["d_is_open_1"] : $message["d_is_open_0"];
 	$responses["d_state_value"] = $responses["d_state"] == 1 ? $message["d_state_1"] : $message["d_state_0"];
 	$responses["d_state_changed_value"] = date( "Y-m-d H:i:s", $responses["d_state_changed"] );
-	$responses["d_tracker_numwant_value"] = $responses["d_tracker_numwant"] == -1 ? $message["disabled"] : $responses["d_tracker_numwant"];
-	$responses["d_uploads_max_value"] = $responses["d_uploads_max"] == -1 ? $message["disabled"] : $responses["d_uploads_max"];
-
-	$responses["d_base_path_value"] = make_abs_path( $responses["d_base_path"], $cwd, "{$home_path}{$_SESSION["rtwi_nick"]}" );
-	$responses["d_directory_value"] = make_abs_path( $responses["d_directory"], $cwd, "{$home_path}{$_SESSION["rtwi_nick"]}" );
-	$responses["d_tied_to_file_value"] = make_abs_path( $responses["d_tied_to_file"], $cwd, "{$home_path}{$_SESSION["rtwi_nick"]}" );
-
+
+	if ( substr( $responses["d_base_path"], 0, 2 ) == "./" ) {
+		$responses["d_base_path_value"] = substr( $responses["d_base_path"], 2 );
+		$responses["d_base_path_value"] = "{$home_path}{$_SESSION["rtwi_nick"]}/{$responses["d_base_path_value"]}";
+	} else {
+		$responses["d_base_path_value"]= $responses["d_base_path"];
+	}
+	if ( substr( $responses["d_directory"], 0, 2 ) == "./" ) {
+		$responses["d_directory_value"] = substr( $responses["d_directory"], 2 );
+		$responses["d_directory_value"] = "{$home_path}{$_SESSION["rtwi_nick"]}/{$responses["d_directory_value"]}";
+	} else {
+		$responses["d_directory_value"]= $responses["d_directory"];
+	}
 	if ( $responses["d_down_rate"] > 0 ) {
 		$responses["d_estimated_time"] = $responses["d_left_bytes"] / $responses["d_down_rate"];
-		$responses["d_estimated_time_value"] = sprintf( "%dd %02d:%02d", floor( $responses["d_estimated_time"] / 86400 ), floor( $responses["d_estimated_time"] / 3600 ) % 24, floor( $responses["d_estimated_time"] / 60 ) % 60 );
+		$responses["d_estimated_time_value"] = sprintf( "%dd %02d:%02d", floor( $responses["d_estimated_time"] / 86400 ), $responses["d_estimated_time"] / 3600 % 24, $responses["d_estimated_time"] % 60 );
 		$responses["d_percentage"] = $responses["d_completed_bytes"] / $responses["d_size_bytes"];
 		$responses["d_percentage_value"] = floor( $responses["d_completed_bytes"] / $responses["d_size_bytes"] * 100 );
@@ -223,5 +156,5 @@
 }
 
-function prepare_f_responses( &$responses, &$message, &$home_path, &$cwd ) {
+function prepare_f_responses( &$responses, &$message, &$home_path ) {
 	$responses["f_last_touched"] = sprintf( "%.0f", $responses["f_last_touched"] );
 	$responses["f_range_first"] += 1;
@@ -235,6 +168,10 @@
 	$responses["f_last_touched_value"] = date( "Y-m-d H:i:s", substr( $responses["f_last_touched"], 0, -6 ) );
 
-	$responses["f_frozen_path_value"] = make_abs_path( $responses["f_frozen_path"], $cwd, "{$home_path}{$_SESSION["rtwi_nick"]}" );
-
+	if ( substr( $responses["f_frozen_path"], 0, 2 ) == "./" ) {
+		$responses["f_frozen_path_value"] = substr( $responses["f_frozen_path"], 2 );
+		$responses["f_frozen_path_value"] = "{$home_path}{$_SESSION["rtwi_nick"]}/{$responses["f_frozen_path_value"]}";
+	} else {
+		$responses["f_frozen_path_value"]= $responses["f_frozen_path"];
+	}
 	if ( $responses["f_size_chunks"] == 0 ) {
 		$responses["f_percentage"] = 1;
@@ -257,10 +194,8 @@
 
 function prepare_trac_responses( &$responses, &$message ) {
-	$t_scrape_downloaded_arr = switch_bytes( $responses["t_scrape_downloaded"] );
-
 	$responses["t_scrape_time_last"] = sprintf( "%.0f", $responses["t_scrape_time_last"] );
 
 	$responses["t_enabled_value"] = $responses["t_enabled"] == 1 ? $message["t_enabled_1"] : $message["t_enabled_0"];
-	$responses["t_open_value"] = $responses["t_open"] == 1 ? $message["t_open_1"] : $message["t_open_0"];
+	$responses["t_is_open_value"] = $responses["t_is_open"] == 1 ? $message["t_is_open_1"] : $message["t_is_open_0"];
 	$responses["t_min_interval_value"] = sprintf( "%02d:%02d:%02d", floor( $responses["t_min_interval"] / 3600 ), $responses["t_min_interval"] / 60 % 60, $responses["t_min_interval"] % 60 );
 	$responses["t_normal_interval_value"] = sprintf( "%02d:%02d:%02d", floor( $responses["t_normal_interval"] / 3600 ), $responses["t_normal_interval"] / 60 % 60, $responses["t_normal_interval"] % 60 );
@@ -283,5 +218,4 @@
 	// adding viewtypes
 	$vcrnode = $node->appendChild( $xml->createElement( "viewtypes" ) );
-	$vcrnode->setAttribute( "value", $_SESSION["rtwi_view"] );
 	$vcnode = $vcrnode->appendChild( $xml->createElement( "viewtype" ) );
 	$vcnode->setAttribute( "value", "main" );
@@ -315,5 +249,4 @@
 	// adding refresh rates
 	$rrrnode = $node->appendChild( $xml->createElement( "refreshrates" ) );
-	$rrrnode->setAttribute( "value", $_SESSION["rtwi_refresh"] );
 	$rrnode = $rrrnode->appendChild( $xml->createElement( "refreshrate" ) );
 	$rrnode->setAttribute( "value", "0" );
@@ -377,9 +310,9 @@
 		$ret->setAttribute( "filename", $list[0] );
 	}
-
 	return $ret;
 }
 
 function xmlrpc_call( &$xmlrpc_array, &$request ) {
+//print ".";
 	$len = strlen( $request );
 	$headers = "CONTENT_LENGTH\0{$len}\0";
@@ -397,5 +330,4 @@
 		$ret = stream_get_contents( $fp );
 	} else {
-		$_SESSION["rtwi_err"] = "noconn";
 		$ret = $errno;
 	}
@@ -405,4 +337,5 @@
 
 function xmlrpc_multicall( &$xmlrpc_array, &$methodlist, $params = array() ) {
+//print "|";
 	$request = array();
 	foreach ( $methodlist as $methodkey => $methodval ) {
@@ -420,8 +353,4 @@
 			$methodval = substr( $methodval, 5 );
 			$methodval = "{$prefix}{$methodval}";
-		} elseif ( strlen( $methodval ) > 6 && $methodval[6] == "." ) {
-			$prefix = substr( $methodval, 0, 1 );
-			$methodval = substr( $methodval, 7 );
-			$methodval = "{$methodval}";
 		} else {
 			$methodval = substr( $methodval, 4 );
@@ -437,5 +366,4 @@
 	reset( $responses );
 	while ( list( $rkey, $rval ) = each( $responses ) ) {
-		$rval = str_replace( "&", "&amp;", $rval );
 		if ( array_key_exists( "{$rkey}_suffix", $responses ) ) {
 			$node = $dnode->appendChild( $xml->createElement( $rkey, $rval ) );
@@ -458,5 +386,5 @@
 
 error_reporting( E_ALL );
-//error_reporting( E_ALL ^ E_NOTICE );
+//error_reporting( E_ALL && ~E_NOTICE );
 
 session_start();
@@ -471,5 +399,5 @@
 $st = getmicrotime();
 
-if ( isset( $_REQUEST["mod"] ) ) {
+ if ( isset( $_REQUEST["mod"] ) ) {
 	$mod = $_REQUEST["mod"];
 } else {
@@ -527,5 +455,5 @@
 }
 
-if ( isset( $_REQUEST["ajax"] ) && isset( $_REQUEST["ajax"] ) == "true" ) {
+ if ( isset( $_REQUEST["ajax"] ) && isset( $_REQUEST["ajax"] ) == "true" ) {
 	$ajax = true;
 } else {
@@ -601,17 +529,14 @@
 		if ( in_array( "..", split( "/", $directory ) ) || in_array( ".", split( "/", $directory ) ) ) {
 			$_SESSION["rtwi_err"] = "badrtdirectory";
-			header( "location: {$url["index"]}" );
+			header( "location: {$url["index"]}?mod=addtorrent" );
 			exit;
-		} elseif ( substr( $directory, 0, 2 ) == "~/" ) {
+		} elseif ( substr( $directory, 0, 2 ) == "./" ) {
 			$directory = substr( $directory, 2 );
 			$directory = "{$home_path}{$_SESSION["rtwi_nick"]}/{$directory}";
-		} elseif ( substr( $directory, 0, 2 ) == "./" ) {
-			$directory = substr( $directory, 2 );
-			$directory = "{$si_responses["get_cwd"]}/{$directory}";
 		} elseif ( substr( $directory, 0, strlen( "{$home_path}{$_SESSION["rtwi_nick"]}" ) ) == "{$home_path}{$_SESSION["rtwi_nick"]}" ) {
 			$directory = "{$directory}";
 		} else {
 			$_SESSION["rtwi_err"] = "badrtdirectory";
-			header( "location: {$url["index"]}" );
+			header( "location: {$url["index"]}?mod=addtorrent" );
 			exit;
 		}
@@ -626,5 +551,5 @@
 		if ( in_array( "..", split( "/", $path ) ) || in_array( ".", split( "/", $path ) ) ) {
 			$_SESSION["rtwi_err"] = "badatpath";
-			header( "location: {$url["index"]}" );
+			header( "location: {$url["index"]}?mod=addtorrent" );
 			exit;
 		}
@@ -661,36 +586,20 @@
 	}
 	case "torrent" : { // torrent
+		// sha1 hash
+		$request = xmlrpc_encode_request( "download_list", array( $_SESSION["rtwi_view"] ) );
+		$response = xmlrpc_call( $xmlrpc_array, $request );
+		$response = str_replace( "i8", "double", $response );
+		$torrents = xmlrpc_decode( $response );
+
 		// creating torrents node
 		$tnode = $root->appendChild( $xml->createElement( "torrents" ) );
 		addrefresh( $xml, $tnode, $message );
 
-		// retrieving server info
-		$methodlist = $xmlrpc_methods["si"];
-		$si_responses = xmlrpc_multicall( $xmlrpc_array, $methodlist );
-
-		$methodlist = $xmlrpc_methods["d"];
-		$request = xmlrpc_encode_request( "d.multicall", array_merge( array( $_SESSION["rtwi_view"] ), $methodlist ) );
-		$response = xmlrpc_call( $xmlrpc_array, $request );
-		$response = str_replace( "i8", "double", $response );
-		$response = xmlrpc_decode( $response );
-
-		$bytes_down = 0;
-		$bytes_up = 0;
-		$torrent = false;
-		for ( $i = 0; $i < count( $response ); $i++ ) {
-			for ( $r = 0; $r < count( $methodlist ); $r++ ) {
-				$methodval = preg_replace( "/(.)\.(get|is)_(.*)=/", "$1_$3", $methodlist[$r] );
-				$d_responses[$i][$methodval] = $response[$i][$r];
-			}
-			$bytes_down += $d_responses[$i]["d_down_rate"];
-			$bytes_up += $d_responses[$i]["d_up_rate"];
-			if ( $d_responses[$i]["d_hash"] == $hash ) {
-				$torrent = $d_responses[$i];
-			}
-		}
-		unset( $d_responses );
-
-		if ( is_array( $torrent ) ) {
-			prepare_d_responses( $torrent, $message, $home_path, $si_responses["get_cwd"] );
+		if ( in_array( $hash, $torrents ) ) {
+			$methodlist = array( "d.get_base_filename", "d.get_base_path", "d.get_bytes_done", "d.get_chunk_size", "d.get_chunks_hashed", "d.get_complete", "d.get_completed_bytes", "d.get_completed_chunks", "d.get_connection_current", "d.get_connection_leech", "d.get_connection_seed", "d.get_directory", "d.get_down_rate", "d.get_down_total", "d.get_free_diskspace", "d.get_hashing", "d.get_ignore_commands", "d.get_is_active", "d.get_is_hash_checked", "d.get_is_hash_checking", "d.get_is_multi_file", "d.get_is_open", "d.get_left_bytes", "d.get_max_file_size", "d.get_max_peers", "d.get_max_uploads", "d.get_min_peers", "d.get_name", "d.get_peers_accounted", "d.get_peers_complete", "d.get_peers_connected", "d.get_peers_max", "d.get_peers_min", "d.get_peers_not_connected", "d.get_priority", "d.get_priority_str", "d.get_ratio", "d.get_size_bytes", "d.get_size_chunks", "d.get_size_files", "d.get_skip_rate", "d.get_skip_total", "d.get_state", "d.get_state_changed", "d.get_tied_to_file", "d.get_tracker_focus", "d.get_tracker_numwant", "d.get_tracker_size", "d.get_up_rate", "d.get_up_total", "d.get_uploads_max" );
+			$responses = xmlrpc_multicall( $xmlrpc_array, $methodlist, array( $hash ) );
+
+			prepare_d_responses( $responses, $message, $home_path );
+
 			switch ( $page ) {
 				case "peers" : {
@@ -712,25 +621,16 @@
 					$node = $node->appendChild( $xml->createElement( "files_root" ) );
 					$node = $node->appendChild( $xml->createElement( "directory" ) );
-					$node->setAttribute( "dirname", $torrent["d_directory_value"] );
-
-					$methodlist = $xmlrpc_methods["f"];
-					$request = xmlrpc_encode_request( "f.multicall", array_merge( array( $torrent["d_hash"], 0 ), $methodlist ) );
-					$response = xmlrpc_call( $xmlrpc_array, $request );
-					$response = str_replace( "i8", "double", $response );
-					$response = xmlrpc_decode( $response );
-					for ( $i = 0; $i < count( $response ); $i++ ) {
-						for ( $r = 0; $r < count( $methodlist ); $r++ ) {
-							$methodval = preg_replace( "/(.)\.get_(.*)=/", "$1_$2", $methodlist[$r] );
-							$responses[$i][$methodval] = $response[$i][$r];
-						}
-					}
-					for ( $i = 0; $i < $torrent["d_size_files"]; $i++ ) {
-						prepare_f_responses( $responses[$i], $message, $home_path, $si_response["get_cwd"] );
-						$fnode = build_xmltree( $responses[$i]["f_path_components"], $node, $xml );
-
-						//$fnode = $node->appendChild( $xml->createElement( "file" ) );
-						//$fnode->setAttribute( "filename", $responses[$i]["f_path"] );
+					$node->setAttribute( "dirname", $responses["d_directory_value"] );
+
+					$methodlist = array( "f.get_completed_chunks", "f.get_frozen_path", "f.get_is_created", "f.get_is_open", "f.get_last_touched", "f.get_match_depth_next", "f.get_match_depth_prev", "f.get_offset", "f.get_path", "f.get_path_components", "f.get_path_depth", "f.get_priority", "f.get_range_first", "f.get_range_second", "f.get_size_bytes", "f.get_size_chunks" );
+					for ( $i = 0; $i < $responses["d_size_files"]; $i++ ) {
+						$f_responses = xmlrpc_multicall( $xmlrpc_array, $methodlist, array( $hash, $i ) );
+
+						prepare_f_responses( $f_responses, $message, $home_path );
+
+						$fnode = build_xmltree( $f_responses["f_path_components"], $node, $xml );
 						$fnode->setAttribute( "id", $i );
-						xmlrpc_multiappend( $xml, $fnode, $responses[$i] );
+
+						xmlrpc_multiappend( $xml, $fnode, $f_responses );
 					}
 
@@ -742,20 +642,14 @@
 					$node = $node->appendChild( $xml->createElement( "torrent_trackers" ) );
 
-					$methodlist = $xmlrpc_methods["t"];
-					$request = xmlrpc_encode_request( "t.multicall", array_merge( array( $torrent["d_hash"], 0 ), $methodlist ) );
-					$response = xmlrpc_call( $xmlrpc_array, $request );
-					$response = str_replace( "i8", "double", $response );
-					$response = xmlrpc_decode( $response );
-					for ( $i = 0; $i < count( $response ); $i++ ) {
-						for ( $r = 0; $r < count( $methodlist ); $r++ ) {
-							$methodval = preg_replace( "/(.)\.(get|is)_(.*)=/", "$1_$3", $methodlist[$r] );
-							$responses[$i][$methodval] = $response[$i][$r];
-						}
-					}
-					for ( $i = 0; $i < $torrent["d_tracker_size"]; $i++ ) {
-						prepare_trac_responses( $responses[$i], $message, $home_path );
+					$methodlist = array( "t.get_enabled", "t.get_group", "t.get_id", "t.get_is_open", "t.get_min_interval", "t.get_normal_interval", "t.get_scrape_complete", "t.get_scrape_downloaded", "t.get_scrape_incomplete", "t.get_scrape_time_last", "t.get_type", "t.get_url" );
+					for ( $i = 0; $i < $responses["d_tracker_size"]; $i++ ) {
+						$t_responses = xmlrpc_multicall( $xmlrpc_array, $methodlist, array( $hash, $i ) );
+
 						$tracnode = $node->appendChild( $xml->createElement( "tracker" ) );
 						$tracnode->setAttribute( "id", $i );
-						xmlrpc_multiappend( $xml, $tracnode, $responses[$i] );
+
+						prepare_trac_responses( $t_responses, $message );
+
+						xmlrpc_multiappend( $xml, $tracnode, $t_responses );
 					}
 
@@ -775,26 +669,37 @@
 				}
 			}
-			xmlrpc_multiappend( $xml, $node, $torrent );
+
+			$node->appendChild( $xml->createElement( "sha1_hash", $hash ) );
+
+			xmlrpc_multiappend( $xml, $node, $responses );
 		} else {
 			$_SESSION["rtwi_err"] = "nohashfound";
 		}
 
-		$si_responses["bytes_down"] = $bytes_down;
-		$si_responses["bytes_up"] = $bytes_up;
-
-		prepare_si_responses( $si_responses, $message, $home_path );
-
-		$node = $tnode->appendChild( $xml->createElement( "bytes_down", $si_responses["bytes_down"] ) );
-		$node->setAttribute( "suffix", $si_responses["bytes_down_suffix"] );
-		$node->setAttribute( "value", $si_responses["bytes_down_value"] );
-		$node = $tnode->appendChild( $xml->createElement( "bytes_up", $si_responses["bytes_up"] ) );
-		$node->setAttribute( "suffix", $si_responses["bytes_up_suffix"] );
-		$node->setAttribute( "value", $si_responses["bytes_up_value"] );
-		$node = $tnode->appendChild( $xml->createElement( "download_rate", $si_responses["download_rate"] ) );
-		$node->setAttribute( "suffix", $si_responses["download_rate_suffix"] );
-		$node->setAttribute( "value", $si_responses["download_rate_value"] );
-		$node = $tnode->appendChild( $xml->createElement( "upload_rate", $si_responses["upload_rate"] ) );
-		$node->setAttribute( "suffix", $si_responses["upload_rate_suffix"] );
-		$node->setAttribute( "value", $si_responses["upload_rate_value"] );
+		$methodlist = array( "d.get_down_rate=", "d.get_up_rate=" );
+		$request = xmlrpc_encode_request( "call_download", array_merge( array( $_SESSION["rtwi_view"] ), $methodlist ) );
+		$response = xmlrpc_call( $xmlrpc_array, $request );
+		$response = str_replace( "i8", "double", $response );
+		$response = xmlrpc_decode( $response );
+
+		$bytes_down = 0;
+		$bytes_up = 0;
+		for ( $i = 0; $i < count( $torrents ); $i++ ) {
+			for ( $r = 0; $r < count( $methodlist ); $r++ ) {
+				$methodval = preg_replace( "/(.)\.get_(.*)=/", "$1_$2", $methodlist[$r] );
+				$responses[$i][$methodval] = $response[$i][$r];
+			}
+			$bytes_down += $responses[$i]["d_down_rate"];
+			$bytes_up += $responses[$i]["d_up_rate"];
+		}
+
+		$methodlist = array( "get_bind", "get_check_hash", "get_client_version", "get_connection_leech", "get_connection_seed", "get_directory", "get_download_rate", "get_handshake_log", "get_hash_interval", "get_hash_max_tries", "get_hash_read_ahead", "get_http_cacert", "get_http_capath", "get_http_proxy", "get_ip", "get_key_layout", "get_library_version", "get_max_downloads_div", "get_max_downloads_global", "get_max_file_size", "get_max_memory_usage", "get_max_open_files", "get_max_open_http", "get_max_open_sockets", "get_max_peers", "get_max_peers_seed", "get_max_uploads", "get_max_uploads_div", "get_max_uploads_global", "get_min_peers", "get_min_peers_seed", "get_port_open", "get_port_random", "get_port_range", "get_preload_min_size", "get_preload_required_rate", "get_preload_type", "get_proxy_address", "get_receive_buffer_size", "get_safe_sync", "get_scgi_dont_route", "get_send_buffer_size", "get_session", "get_session_lock", "get_session_on_completion", "get_split_file_size", "get_split_suffix", "get_timeout_safe_sync", "get_timeout_sync", "get_tracker_dump", "get_tracker_numwant", "get_umask", "get_upload_rate", "get_use_udp_trackers", "get_working_directory" );
+		$responses = xmlrpc_multicall( $xmlrpc_array, $methodlist );
+		$responses["bytes_down"] = $bytes_down;
+		$responses["bytes_up"] = $bytes_up;
+
+		prepare_r_responses( $responses, $message );
+
+		xmlrpc_multiappend( $xml, $tnode, $responses );
 
 		if ( $ajax === true ) {
@@ -806,10 +711,7 @@
 		break;
 	}
-	case "getfile" : { // download a file
+	case "getfile" : {
 		if ( $id >= 0 ) {
-			// retrieving server info
-			$methodlist = $xmlrpc_methods["si"];
-			$si_responses = xmlrpc_multicall( $xmlrpc_array, $methodlist );
-
+		// sha1 hash
 			$request = xmlrpc_encode_request( "download_list", array( $_SESSION["rtwi_view"] ) );
 			$response = xmlrpc_call( $xmlrpc_array, $request );
@@ -848,5 +750,10 @@
 				$f_size_bytes = xmlrpc_decode( $response );
 
-				$d_directory_value = make_abs_path( $d_directory, $si_responses["get_cwd"], "{$home_path}{$_SESSION["rtwi_nick"]}" );
+				if ( substr( $d_directory, 0, 2 ) == "./" ) {
+					$d_directory_value = substr( $d_directory, 2 );
+					$d_directory_value = "{$home_path}{$_SESSION["rtwi_nick"]}/{$d_directory_value}";
+				} else {
+					$d_directory_value = $d_directory;
+				}
 			} else {
 				$_SESSION["rtwi_err"] = "nohashfound";
@@ -860,56 +767,11 @@
 		break;
 	}
-	case "serverinfo" : { // server info
-		// creating torrents node
-		$tnode = $root->appendChild( $xml->createElement( "torrents" ) );
-		addrefresh( $xml, $tnode, $message );
-
-		// retrieving server info
-		$methodlist = $xmlrpc_methods["si"];
-		$si_responses = xmlrpc_multicall( $xmlrpc_array, $methodlist );
-
-		$methodlist = array( "d.get_down_rate=", "d.get_up_rate=" );
-		$request = xmlrpc_encode_request( "d.multicall", array_merge( array( $_SESSION["rtwi_view"] ), $methodlist ) );
+	default : { // torrents
+		// sha1 hash
+		$request = xmlrpc_encode_request( "download_list", array( $_SESSION["rtwi_view"] ) );
 		$response = xmlrpc_call( $xmlrpc_array, $request );
 		$response = str_replace( "i8", "double", $response );
-		$response = xmlrpc_decode( $response );
-
-		$bytes_down = 0;
-		$bytes_up = 0;
-		for ( $i = 0; $i < count( $response ); $i++ ) {
-			for ( $r = 0; $r < count( $methodlist ); $r++ ) {
-				$methodval = preg_replace( "/(.)\.get_(.*)=/", "$1_$2", $methodlist[$r] );
-				$d_responses[$i][$methodval] = $response[$i][$r];
-			}
-			$bytes_down += $d_responses[$i]["d_down_rate"];
-			$bytes_up += $d_responses[$i]["d_up_rate"];
-		}
-
-		$si_responses["bytes_down"] = $bytes_down;
-		$si_responses["bytes_up"] = $bytes_up;
-
-		prepare_si_responses( $si_responses, $message, $home_path );
-
-		$node = $tnode->appendChild( $xml->createElement( "bytes_down", $si_responses["bytes_down"] ) );
-		$node->setAttribute( "suffix", $si_responses["bytes_down_suffix"] );
-		$node->setAttribute( "value", $si_responses["bytes_down_value"] );
-		$node = $tnode->appendChild( $xml->createElement( "bytes_up", $si_responses["bytes_up"] ) );
-		$node->setAttribute( "suffix", $si_responses["bytes_up_suffix"] );
-		$node->setAttribute( "value", $si_responses["bytes_up_value"] );
-		$node = $tnode->appendChild( $xml->createElement( "download_rate", $si_responses["download_rate"] ) );
-		$node->setAttribute( "suffix", $si_responses["download_rate_suffix"] );
-		$node->setAttribute( "value", $si_responses["download_rate_value"] );
-		$node = $tnode->appendChild( $xml->createElement( "upload_rate", $si_responses["upload_rate"] ) );
-		$node->setAttribute( "suffix", $si_responses["upload_rate_suffix"] );
-		$node->setAttribute( "value", $si_responses["upload_rate_value"] );
-
-		$inode = $tnode->appendChild( $xml->createElement( "server_info" ) );
-		xmlrpc_multiappend( $xml, $inode, $si_responses );
-
-		$layout_file = "layout.main.index.xsl";
-
-		break;
-	}
-	default : { // torrents
+		$torrents = xmlrpc_decode( $response );
+
 		// creating torrents node
 		$tnode = $root->appendChild( $xml->createElement( "torrents" ) );
@@ -917,46 +779,38 @@
 		addrefresh( $xml, $tnode, $message );
 
-		// retrieving server info
-		$methodlist = $xmlrpc_methods["si"];
-		$si_responses = xmlrpc_multicall( $xmlrpc_array, $methodlist );
-
-		$methodlist = $xmlrpc_methods["d"];
-		$request = xmlrpc_encode_request( "d.multicall", array_merge( array( $_SESSION["rtwi_view"] ), $methodlist ) );
-		$response = xmlrpc_call( $xmlrpc_array, $request );
-		$response = str_replace( "i8", "double", $response );
-		$response = xmlrpc_decode( $response );
-
 		$bytes_down = 0;
 		$bytes_up = 0;
-		for ( $i = 0; $i < count( $response ); $i++ ) {
-			for ( $r = 0; $r < count( $methodlist ); $r++ ) {
-				$methodval = preg_replace( "/(.)\.(get|is)_(.*)=/", "$1_$3", $methodlist[$r] );
-				$d_responses[$i][$methodval] = $response[$i][$r];
+		if ( is_array( $torrents ) ) {
+			$methodlist = array( "d.get_base_filename=", "d.get_base_path=", "d.get_bytes_done=", "d.get_chunk_size=", "d.get_chunks_hashed=", "d.get_complete=", "d.get_completed_bytes=", "d.get_completed_chunks=", "d.get_connection_current=", "d.get_connection_leech=", "d.get_connection_seed=", "d.get_directory=", "d.get_down_rate=", "d.get_down_total=", "d.get_free_diskspace=", "d.get_hashing=", "d.get_ignore_commands=", "d.get_is_active=", "d.get_is_hash_checked=", "d.get_is_hash_checking=", "d.get_is_multi_file=", "d.get_is_open=", "d.get_left_bytes=", "d.get_max_file_size=", "d.get_max_peers=", "d.get_max_uploads=", "d.get_min_peers=", "d.get_name=", "d.get_peers_accounted=", "d.get_peers_complete=", "d.get_peers_connected=", "d.get_peers_max=", "d.get_peers_min=", "d.get_peers_not_connected=", "d.get_priority=", "d.get_priority_str=", "d.get_ratio=", "d.get_size_bytes=", "d.get_size_chunks=", "d.get_size_files=", "d.get_skip_rate=", "d.get_skip_total=", "d.get_state=", "d.get_state_changed=", "d.get_tied_to_file=", "d.get_tracker_focus=", "d.get_tracker_numwant=", "d.get_tracker_size=", "d.get_up_rate=", "d.get_up_total=", "d.get_uploads_max=" );
+			$request = xmlrpc_encode_request( "call_download", array_merge( array( $_SESSION["rtwi_view"] ), $methodlist ) );
+			$response = xmlrpc_call( $xmlrpc_array, $request );
+			$response = str_replace( "i8", "double", $response );
+			$response = xmlrpc_decode( $response );
+
+			for ( $i = 0; $i < count( $torrents ); $i++ ) {
+				for ( $r = 0; $r < count( $methodlist ); $r++ ) {
+					$methodval = preg_replace( "/(.)\.get_(.*)=/", "$1_$2", $methodlist[$r] );
+					$responses[$i][$methodval] = $response[$i][$r];
+				}
+				$bytes_down += $responses[$i]["d_down_rate"];
+				$bytes_up += $responses[$i]["d_up_rate"];
+
+				prepare_d_responses( $responses[$i], $message, $home_path );
+
+				$ttnode = $tnode->appendChild( $xml->createElement( "torrent" ) );
+				$ttnode->appendChild( $xml->createElement( "sha1_hash", $torrents[$i] ) );
+
+				xmlrpc_multiappend( $xml, $ttnode, $responses[$i] );
 			}
-			$bytes_down += $d_responses[$i]["d_down_rate"];
-			$bytes_up += $d_responses[$i]["d_up_rate"];
-
-			prepare_d_responses( $d_responses[$i], $message, $home_path, $si_responses["get_cwd"] );
-			$ttnode = $tnode->appendChild( $xml->createElement( "torrent" ) );
-			xmlrpc_multiappend( $xml, $ttnode, $d_responses[$i] );
-		}
-
-		$si_responses["bytes_down"] = $bytes_down;
-		$si_responses["bytes_up"] = $bytes_up;
-
-		prepare_si_responses( $si_responses, $message, $home_path );
-
-		$node = $tnode->appendChild( $xml->createElement( "bytes_down", $si_responses["bytes_down"] ) );
-		$node->setAttribute( "suffix", $si_responses["bytes_down_suffix"] );
-		$node->setAttribute( "value", $si_responses["bytes_down_value"] );
-		$node = $tnode->appendChild( $xml->createElement( "bytes_up", $si_responses["bytes_up"] ) );
-		$node->setAttribute( "suffix", $si_responses["bytes_up_suffix"] );
-		$node->setAttribute( "value", $si_responses["bytes_up_value"] );
-		$node = $tnode->appendChild( $xml->createElement( "download_rate", $si_responses["download_rate"] ) );
-		$node->setAttribute( "suffix", $si_responses["download_rate_suffix"] );
-		$node->setAttribute( "value", $si_responses["download_rate_value"] );
-		$node = $tnode->appendChild( $xml->createElement( "upload_rate", $si_responses["upload_rate"] ) );
-		$node->setAttribute( "suffix", $si_responses["upload_rate_suffix"] );
-		$node->setAttribute( "value", $si_responses["upload_rate_value"] );
+		}
+
+		$methodlist = array( "get_bind", "get_check_hash", "get_client_version", "get_connection_leech", "get_connection_seed", "get_directory", "get_download_rate", "get_handshake_log", "get_hash_interval", "get_hash_max_tries", "get_hash_read_ahead", "get_http_cacert", "get_http_capath", "get_http_proxy", "get_ip", "get_key_layout", "get_library_version", "get_max_downloads_div", "get_max_downloads_global", "get_max_file_size", "get_max_memory_usage", "get_max_open_files", "get_max_open_http", "get_max_open_sockets", "get_max_peers", "get_max_peers_seed", "get_max_uploads", "get_max_uploads_div", "get_max_uploads_global", "get_min_peers", "get_min_peers_seed", "get_port_open", "get_port_random", "get_port_range", "get_preload_min_size", "get_preload_required_rate", "get_preload_type", "get_proxy_address", "get_receive_buffer_size", "get_safe_sync", "get_scgi_dont_route", "get_send_buffer_size", "get_session", "get_session_lock", "get_session_on_completion", "get_split_file_size", "get_split_suffix", "get_timeout_safe_sync", "get_timeout_sync", "get_tracker_dump", "get_tracker_numwant", "get_umask", "get_upload_rate", "get_use_udp_trackers", "get_working_directory" );
+		$responses = xmlrpc_multicall( $xmlrpc_array, $methodlist );
+		$responses["bytes_down"] = $bytes_down;
+		$responses["bytes_up"] = $bytes_up;
+
+		prepare_r_responses( $responses, $message );
+
+		xmlrpc_multiappend( $xml, $tnode, $responses );
 
 		$layout_file = "layout.main.index.xsl";
@@ -972,8 +826,5 @@
 	$_SESSION["rtwi_err"] = "";
 }
-
-if ( $ajax === false && $mod != "getfile" ) {
-	$_SESSION["rtwi_lastpage"] = $_SERVER["REQUEST_URI"];
-}
+$_SESSION["rtwi_lastpage"] = $_SERVER["REQUEST_URI"];
 
 $tt = getmicrotime();
@@ -998,5 +849,4 @@
 	print $text;
 } else {
-	set_time_limit( 0 );
 	$path = "{$d_directory_value}/{$f_path}";
 	$filesize = filesize( $path );
Index: input.php
===================================================================
--- input.php	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ input.php	(revision 80375943887b81466b712c3282096edfb72c3124)
@@ -24,5 +24,5 @@
 
 error_reporting( E_ALL );
-//error_reporting( E_ALL ^ E_NOTICE );
+//error_reporting( E_ALL && ~E_NOTICE );
 
 session_start();
@@ -66,5 +66,5 @@
 switch ( $_REQUEST["mod"] ) {
 	case "login" : { // login
-		if ( isset( $_REQUEST["loginname"] ) && isset( $_REQUEST["loginpass"] ) && $_REQUEST["loginname"] != "" && $_REQUEST["loginpass"] != "" && array_key_exists( $_REQUEST["loginname"], $users ) && $users[$_REQUEST["loginname"]]["pass"] == sha1( $_REQUEST["loginpass"] ) ) {
+		if ( isset( $_REQUEST["loginname"] ) && isset( $_REQUEST["loginpass"] ) && $_REQUEST["loginname"] != "" && $_REQUEST["loginpass"] != "" && $users[$_REQUEST["loginname"]]["pass"] == sha1( $_REQUEST["loginpass"] ) ) {
 			$_SESSION["rtwi_auth"] = 1;
 			$_SESSION["rtwi_nick"] = $_REQUEST["loginname"];
@@ -185,9 +185,6 @@
 		$request = xmlrpc_encode_request( "get_directory", array() );
 		$response = xmlrpc_call( $xmlrpc_array, $request );
+		$response = str_replace( "i8", "double", $response );
 		$directory = xmlrpc_decode( $response );
-		$request = xmlrpc_encode_request( "system.get_cwd", array() );
-		$response = xmlrpc_call( $xmlrpc_array, $request );
-		$cwd = xmlrpc_decode( $response );
-
 		if ( substr( $directory, -1 ) == "/" ) {
 			$directory = substr( $directory, 0, -1 );
@@ -198,7 +195,4 @@
 			exit;
 		} elseif ( substr( $directory, 0, 2 ) == "./" ) {
-			$directory = substr( $directory, 2 );
-			$directory = "{$cwd}/{$directory}";
-		} elseif ( substr( $directory, 0, 2 ) == "~/" ) {
 			$directory = substr( $directory, 2 );
 			$directory = "{$home_path}{$_SESSION["rtwi_nick"]}/{$directory}";
@@ -603,7 +597,4 @@
 		$response = xmlrpc_call( $xmlrpc_array, $request );
 
-		$request = xmlrpc_encode_request( "d.update_priorities ", array( $hash ) );
-		$response = xmlrpc_call( $xmlrpc_array, $request );
-
 		sleep( 1 );
 
Index: themes/default_ajax/inc/style.css
===================================================================
--- themes/default_ajax/inc/style.css	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ themes/default_ajax/inc/style.css	(revision 80375943887b81466b712c3282096edfb72c3124)
@@ -140,4 +140,9 @@
 }
 
+img.icon {
+		width: 1em;
+		height: 1em;
+}
+
 .submit {
 		margin: 0 0 0 .3em;
@@ -175,16 +180,6 @@
 }
 
-.ticon {
-		float: left;
-		width: 1em;
-}
-
-.ticon img {
-		width: .8125em;
-}
-
 .tname {
 		float: left;
-		margin: 0;
 }
 
@@ -250,6 +245,6 @@
 }
 
-.tpriority .submit {
-		font-size: smaller;
+.changepriorityform {
+		float: left;
 }
 
@@ -261,11 +256,4 @@
 		font-size: smaller;
 		text-align: right;
-}
-
-.tmessage {
-		float: left;
-		margin: 0 .5em 0 1.2em;
-		background: #eeeeee;
-		font-size: smaller;
 }
 
@@ -356,5 +344,5 @@
 .fchunks {
 		float: right;
-		width: 6.5em;
+		width: 5.5em;
 		margin: 0 0 0 .5em;
 		text-align: right;
@@ -372,5 +360,5 @@
 .fpriority {
 		float: right;
-		width: 8em;
+		width: 7em;
 		margin: 0 0 0 .5em;
 		text-align: right;
@@ -380,5 +368,5 @@
 .tcontent .fpriority {
 		float: right;
-		width: 6em;
+		width: 5.5em;
 		margin: 0 0 0 .5em;
 		text-align: right;
@@ -423,12 +411,8 @@
 .tenabled {
 		float: left;
-		width: 11.5em;
-		margin: 0 0 0 .5em;
-		font-size: smaller;
-		background: #eeeeee;
-}
-
-.tenabled .submit {
-		font-size: smaller;
+		width: 10.5em;
+		margin: 0 0 0 .5em;
+		font-size: smaller;
+		background: #eeeeee;
 }
 
Index: themes/default_ajax/layout.ajax.index.xsl
===================================================================
--- themes/default_ajax/layout.ajax.index.xsl	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ themes/default_ajax/layout.ajax.index.xsl	(revision 80375943887b81466b712c3282096edfb72c3124)
@@ -46,5 +46,5 @@
    </div>
    <div class="inforight">
-    <xsl:value-of select="d_hash" />
+    <xsl:value-of select="sha1_hash" />
    </div>
    <div class="clr"></div>
@@ -66,5 +66,5 @@
     <xsl:choose>
      <xsl:when test="d_tied_to_file != ''">
-      <xsl:value-of select="d_tied_to_file/@value" />
+      <xsl:value-of select="d_tied_to_file" />
      </xsl:when>
      <xsl:otherwise>
@@ -80,7 +80,7 @@
    </div>
    <div class="inforight">
-    <xsl:value-of select="d_multi_file/@value" />
+    <xsl:value-of select="d_is_multi_file/@value" />
     <xsl:choose>
-     <xsl:when test="d_multi_file != 0">
+     <xsl:when test="d_is_multi_file != 0">
       <xsl:text> </xsl:text>
       <xsl:value-of select="d_size_files" />
@@ -100,7 +100,5 @@
     <xsl:value-of select="d_chunks_hashed" />
     <xsl:text> * </xsl:text>
-    <xsl:value-of select="d_chunk_size/@value" />
-    <xsl:text> </xsl:text>
-    <xsl:value-of select="d_chunk_size/@suffix" />
+    <xsl:value-of select="d_chunk_size" />
    </div>
    <div class="clr"></div>
@@ -124,4 +122,15 @@
    <div class="clr"></div>
   </li>
+  <li class="line">
+   <div class="infoleft">
+    <xsl:text>Max memory usage:</xsl:text>
+   </div>
+   <div class="inforight">
+    <xsl:value-of select="/root/torrents/max_memory_usage/@value" />
+    <xsl:text> </xsl:text>
+    <xsl:value-of select="/root/torrents/max_memory_usage/@suffix" />
+   </div>
+   <div class="clr"></div>
+  </li>
   <li class="line spacer">
    <div class="infoleft">
@@ -153,5 +162,5 @@
    <div class="clr"></div>
   </li>
-  <li class="line spacer">
+  <li class="line">
    <div class="infoleft">
     <xsl:text>Seeders:</xsl:text>
@@ -192,5 +201,5 @@
    <div class="clr"></div>
   </li>
-  <li class="line">
+  <li class="line spacer">
    <div class="infoleft">
     <xsl:text>Skipped:</xsl:text>
@@ -204,4 +213,35 @@
     <xsl:text> </xsl:text>
     <xsl:value-of select="d_skip_total/@suffix" />
+   </div>
+   <div class="clr"></div>
+  </li>
+  <li class="line">
+   <div class="infoleft">
+    <xsl:text>Safe sync:</xsl:text>
+   </div>
+   <div class="inforight">
+    <xsl:value-of select="/root/torrents/safe_sync/@value" />
+   </div>
+   <div class="clr"></div>
+  </li>
+  <li class="line">
+   <div class="infoleft">
+    <xsl:text>Send buffer:</xsl:text>
+   </div>
+   <div class="inforight">
+    <xsl:value-of select="/root/torrents/receive_buffer_size/@value" />
+    <xsl:text> </xsl:text>
+    <xsl:value-of select="/root/torrents/receive_buffer_size/@suffix" />
+   </div>
+   <div class="clr"></div>
+  </li>
+  <li class="line">
+   <div class="infoleft">
+    <xsl:text>Receive buffer:</xsl:text>
+   </div>
+   <div class="inforight">
+    <xsl:value-of select="/root/torrents/receive_buffer_size/@value" />
+    <xsl:text> </xsl:text>
+    <xsl:value-of select="/root/torrents/receive_buffer_size/@suffix" />
    </div>
    <div class="clr"></div>
@@ -241,5 +281,5 @@
 
  <xsl:template match="file">
-  <li onmouseover="this.style.background='#eeeeee';" onmouseout="this.style.background='';">
+  <li>
    <div class="fname">
     <span title="Last touched: {f_last_touched}">
Index: themes/default_ajax/layout.main.index.xsl
===================================================================
--- themes/default_ajax/layout.main.index.xsl	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ themes/default_ajax/layout.main.index.xsl	(revision 80375943887b81466b712c3282096edfb72c3124)
@@ -22,7 +22,7 @@
      </xsl:when>
     </xsl:choose>
-    <meta name="author" content="{/root/labels/author}" />
-    <meta name="description" content="{/root/labels/description}" />
-    <meta name="keywords" content="{/root/labels/keywords}" />
+    <meta name="author" content="{/root/label/author}" />
+    <meta name="description" content="{/root/label/description}" />
+    <meta name="keywords" content="{/root/label/keywords}" />
     <meta name="doc-type" content="web page" />
     <meta name="rating" content="general" />
@@ -31,5 +31,5 @@
     <script type="text/javascript" src="themes/default_ajax/inc/afunc.js"></script>
     <script type="text/javascript" src="themes/default_ajax/inc/hfunc.js"></script>
-    <title><xsl:value-of select="/root/labels/title" /></title>
+    <title><xsl:value-of select="/root/label/title" /></title>
    </head>
    <body onload="toggle( '{/root/mod}_{/root/page}' );">
@@ -64,5 +64,4 @@
         </xsl:choose>
         <li><a href="?mod=addtorrent" title="Add torrent">Add torrent</a></li>
-        <li><a href="?mod=serverinfo" title="Server info">Server info</a></li>
         <li><a href="{/root/iurl}?mod=logout" title="Logout">Logout</a></li>
        </ul>
@@ -128,5 +127,5 @@
       <input type="hidden" name="dlpath" value="{@path}" />
       <ul class="tufupload">
-       <li onmouseover="this.style.background='#eeeeee';" onmouseout="this.style.background='';">
+       <li>
         <div class="tufpath">
          <a href="?mod=addtorrent&amp;path={@ppath}">..</a>
@@ -145,5 +144,5 @@
     </li>
     <li class="formsend">
-     <input class="inputok" type="submit" name="addtorrent" title="Add torrent" value="Add torrent" />
+     <input class="inputok" type="image" src="themes/default_ajax/pics/btn_ok.gif" title="Add torrent" alt="[OK]" value="ok" />
     </li>
    </ul>
@@ -162,5 +161,4 @@
    <xsl:apply-templates select="torrent_files_root" />
    <xsl:apply-templates select="torrent_trackers_root" />
-   <xsl:apply-templates select="server_info" />
    <li class="tline last">
     <div class="tthrottle">
@@ -221,5 +219,5 @@
    <xsl:text>]</xsl:text>
    <noscript>
-    <input class="submit" id="vtsubmit" type="submit" name="vtsubmit" title="OK" value="OK" />
+    <input class="submit" id="vtsubmit" type="image" src="themes/default_ajax/pics/btn_ok.gif" name="vtsubmit" alt="[OK]" value="ok" />
    </noscript>
   </form>
@@ -245,5 +243,5 @@
    <xsl:text>]</xsl:text>
    <noscript>
-    <input class="submit" id="rrsubmit" type="submit" name="rrsubmit" title="OK" value="OK" />
+    <input class="submit" id="rrsubmit" type="image" src="themes/default_ajax/pics/btn_ok.gif" name="rrsubmit" alt="[OK]" value="ok" />
    </noscript>
   </form>
@@ -263,25 +261,20 @@
  <xsl:template match="torrent">
   <li class="tline">
-   <div class="ticon">
-    <xsl:choose>
-     <xsl:when test="d_active != 0">
-      <img class="icon" src="themes/default_ajax/pics/{d_connection_current}ing.png" alt="{d_connection_current}" title="{d_connection_current/@value} since {d_state_changed/@value}" />
+   <div class="tname">
+    <xsl:choose>
+     <xsl:when test="d_is_active != 0">
+      <img class="icon" src="themes/default_ajax/pics/{d_connection_current}.gif" alt="{d_connection_current}" title="{d_connection_current/@value} since {d_state_changed/@value}" />
      </xsl:when>
      <xsl:when test="d_hashing != 0">
-      <img class="icon" src="themes/default_ajax/pics/hashing.png" alt="hashing" title="Hashing since {d_state_changed/@value}" />
-     </xsl:when>
-     <xsl:when test="d_complete != 0">
-      <img class="icon" src="themes/default_ajax/pics/finished.png" alt="finished" title="Finished since {d_state_changed/@value}" />
-     </xsl:when>
-     <xsl:when test="d_open != 0">
-      <img class="icon" src="themes/default_ajax/pics/stopped.png" alt="stopped" title="Stopped since {d_state_changed/@value}" />
+      <img class="icon" src="themes/default_ajax/pics/hashing.gif" alt="hashing" title="Hashing since {d_state_changed/@value}" />
+     </xsl:when>
+     <xsl:when test="d_is_open != 0">
+      <img class="icon" src="themes/default_ajax/pics/stopped.gif" alt="stopped" title="Stopped since {d_state_changed/@value}" />
      </xsl:when>
      <xsl:otherwise>
-      <img class="icon" src="themes/default_ajax/pics/closed.png" alt="closed" title="Closed since {d_state_changed/@value}" />
+      <img class="icon" src="themes/default_ajax/pics/closed.gif" alt="closed" title="Closed since {d_state_changed/@value}" />
      </xsl:otherwise>
     </xsl:choose>
-   </div>
-   <div class="tname">
-    <a href="?mod=torrent&amp;hash={d_hash}" title="Details" onclick="if ( document.getElementById( 'torrent_{d_hash}' ).style.display == '' ) {{ document.getElementById( 'torrent_{d_hash}' ).style.display = 'none' }} else {{ document.getElementById( 'torrent_{d_hash}' ).style.display = ''}} return false;"><xsl:value-of select="d_name" /></a>
+    <a href="?mod=torrent&amp;hash={sha1_hash}" title="Details" onclick="if ( document.getElementById( 'torrent_{sha1_hash}' ).style.display == '' ) {{ document.getElementById( 'torrent_{sha1_hash}' ).style.display = 'none' }} else {{ document.getElementById( 'torrent_{sha1_hash}' ).style.display = ''}} return false;"><xsl:value-of select="d_name" /></a>
    </div>
    <div class="tops">
@@ -291,18 +284,18 @@
      </xsl:when>
      <xsl:otherwise>
-      <a href="{/root/iurl}?mod=torrentcheckhash&amp;hash={d_hash}" title="Check hash">Check hash</a>
+      <a href="{/root/iurl}?mod=torrentcheckhash&amp;hash={sha1_hash}" title="Check hash">Check hash</a>
      </xsl:otherwise>
     </xsl:choose>
     <xsl:choose>
-     <xsl:when test="d_active != 0">
-      <a href="{/root/iurl}?mod=torrentstop&amp;hash={d_hash}" title="Stop">Stop</a>
+     <xsl:when test="d_is_active != 0">
+      <a href="{/root/iurl}?mod=torrentstop&amp;hash={sha1_hash}" title="Stop">Stop</a>
      </xsl:when>
      <xsl:otherwise>
       <xsl:choose>
        <xsl:when test="d_hashing != 0">
-        <a href="{/root/iurl}?mod=torrentstop&amp;hash={d_hash}" title="Stop">Stop</a>
+        <a href="{/root/iurl}?mod=torrentstop&amp;hash={sha1_hash}" title="Stop">Stop</a>
        </xsl:when>
        <xsl:otherwise>
-        <a href="{/root/iurl}?mod=torrentstart&amp;hash={d_hash}" title="Start">Start</a>
+        <a href="{/root/iurl}?mod=torrentstart&amp;hash={sha1_hash}" title="Start">Start</a>
        </xsl:otherwise>
       </xsl:choose>
@@ -310,12 +303,12 @@
     </xsl:choose>
     <xsl:choose>
-     <xsl:when test="d_open = 0">
-      <a href="{/root/iurl}?mod=torrentopen&amp;hash={d_hash}" title="Open">Open</a>
+     <xsl:when test="d_is_open = 0">
+      <a href="{/root/iurl}?mod=torrentopen&amp;hash={sha1_hash}" title="Open">Open</a>
      </xsl:when>
      <xsl:otherwise>
-      <a href="{/root/iurl}?mod=torrentclose&amp;hash={d_hash}" title="Close">Close</a>
+      <a href="{/root/iurl}?mod=torrentclose&amp;hash={sha1_hash}" title="Close">Close</a>
      </xsl:otherwise>
     </xsl:choose>
-    <a href="{/root/iurl}?mod=torrenterase&amp;hash={d_hash}" title="Erase" onclick="var answer = confirm( 'Are you sure?' ); if ( !answer ) return false;">Erase</a>
+    <a href="{/root/iurl}?mod=torrenterase&amp;hash={sha1_hash}" title="Erase" onclick="var answer = confirm( 'Are you sure?' ); if ( !answer ) return false;">Erase</a>
    </div>
    <div class="clr"></div>
@@ -401,7 +394,7 @@
    </div>
    <div class="tpriority">
-    <form class="changepriorityform" name="changepriorityform_{d_hash}" method="post" action="{/root/iurl}?mod=changepriority&amp;hash={d_hash}">
+    <form class="changepriorityform" name="changepriorityform_{sha1_hash}" method="post" action="{/root/iurl}?mod=changepriority&amp;hash={sha1_hash}">
      <xsl:text>[</xsl:text>
-     <select class="whiteselect" name="priority" title="Select priority" onchange="window.location='{/root/iurl}?mod=changepriority&amp;hash={d_hash}&amp;priority='+this.value;">
+     <select class="whiteselect" name="priority" title="Select priority" onchange="window.location='{/root/iurl}?mod=changepriority&amp;hash={sha1_hash}&amp;priority='+this.value;">
       <xsl:choose>
        <xsl:when test="d_priority = 0">
@@ -433,19 +426,15 @@
      <xsl:text>]</xsl:text>
      <noscript>
-      <input class="submit" type="submit" name="submit" value="OK" title="OK" />
+      <input class="submit" type="image" src="themes/default_ajax/pics/btn_ok.gif" name="submit" value="ok" />
      </noscript>
     </form>
    </div>
    <div class="clr"></div>
-   <div class="tmessage">
-    <span>Message: <xsl:value-of select="d_message" /></span>
-   </div>
-   <div class="clr"></div>
-   <div class="tcontainer" id="torrent_{d_hash}" style="display: none;">
-    <a class="info" href="?mod=torrent&amp;hash={d_hash}&amp;page=info" title="Info" onclick="loadcontent( '{d_hash}', 'info' ); return false;">Info</a>
-    <a class="files" href="?mod=torrent&amp;hash={d_hash}&amp;page=files" title="File list" onclick="loadcontent( '{d_hash}', 'files' ); return false;">File list</a>
-    <a class="trackers" href="?mod=torrent&amp;hash={d_hash}&amp;page=trackers" title="Tracker list" onclick="loadcontent( '{d_hash}', 'trackers' ); return false;">Tracker list</a>
+   <div class="tcontainer" id="torrent_{sha1_hash}" style="display: none;">
+    <a class="info" href="?mod=torrent&amp;hash={sha1_hash}&amp;page=info" title="Info" onclick="loadcontent( '{sha1_hash}', 'info' ); return false;">Info</a>
+    <a class="files" href="?mod=torrent&amp;hash={sha1_hash}&amp;page=files" title="File list" onclick="loadcontent( '{sha1_hash}', 'files' ); return false;">File list</a>
+    <a class="trackers" href="?mod=torrent&amp;hash={sha1_hash}&amp;page=trackers" title="Tracker list" onclick="loadcontent( '{sha1_hash}', 'trackers' ); return false;">Tracker list</a>
     <div class="clr"></div>
-    <div class="tcontent" id="torrent_{d_hash}_content"></div>
+    <div class="tcontent" id="torrent_{sha1_hash}_content"></div>
    </div>
    <div class="clr"></div>
@@ -458,37 +447,19 @@
 
  <xsl:template match="torrent_info">
+  <li class="line">
+   <div class="infoleft">
+    <xsl:text>Name:</xsl:text>
+   </div>
+   <div class="inforight">
+    <xsl:value-of select="d_name" />
+   </div>
+   <div class="clr"></div>
+  </li>
   <li class="line spacer">
    <div class="infoleft">
-    <xsl:text>Name:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="d_name" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
     <xsl:text>Info hash:</xsl:text>
    </div>
    <div class="inforight">
-    <xsl:value-of select="d_hash" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Local ID:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="d_local_id" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line spacer">
-   <div class="infoleft">
-    <xsl:text>Local ID (html):</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="d_local_id_html" />
+    <xsl:value-of select="sha1_hash" />
    </div>
    <div class="clr"></div>
@@ -510,5 +481,5 @@
     <xsl:choose>
      <xsl:when test="d_tied_to_file != ''">
-      <xsl:value-of select="d_tied_to_file/@value" />
+      <xsl:value-of select="d_tied_to_file" />
      </xsl:when>
      <xsl:otherwise>
@@ -519,12 +490,12 @@
    <div class="clr"></div>
   </li>
-  <li class="line">
+  <li class="line spacer">
    <div class="infoleft">
     <xsl:text>File stats:</xsl:text>
    </div>
    <div class="inforight">
-    <xsl:value-of select="d_multi_file/@value" />
-    <xsl:choose>
-     <xsl:when test="d_multi_file != 0">
+    <xsl:value-of select="d_is_multi_file/@value" />
+    <xsl:choose>
+     <xsl:when test="d_is_multi_file != 0">
       <xsl:text> </xsl:text>
       <xsl:value-of select="d_size_files" />
@@ -532,13 +503,4 @@
      </xsl:when>
     </xsl:choose>
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line spacer">
-   <div class="infoleft">
-    <xsl:text>Private:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="d_private/@value" />
    </div>
    <div class="clr"></div>
@@ -553,7 +515,5 @@
     <xsl:value-of select="d_chunks_hashed" />
     <xsl:text> * </xsl:text>
-    <xsl:value-of select="d_chunk_size/@value" />
-    <xsl:text> </xsl:text>
-    <xsl:value-of select="d_chunk_size/@suffix" />
+    <xsl:value-of select="d_chunk_size" />
    </div>
    <div class="clr"></div>
@@ -577,4 +537,15 @@
    <div class="clr"></div>
   </li>
+  <li class="line">
+   <div class="infoleft">
+    <xsl:text>Max memory usage:</xsl:text>
+   </div>
+   <div class="inforight">
+    <xsl:value-of select="/root/torrents/max_memory_usage/@value" />
+    <xsl:text> </xsl:text>
+    <xsl:value-of select="/root/torrents/max_memory_usage/@suffix" />
+   </div>
+   <div class="clr"></div>
+  </li>
   <li class="line spacer">
    <div class="infoleft">
@@ -599,13 +570,4 @@
   <li class="line">
    <div class="infoleft">
-    <xsl:text>Trackers:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="d_tracker_size" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
     <xsl:text>Leechers:</xsl:text>
    </div>
@@ -615,5 +577,5 @@
    <div class="clr"></div>
   </li>
-  <li class="line spacer">
+  <li class="line">
    <div class="infoleft">
     <xsl:text>Seeders:</xsl:text>
@@ -654,5 +616,5 @@
    <div class="clr"></div>
   </li>
-  <li class="line">
+  <li class="line spacer">
    <div class="infoleft">
     <xsl:text>Skipped:</xsl:text>
@@ -669,4 +631,35 @@
    <div class="clr"></div>
   </li>
+  <li class="line">
+   <div class="infoleft">
+    <xsl:text>Safe sync:</xsl:text>
+   </div>
+   <div class="inforight">
+    <xsl:value-of select="/root/torrents/safe_sync/@value" />
+   </div>
+   <div class="clr"></div>
+  </li>
+  <li class="line">
+   <div class="infoleft">
+    <xsl:text>Send buffer:</xsl:text>
+   </div>
+   <div class="inforight">
+    <xsl:value-of select="/root/torrents/receive_buffer_size/@value" />
+    <xsl:text> </xsl:text>
+    <xsl:value-of select="/root/torrents/receive_buffer_size/@suffix" />
+   </div>
+   <div class="clr"></div>
+  </li>
+  <li class="line">
+   <div class="infoleft">
+    <xsl:text>Receive buffer:</xsl:text>
+   </div>
+   <div class="inforight">
+    <xsl:value-of select="/root/torrents/receive_buffer_size/@value" />
+    <xsl:text> </xsl:text>
+    <xsl:value-of select="/root/torrents/receive_buffer_size/@suffix" />
+   </div>
+   <div class="clr"></div>
+  </li>
  </xsl:template>
 
@@ -685,184 +678,4 @@
  <xsl:template match="torrent_trackers">
   <xsl:apply-templates select="tracker" />
- </xsl:template>
-
- <xsl:template match="server_info">
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Client version:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="client_version" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line spacer">
-   <div class="infoleft">
-    <xsl:text>Library version:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="library_version" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Working directory:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="get_cwd" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Download directory:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="directory/@value" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line spacer">
-   <div class="infoleft">
-    <xsl:text>Session directory:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="session/@value" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Hostname:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="hostname" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Listening IP address:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="ip/@value" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>IP address reported to the tracker:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="bind/@value" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Port opened:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="port_open/@value" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Random port:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="port_random/@value" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line spacer">
-   <div class="infoleft">
-    <xsl:text>Port range:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="port_range/@value" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Maximum number of uploads:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="max_uploads/@value" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Minimum number of peers:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="min_peers/@value" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Maximum number of peers:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="max_peers/@value" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line spacer">
-   <div class="infoleft">
-    <xsl:text>Max memory usage:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="max_memory_usage/@value" />
-    <xsl:text> </xsl:text>
-    <xsl:value-of select="max_memory_usage/@suffix" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Check hash:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="check_hash/@value" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Safe sync:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="safe_sync/@value" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Send buffer:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="receive_buffer_size/@value" />
-    <xsl:text> </xsl:text>
-    <xsl:value-of select="receive_buffer_size/@suffix" />
-   </div>
-   <div class="clr"></div>
-  </li>
-  <li class="line">
-   <div class="infoleft">
-    <xsl:text>Receive buffer:</xsl:text>
-   </div>
-   <div class="inforight">
-    <xsl:value-of select="receive_buffer_size/@value" />
-    <xsl:text> </xsl:text>
-    <xsl:value-of select="receive_buffer_size/@suffix" />
-   </div>
-   <div class="clr"></div>
-  </li>
  </xsl:template>
 
@@ -883,5 +696,5 @@
 
  <xsl:template match="file">
-  <li onmouseover="this.style.background='#eeeeee';" onmouseout="this.style.background='';">
+  <li>
    <div class="fname">
     <span title="Last touched: {f_last_touched}">
@@ -920,5 +733,5 @@
      <xsl:text>]</xsl:text>
      <noscript>
-      <input class="submit" type="submit" name="OK" value="OK" title="OK" />
+      <input class="submit" type="image" src="themes/default_ajax/pics/btn_ok.gif" name="submit" value="ok" />
      </noscript>
     </form>
@@ -957,5 +770,5 @@
 
  <xsl:template match="dlpath">
-  <li onmouseover="this.style.background='#eeeeee';" onmouseout="this.style.background='';">
+  <li>
    <div class="tufpath">
     <a href="?mod=addtorrent&amp;path={@path}">
@@ -1001,7 +814,7 @@
      </div>
      <div class="tenabled">
-      <form class="changetrackerenabledform" name="changetrackerenabledform_{@id}" method="post" action="{/root/iurl}?mod=changetrackerenabled&amp;hash={/root/hash}&amp;id={@id}">
+      <form class="changetrackerenabledform" name="changetrackerenabledfor_{@id}" method="post" action="{/root/iurl}?mod=changetrackerenabled&amp;hash={/root/hash}&amp;id={@id}">
        <xsl:text>Enabled: </xsl:text>
-       <select class="whiteselect" name="trackerenabled" title="Select if tracker is enabled" onchange="window.location='{/root/iurl}?mod=changetrackerenabled&amp;hash={/root/hash}&amp;id={@id}&amp;trackerenabled='+this.value;">
+       <select class="whiteselect" name="rackerenabled" title="Select if tracker is enabled" onchange="window.location='{/root/iurl}?mod=changetrackerenabled&amp;hash={/root/hash}&amp;id={@id}&amp;trackerenabled='+this.value;">
         <xsl:choose>
          <xsl:when test="t_enabled = 0">
@@ -1016,5 +829,5 @@
        </select>
        <noscript>
-        <input class="submit" type="submit" name="submit" value="OK" title="OK" />
+        <input class="submit" type="image" src="themes/default_ajax/pics/btn_ok.gif" name="submit" value="ok" />
        </noscript>
       </form>
Index: themes/default_ajax/layout.main.login.xsl
===================================================================
--- themes/default_ajax/layout.main.login.xsl	(revision 380452a7942946488b1e86ccac2a9e0a5bd11493)
+++ themes/default_ajax/layout.main.login.xsl	(revision 80375943887b81466b712c3282096edfb72c3124)
@@ -46,5 +46,5 @@
        </li>
        <li class="formsend">
-        <input class="inputok" type="submit" title="Login" name="Login" value="Login" />
+        <input class="inputok" type="image" src="themes/default_ajax/pics/btn_ok.gif" title="Login" alt="[OK]" value="ok" />
        </li>
       </ul>
Index: themes/default_ajax/layout.main.pics.xsl
===================================================================
--- themes/default_ajax/layout.main.pics.xsl	(revision 80375943887b81466b712c3282096edfb72c3124)
+++ themes/default_ajax/layout.main.pics.xsl	(revision 80375943887b81466b712c3282096edfb72c3124)
@@ -0,0 +1,52 @@
+﻿<xsl:stylesheet version="1.1"
+                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                lang="hu">
+ <xsl:output method="xml"
+             indent="no"
+             encoding="utf-8"
+             doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
+             doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" />
+
+ <xsl:template match="root">
+  <html lang="hu">
+   <head>
+    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
+    <meta http-equiv="content-language" content="hu" />
+    <meta http-equiv="cache-control" content="no-store, no-cache, must-revalidate, post-check=0, pre-check=0" />
+    <meta http-equiv="pragma" content="no-cache" />
+    <meta http-equiv="expires" content="thu, 1 jan 1970 00:00:00 gmt" />
+    <meta http-equiv="imagetoolbar" content="no" />  
+    <meta name="author" content="{/root/author}" />
+    <meta name="description" content="{/root/description}" />
+    <meta name="keywords" content="{/root/keywords}" />
+    <meta name="doc-type" content="web page" />
+    <meta name="rating" content="general" />
+    <meta name="robots" content="all" />
+    <link rel="stylesheet" type="text/css" href="themes/default_ajax/inc/style.css" />
+    <title><xsl:value-of select="/root/title" /></title>
+   </head>
+   <body>
+    <div id="top">
+    </div>
+    <div id="pics" style="width: 600px; margin: auto; text-align: center;">
+     <xsl:apply-templates select="err" />
+     <a href="http://img462.imageshack.us/img462/6941/rtwi_01.png" target="_blank"><img src="http://img462.imageshack.us/img462/6941/rtwi_01.th.png" alt="screenshot" /></a>
+     <a href="http://img462.imageshack.us/img462/5564/rtwi_02.png" target="_blank"><img src="http://img462.imageshack.us/img462/5564/rtwi_02.th.png" alt="screenshot" /></a>
+     <a href="http://img462.imageshack.us/img462/5006/rtwi_03.png" target="_blank"><img src="http://img462.imageshack.us/img462/5006/rtwi_03.th.png" alt="screenshot" /></a>
+     <a href="http://img462.imageshack.us/img462/5406/rtwi_04.png" target="_blank"><img src="http://img462.imageshack.us/img462/5406/rtwi_04.th.png" alt="screenshot" /></a>
+     <a href="http://img462.imageshack.us/img462/6782/rtwi_05.png" target="_blank"><img src="http://img462.imageshack.us/img462/6782/rtwi_05.th.png" alt="screenshot" /></a>
+     <a href="http://img462.imageshack.us/img462/2640/rtwi_06.png" target="_blank"><img src="http://img462.imageshack.us/img462/2640/rtwi_06.th.png" alt="screenshot" /></a>
+     <a href="http://img462.imageshack.us/img462/7933/rtwi_07.png" target="_blank"><img src="http://img462.imageshack.us/img462/7933/rtwi_07.th.png" alt="screenshot" /></a>
+     <a href="http://img462.imageshack.us/img462/331/rtwi_08.png" target="_blank"><img src="http://img462.imageshack.us/img462/331/rtwi_08.th.png" alt="screenshot" /></a>
+     <br />
+     <br />
+     <a href="rtwi-070820.tar.gz" title="Download now">Download</a>
+    </div>
+   </body>
+  </html>
+ </xsl:template>
+
+ <xsl:template match="err">
+  <div id="err"><xsl:value-of select="errmsg" /></div>
+ </xsl:template>
+</xsl:stylesheet>
