diff --git a/src/webim/libs/common.php b/src/webim/libs/common.php
index 81fe1942..aefb7971 100644
--- a/src/webim/libs/common.php
+++ b/src/webim/libs/common.php
@@ -240,4 +240,19 @@ function get_gifimage_size($file) {
 	return array(0,0);
 }
 
+function add_params($servlet, $params) {
+	$infix = '?';
+	if( strstr($servlet,$infix) !== FALSE )
+		$infix = '&';
+	foreach($params as $k => $v) {
+		$servlet .= $infix.$k."=".$v;
+		$infix = '&';
+	}
+	return $servlet;
+}
+
+function div($a,$b) {
+    return ($a-($a % $b)) / $b;
+}
+
 ?>
\ No newline at end of file
diff --git a/src/webim/libs/pagination.php b/src/webim/libs/pagination.php
new file mode 100644
index 00000000..52a6fa0e
--- /dev/null
+++ b/src/webim/libs/pagination.php
@@ -0,0 +1,99 @@
+$title";
+}
+
+function generate_pagination_image($id) {
+	global $webimroot;
+	return "
";
+}
+
+function setup_pagination($items) {
+	global $page;
+
+	if( $items ) {
+		$items_per_page = verifyparam("items", "/^\d{1,3}$/", 2);
+		if( $items_per_page < 2 )
+			$items_per_page = 2;
+	
+		$total_pages = div(count($items) + $items_per_page - 1, $items_per_page);
+		$curr_page = verifyparam("page", "/^\d{1,6}$/", 1);
+	
+		if( $curr_page < 1 )
+			$curr_page = 1;
+		if( $curr_page > $total_pages )
+			$curr_page = $total_pages;
+	
+		$start_index = ($curr_page-1)*$items_per_page;
+		$end_index = min($start_index+$items_per_page, count($items));
+	    $page['pagination.items'] = array_slice($items, $start_index, $end_index-$start_index);
+	    $page['pagination'] = 
+	    	array(  "page" => $curr_page, "items" => $items_per_page, "total" => $total_pages, 
+	    			"count" => count($items), "start" => $start_index, "end" => $end_index );
+	} else {
+    	$page['pagination.items'] = false;
+    	$page['pagination'] = true;
+	}
+}
+
+function setup_empty_pagination() {
+	global $page;
+    $page['pagination.items'] = false;
+    $page['pagination'] = false;
+}
+
+function generate_pagination($pagination) {
+	global $pagination_spacing, $links_on_page;
+	$result = getstring2("tag.pagination.info",
+		array($pagination['page'],$pagination['total'],$pagination['start']+1,$pagination['end'],$pagination['count']))."
";
+
+	if( $pagination['total'] > 1 ) {
+		$result.="